ListBox OwnerDraw

ListBox OwnerDraw - Delphi/Pascal - Programmation

Marsh Posté le 01-04-2004 à 09:32:47    

Salut,
 
je cherche un tutorial sur la manière de dessiner soi-même une listbox? Alterance de couleur de fond 1 sur 2 par exemple.
 
 
Je ne trouve pas ou seulement des trucs pour VB.
 
Merci.

Reply

Marsh Posté le 01-04-2004 à 09:32:47   

Reply

Marsh Posté le 14-04-2004 à 18:42:35    

Il faut definir une fonction qui sera appeller chaque item, j'avais une url mais je la retrouve pas  :o  
 
Voila ce que j'utilise pour mettre en gras l'element par défaut d'une liste. Je recupère l'objet associé à l'entrée grace à Items.Objects[Index]
 

Code :
  1. //
  2. // Affiche le profil en gras si profil par défaut
  3. //
  4. procedure TFormProfilSelect.ListBoxProfilDrawItem(Control: TWinControl; Index: Integer;
  5.   Rect: TRect; State: TOwnerDrawState);
  6. begin
  7.     with Control as TListBox do
  8.     begin
  9.         Canvas.FillRect(Rect);
  10.         // Mettre en gras si Profile par défaut
  11.         if PProfilEntry(Items.Objects[Index]).peDefault then
  12.             Canvas.Font.Style := [fsBold]
  13.         else
  14.             Canvas.Font.Style := [];
  15.         Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]);
  16.     end;
  17. end;


Message édité par cpdump le 14-04-2004 à 18:45:10
Reply

Marsh Posté le 17-04-2004 à 10:52:45    

Code :
  1. procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  2.   Rect: TRect; State: TOwnerDrawState);
  3. begin
  4.   with Control as TListBox do
  5.   begin
  6.     if (index mod 2 = 0) then
  7.       Canvas.Brush.Color := clGradientInactiveCaption
  8.     else
  9.       Canvas.Brush.Color := clWindow;
  10.     Canvas.FillRect(Rect);
  11.     Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]);
  12.   end;
  13. end;


 
Avec le

Style

du ListBox à

lbOwnerDrawVariable

.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed