DATALISTVIEW: modifica del Caption e della larghezza standart [risolto]

Forum dedicato ai programmatori di X# in lingua italiana – Italian language forum

Moderator: wriedmann

Post Reply
User avatar
claudiocarletta
Posts: 101
Joined: Sat Sep 05, 2020 8:56 am

DATALISTVIEW: modifica del Caption e della larghezza standart [risolto]

Post by claudiocarletta »

Un saluto a tutti,
ho due problemi con una DATALISTVIEW di VO
[*]
[*] (VERDE) ho la necessità di modificare la larghezza di default di una o più colonne di una DATALISTVIEW, essendo il loro contenuto di un solo carattere, praticamente il sistema lo nasconde completamente. Non voglio che sia l'operatore che debba allargare manualmente le colonne in questione
[*] (ROSSO) vorrei evidenziare il caption delle colonne di una DATALISTVIEW in: Font, Text color e Backgrount color, per differenziali maggiormente dal contenuto delle colonne
Immagine 2020-10-12 092205.jpg
Immagine 2020-10-12 092205.jpg (22.95 KiB) Viewed 403 times
Grazie a tutti
Claudio
User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

DATALISTVIEW: modifica del Caption e della larghezza standart

Post by wriedmann »

Ciao Claudio,

per il primo problema (quello della larghezza dele colonne): su molti dei miei ListView uso il seguente metodo di AutoSize();

Code: Select all

method AutoSize() as void pascal class EnhListView
	local nI			as dword

	self:SuspendUpdate()
	for nI := self:ColumnCount downto 1
		self:ColumnAutoSize( self:GetColumn( nI ):NameSym ) 
	next
	self:RestoreUpdate()

	return                                   
	
method ColumnAutoSize( symColumn as symbol ) as void pascal class EnhListView
	local nIndex		as int
	local nWidth		as int

	nIndex				:= Int( self:__GetColumnIndexFromSymbol( symColumn ) ) - 1
	ListView_SetColumnWidth( self:handle(), int(nIndex), shortint( _cast, LVSCW_AUTOSIZE ) )
	nWidth				:= ListView_GetColumnWidth( self:Handle(), nIndex )
	ListView_SetColumnWidth( self:handle(), int(nIndex), shortint( _cast, LVSCW_AUTOSIZE_USEHEADER ) )
	if nWidth > ListView_GetColumnWidth( self:Handle(), nIndex )
		ListView_SetColumnWidth( self:handle(), nIndex, shortint( _cast, LVSCW_AUTOSIZE ) )
	endif

	return 
Per il secondo problema: è unpò più delicato perchè non previsto dal controllo sottostante - bisogna mettere il controllo in modalità OwnerDraw, e impostare le in modalità manuale i valori.
Magari si trova qualcuno che ha del codice pronto - altrimenti ti devo costruire un esempio.

Saluti

Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
ic2
Posts: 1858
Joined: Sun Feb 28, 2016 11:30 pm
Location: Holland

DATALISTVIEW: modifica del Caption e della larghezza standart

Post by ic2 »

Ciao Claudio,

Posso aggiungere un consiglio alle risposte di Wolfgangs:

Come dice il VO file della guida
Browser dati: crea una visualizzazione elenco dati come controllo autonomo, di sola lettura, più veloce e un'alternativa a un browser dati.

Se hai bisogno di un'alternativa a un browser di dati e hai questo tipo di domande, vale davvero la pena pagare la (piccola) tariffa per acquistare bBrowser. Puoi fare molto di più con esso che con DataListviews e c'è una versione VO e X #.

http://bbrowser.com/english/index.htm

==============================================

May I add an advice to Wolfgangs replies:

As the help file says

Databrowser: Create a data list view as a faster, read-only, standalone control and an alternative to a data browser.

If you need an alternative to a databrowser and have these kind of questions it is really worth the (small) license fee to buy bBrowser. You can do much more with it than with DataListviews and there's a VO and X# version.

Dick
User avatar
claudiocarletta
Posts: 101
Joined: Sat Sep 05, 2020 8:56 am

DATALISTVIEW: modifica del Caption e della larghezza standart

Post by claudiocarletta »

Grazie Dick,
si lo conosco, lo utilizzavo dodici anni fa, e lo apprezzavo moltissimo ma come ho detto precedentemente sto sviluppando qualcosa gratuitamente per la scuola e non voglio fare spese per un unico utilizzo.
Comunque, per il problema accennato, ho sbirciato l'esempio di Wolfgang ho capito cosa dovevo cercare e poi ho risolto in questo modo:
SELF:oDCDLAlunni:GetColumn(#NOMINATIVO):Width := 22
SELF:oDCDLAlunni:GetColumn(#SEZIONE):Width := 2
SELF:oDCDLAlunni:GetColumn(#CLASSE):Width := 2
e mi va bene così.
Grazie a tutti.
User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

DATALISTVIEW: modifica del Caption e della larghezza standart

Post by wriedmann »

Ciao Claudio,
la cosa migliore per gli utenti sarebbe di salvare le larghezze alla chiusura della finestra e di reimpostarle alla riapertura - se lo fai in un file ini che si trova nel profilo dell'utente ogni utente avrà le sue impostazioni.
Saluti
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Post Reply