2011-08-15 6 views
9

Ho bisogno di aggiungere solo 2px :) all'altezza di una riga in una vista elenco (una barra di avanzamento disegnata da disegno è troppo stretta ora).Come aumentare l'altezza della riga di listview nello stile del report?

Ci sono due buone risposte Change Listview item height, http://www.delphipages.com/forum/showthread.php?t=49939, ma non ho potuto farlo.

So che è possibile fare con un elenco di immagini, ma io ho già le immagini 16x16 :)

Qualcuno può aiutarmi? Lo apprezzerò.

risposta

13

rispondere al messaggio di notifica CN_MEASUREITEM di controllo, come segue:

type 
    TListView = class(ComCtrls.TListView) 
    private 
    procedure CNMeasureItem(var Message: TWMMeasureItem); message CN_MEASUREITEM; 
    end; 

    TForm1 = class(TForm) 
    ... 

procedure TListView.CNMeasureItem(var Message: TWMMeasureItem); 
begin 
    inherited; 
    Inc(Message.MeasureItemStruct.itemHeight, 2); 
end; 

Nota: Questo messaggio sarà inviato solo se la proprietà OwnerDraw è vero.

+0

Wow! Grazie!!! Ho visto un codice sorgente di TMS 'TAdvListView e questo messaggio 'CNDrawItem (var Message: TWMDrawItem);' è gestito anche (il delphipage di collegamento ha lo stesso codice di TMS). Perché? – maxfax

+0

Dunno TAdvListView. TListView predefinito ha già l'evento OnDrawItem. L'ID – NGLN

+0

non importa molto :) Funziona !!! Sei un buon programmatore e come persona! Grazie! – maxfax

2

Un'alternativa rapida e sporca senza scrivere codice sarebbe aggiungere una TImageList, impostare la sua larghezza su 1 e la sua altezza su qualunque cosa si desideri sia l'altezza delle linee e assegnarla alle SmallImages della listview.

Problemi correlati