xsharp.eu • ListView Spalten sperren
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