keyser-08
Messages postés9Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention22 novembre 2004
-
21 nov. 2004 à 16:59
keyser-08
Messages postés9Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention22 novembre 2004
-
22 nov. 2004 à 17:17
bonjour tout le monde,
Je me demande comment je peut réduire le code suivant car je fais 2 fois la meme chose, une fois avec un ListView, puis la 2ème fois avec un ShellListView. je pense qu'il y a moyen de faire tout ça en une seule fois mais j'ai pas trouver (je suis encore novice :blush) )
if source = ListMain then
begin
For a:=1 to ListMain.SelCount do
begin
ListDrag:= ListMainTransfer.Items.Add;
ListDrag.Caption:= ListMain.Selected.Caption;
ListDrag.SubItems.Add(ListMain.Selected.SubItems[0]);
ListDrag.SubItems.Add(ListMain.Selected.SubItems[1]);
ListDrag.SubItems.Add(shellListView1.RootFolder.PathName);
ListDrag.SubItems.Add(idFtp1.Host+IdFtp1.RetrieveCurrentDir);
ListDrag.ImageIndex:= ListMain.Selected.ImageIndex;
ListMainIp.Selected.Selected:=false;
end ;
end
else if (source = ShellListView1)and(IdFTP1.Connected) then
begin
for a:=1 to ShellListView1.SelCount do
begin
ListDrag:= ListMainTransfer.Items.Add;
ListDrag.Caption:= shellListView1.Folders[ShellListView1.ItemIndex].DisplayName;
ListDrag.SubItems.Add(ShellListView1.Selected.SubItems[0]);
ListDrag.SubItems.Add(ShellListView1.Selected.SubItems[1]);
ListDrag.SubItems.Add(shellListView1.RootFolder.PathName);
ListDrag.SubItems.Add(idFtp1.Host+IdFtp1.RetrieveCurrentDir);
ShellListView1.Selected.Selected:=false;
end;
end;
cs_neko
Messages postés135Date d'inscriptionjeudi 14 août 2003StatutMembreDernière intervention12 octobre 20061 21 nov. 2004 à 20:45
En supposant que TShellListView herite de TListView ( le contraire m'etonnerais mais vu que le monsieur n'est pas dans l'aide et que j'ai a priori paumé la source je peu pas verrifier ) tu peux transtyper source ce qui donne:
For a:=1 to TListView(Source).SelCount do begin
if source = ListMain then begin
ListDrag.Caption := ListMain.Selected.Caption;
ListDrag.ImageIndex := ListMain.Selected.ImageIndex;
End Else
ListDrag.Caption:= shellListView1.Folders[ShellListView1.ItemIndex].DisplayName;
ListDrag:= ListMainTransfer.Items.Add;
ListDrag.SubItems.Add(TListView(Source).Selected.SubItems[0]);
ListDrag.SubItems.Add(TListView(Source).Selected.SubItems[1]);
ListDrag.SubItems.Add(shellListView1.RootFolder.PathName);
ListDrag.SubItems.Add(idFtp1.Host+IdFtp1.RetrieveCurrentDir);
TListView(Source).Selected.Selected:=false;
end;
end
le code est plus court mais beaucoup plus lent ( la condition est examinée SelCount fois au lieu d'une seule )
Il doit y avoir encore mieu mais ca devrait deja aller, pi ca montre le principe