ListView Spalten sperren

Deutschsprachiges X#-Forum – German language forum

Moderator: wriedmann

Post Reply
lagraf
Posts: 450
Joined: Thu Jan 18, 2018 9:03 am
Location: A

ListView Spalten sperren

Post 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
User avatar
SHirsch
Posts: 286
Joined: Tue Jan 30, 2018 8:23 am
Location: Germany

ListView Spalten sperren

Post by SHirsch »

Hallo Franz,

du kann z.B. an DataGridViewTextBoxColumn Frozen auf TRUE setzen und Resizable auf DataGridViewTriState.False

Stefan
lagraf
Posts: 450
Joined: Thu Jan 18, 2018 9:03 am
Location: A

ListView Spalten sperren

Post 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)?
User avatar
SHirsch
Posts: 286
Joined: Tue Jan 30, 2018 8:23 am
Location: Germany

ListView Spalten sperren

Post 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
User avatar
wriedmann
Posts: 3754
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

ListView Spalten sperren

Post 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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
lagraf
Posts: 450
Joined: Thu Jan 18, 2018 9:03 am
Location: A

ListView Spalten sperren

Post by lagraf »

Geht das dann ev. im bBrowser als DataListView Ersatz?
Franz
Karl-Heinz
Posts: 774
Joined: Wed May 17, 2017 8:50 am
Location: Germany

ListView Spalten sperren

Post 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
lagraf
Posts: 450
Joined: Thu Jan 18, 2018 9:03 am
Location: A

ListView Spalten sperren

Post 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
Post Reply