Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    36

    [Delphi] Tlistview righe selezionate

    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

  2. #2
    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,

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    36
    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

  4. #4
    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;

  5. #5
    Originariamente 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,
    for I := 0 to ListView1.Items.Count - 1 do
    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?

  6. #6
    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.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    36
    Grazie ESSE-EFFE ho provato il codice ed è perfetto

    grazie ancora ragazzi

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    36
    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

  9. #9
    Quando lo selezioni cambia già colore, indipendentemente da come lo selezioni (click o tastiera o altro). Puoi spiegare meglio cosa ti serve esattamente?

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    36
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.