ListBox et ListBox1DrawItem
Bonjour,
me revoila avec mon projet ftp.
J'ai formaté mon listBox à l'aide de cette méthode
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| procedure TForm2.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
CenterText: integer;
begin
with ListBox1.Canvas do
begin
ListBox1.Canvas.FillRect(rect);
CenterText := (rect.Bottom - rect.Top - ListBox1.Canvas.TextHeight(text)) div 2;
ListBox1.Canvas.TextOut(rect.left + ImageList1.Width + 8, rect.Top + CenterText,
ListBox1.Items.Strings[Index]);
// on donne la valeur a aller chercher dans liste d'image
LstImage[LongeurLst - 1] := icone;
//on print l'image dans le canvas
ImageList1.Draw(ListBox1.Canvas, rect.Left + 4, rect.Top + 4, LstImage[Index]);
end;
end;
procedure TForm2.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
var Height: Integer);
begin
//on ajuste la grosseur de l'item pour accueillir l'item
height := ImageList1.Height + 5;
end; |
ce qui me permet plus tard de mettre des icones différents en fonction du type de fichiers rencontrés sur le serveur.
Mon probleme est que lorsque je double clique sur un dossier afin d'atteindre les enfants de ce dossier
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| procedure TForm2.ListBox1DblClick(Sender: TObject);
var i: Integer;
begin
if (ceci est un dossier) then
begin
IdFTP1.ChangeDir(ListBox1.Items[ListBox1.ItemIndex]);
ListBox1.Items.Clear;
ListBox1.Repaint;
ListBox1.Clear;
inc(LongeurLst);
SetLength(LstImage, LongeurLst);
IdFTP1.List(ListBox1.Items);
end;
end; |
La mise en forme du ListBox ne change pas: si j'avais une icone X pour les 3 premiers elements et une icone Y pur les deux suivant, dans le listbox affichant les enfants cela ne change pas.
Une idée ???
André