Page 1 of 1
ListView Spalten sperren
Posted: Mon Feb 28, 2022 7:59 am
by lagraf
Hallo,
kann man bei einem ListView bzw DataListView das Verschieben und Resizen der Spalten sperren ohne dass ich ihn gleich auf Disabled setze?
Franz
ListView Spalten sperren
Posted: Mon Feb 28, 2022 8:46 am
by SHirsch
Hallo Franz,
du kann z.B. an DataGridViewTextBoxColumn Frozen auf TRUE setzen und Resizable auf DataGridViewTriState.False
Stefan
ListView Spalten sperren
Posted: Mon Feb 28, 2022 10:59 am
by lagraf
Sorry, hab vergessen zu erwähnen, dass es sich um VO 2.8 handelt!
Sind die beiden nicht .NET Bestandteile (System.Windows.Forms)?
ListView Spalten sperren
Posted: Mon Feb 28, 2022 12:30 pm
by SHirsch
Hallo Franz,
sorry, bei VO kann ich leider nicht helfen. Da setze ich Classmate ein. Hier geht das nur global. Also keine Spalte oder alle Spalten verschieben oder in Größe ändern.
Stefan
ListView Spalten sperren
Posted: Mon Feb 28, 2022 1:25 pm
by wriedmann
Hallo Franz,
meines Wissens nach geht das nicht.
Das hat aber nichts mit VO oder ClassMate zu tun, sondern mit dem darunterliegenden CommonControl.
Es ist schon möglich, dass man das irgendwie hinbekommt mit etwas Windows API, aber das habe ich noch nie gebraucht und demzufolge auch nicht weiter vertieft.
Die "neuen" VO-GUI-kompatiblen GUI-Klassen in VO sollten das können, denn die sind de facto Windows Forms. Mit denen habe ich aber noch mehr zu machen, über die ersten Gehversuche bin ich da noch nicht rausgekommen.
Und ich weiß nicht, ob die in der Community-Version von X# drin sind.
Wolfgang
ListView Spalten sperren
Posted: Mon Feb 28, 2022 1:35 pm
by lagraf
Geht das dann ev. im bBrowser als DataListView Ersatz?
Franz
ListView Spalten sperren
Posted: Mon Feb 28, 2022 4:53 pm
by Karl-Heinz
Hallo Franz,
Das "verschieben" kann man doch bereits per Painter property "Header Drag&Drop" steuern bzw. per <oLV>:HeaderDragDrop := false. Oder meinst Du da etwas anderes ? Um das "resizen" zu unterbinden müsste man an das Headercontrol der ListView ran. Probier mal das hier:
Code: Select all
DEFINE HDS_NOSIZING := 0x0800
ACCESS HeaderSizing CLASS yourLV
LOCAL hHeader AS PTR
LOCAL lSizing := TRUE AS LOGIC
IF ( hHeader := GetWindow ( SELF:Handle(),GW_CHILD )) != NULL_PTR
IF _AND ( GetWindowLong (hHeader, GWL_STYLE) , HDS_NOSIZING ) == HDS_NOSIZING
lSizing := FALSE
ENDIF
ENDIF
RETURN lSizing
ASSIGN HeaderSizing ( lOn ) CLASS yourLV
LOCAL iStyle AS INT
LOCAL hHeader AS PTR
IF ( hHeader := GetWindow ( SELF:Handle(),GW_CHILD )) != NULL_PTR
iStyle := GetWindowLong (hHeader, GWL_STYLE)
IF lOn
iStyle := _AND(iStyle, _NOT((HDS_NOSIZING)))
ELSE
iStyle := _OR ( iStyle , HDS_NOSIZING)
ENDIF
SetWindowLong (hHeader, GWL_STYLE, iStyle )
ENDIF
RETURN VOID
Gruß
Karl-Heinz
ListView Spalten sperren
Posted: Tue Mar 01, 2022 8:44 am
by lagraf
Hallo Karl-Heinz,
super, das funktioniert! Über das HeaderDragAndDrop im Designer hab ich irgendwie drübergeschaut, ist mir nicht als für diesen Zweck bewußt geworden.
Vielen Dank, Franz