Bonjour,
me revoila avec mon projet ftp.
J'ai formaté mon listBox à l'aide de cette méthode
ce qui me permet plus tard de mettre des icones différents en fonction du type de fichiers rencontrés sur le serveur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Mon probleme est que lorsque je double clique sur un dossier afin d'atteindre les enfants de ce dossier
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Une idée ???
André
Partager