Ciao ragazzi,
sapete se esiste un modo per poter far si che una riga di una tlistview sembri selezionata (come avvie quando vi si clicca sopra).
Sapete suggerirmi il codice da implementare?
ciao e grazie
Ciao ragazzi,
sapete se esiste un modo per poter far si che una riga di una tlistview sembri selezionata (come avvie quando vi si clicca sopra).
Sapete suggerirmi il codice da implementare?
ciao e grazie
Immagino tu intenda senza selezionare realmente la riga. Se è così, basta gestire l'evento OnCustomDrawItem della TListView. In esso, se l'item va evidenziato, basta impostare i colori di Font e Brush rispettivamente a clHightlightText e clHighlight.
HTH,
grazie per l'idea tuttavia ho ancora un problema con il codice.
Come hai detto tu l'effetto deve essere quello della riga selezionata.
Ho inserito il seguente codice nella proprietà onCustomDrawItem della tListview:
Canvas.Font.Color:=clHighlightText;
Canvas.Brush.Color:= clHighlight;
questo codice rende selezionate tutte le righe della tlistview.
La mia idea era quella di impostare un ciclo for (for i:=0 to listview.items.count-1) e se la mia riga è checked (è una tlistview con l'opzione chekbox settata a true) "selezionarla".
Come posso modificare il codice che ho postato limitando la selezione all'items[i] che soddisfa la condizione checked? Ho visto che uno dei parametri della funzione onCustomDrawItem c'è Item: TListItem; come lo posso sfruttare?
grazie per l'attenzione
Non serve nessun ciclo perchè OnCustomDrawItem viene già richiamata per ogni item che deve essere disegnato. Quindi nel tuo caso basta un semplice controllo sulla proprietà Item.Checked.
if (Item.Checked)
begin
ListViewX.Canvas.Font.Color := clHighlightText;
ListViewX.Canvas.Brush.Color := clHighlight;
end;
for I := 0 to ListView1.Items.Count - 1 doOriginariamente inviato da ESSE-EFFE
Immagino tu intenda senza selezionare realmente la riga. Se è così, basta gestire l'evento OnCustomDrawItem della TListView. In esso, se l'item va evidenziato, basta impostare i colori di Font e Brush rispettivamente a clHightlightText e clHighlight.
HTH,
begin
if ListView1.Items.Item[i].Checked then
TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
end;
end;
e questo il IF che vuoi?
Spero di no, perchè non è così che va utilizzato l'evento OnCustomDrawItem. Basta controllare il parametro Item, senza bisogno di fare nessun ciclo o forzare la chiamata.e questo il IF che vuoi?
Grazie ESSE-EFFE ho provato il codice ed è perfetto
grazie ancora ragazzi
Ciao ragazzi,
il codice che mi avevate segnalato per cambiare il colore di sfondo degli items selezionati di una tlistview era perfetto, solo che ora ho anche l'esigenza di cambiare il colore al semplice click sull'items (ovvero quando lo seleziono) potete aiutarmi?
grazie ancora
Quando lo selezioni cambia già colore, indipendentemente da come lo selezioni (click o tastiera o altro). Puoi spiegare meglio cosa ti serve esattamente?
scusa mi sono spiegata male. Io vorrei intervenire proprio sul colore che assume quando ci clicchi sopra con mouse (o doppio click). Ora come ora quando ci clicco sopra diventa blu scuro io dovrei cambiare quel colore in rosso.