Seite 1 von 1

erkennen wenn Breite der Tabellenspalten verändert wird ?

Verfasst: Fr, 20. Jul 2018 5:05
von AUGE_OHR
hi,

mit

Code: Alles auswählen

oColumn:heading:lbClick := Codeblock
kann ich auf den Klick auf einen Column Header reagieren.

Frage : wenn ich nun die Breite der Column verändere, indem ich zwischen den Headern klicke, wie "merkt" das meine App :?:

Idee gesucht für XbpBrowse() sowie (native) Listview()

Hintergrund : ich möchte die selbe Breite in weiteren Fenstern habe und die synchronisieren

Re: erkennen wenn Breite der Tabellenspalten verändert wird ?

Verfasst: Fr, 20. Jul 2018 6:52
von Tom
Das ist ein Resize-Event, nichts weiter. Du musst also nur den Resize-Slot der Spalte(n) belegen und dort reagieren.

Re: erkennen wenn Breite der Tabellenspalten verändert wird ?

Verfasst: Sa, 21. Jul 2018 4:06
von AUGE_OHR
Tom hat geschrieben: Fr, 20. Jul 2018 6:52 Das ist ein Resize-Event, nichts weiter. Du musst also nur den Resize-Slot der Spalte(n) belegen und dort reagieren.
:idea: JA
ich habe das Demo \SOURCE\samples\basics\GuiBrow\FBROWSE.prg modifiziert

Code: Alles auswählen

   FOR i:=1 TO F_LEN
      oCol := oBrowse:addColumn( DirBlock( aArray, i ), aHeading[i,1], aHeading[i,2] )
      oCol:heading:resize := {|| Msgbox("Header resize") }
   NEXT
... aber bei oDlg:Show() führt er nun für jede Column den Codeblock aus beim Start :(

OK Danke,
ich werde noch ein wenig daran rum-schrauben bis es so passt wie ich es gerne hätte

Re: erkennen wenn Breite der Tabellenspalten verändert wird ?

Verfasst: Sa, 21. Jul 2018 12:04
von Tom
Ja, weil die Spalte vorher die Dimensionen 0,0 hat. Beim Resizen vergleicht man deshalb die aktuellen mit den vorigen Werten. Ich setze bei ähnlichen Gelegenheiten Flag-iVars im Dialogobjekt (abgeleitete Klasse), um Erstaufbau, das Restaurieren von Einstellungen usw. abzufangen. Und man muss natürlich aufpassen, nicht in eine Endlosrekursion zu geraten.