Herzlich willkommen in der Delphi-PRAXiS, Combi.
Fein, dass du etwas Code zu deinem Problem zeigst, aber schade, dass du Namen wie Button1 anstelle ConnectButton als Namen für deine UI-Komponenten verwendest. Da muss man deinen Code sehr lange studieren, bevor man einen Überblick hat.
Deine Funktion IsFile() ist eigentlich nicht besonders hilfreich, denn sie macht genau dasselbe wie FileExists(). Und im event handler ListBox2DblClick() hilft sie dir schon garnicht. Dort prüfst du, ob eine Datei auf deinem Client existiert, wo du doch eigentlich nur unterscheiden willst, ob der angeklickte Namen ein Verzeichnis oder eine Datei ist. Existieren sollte er schon, sonst hätte das
FTP LIST command ihn dir nicht zurückgeliefert. Die Unterscheidung fällt dir leichter, wenn du das Listing mit Details anforderst. Dann hat jedes Item einen ItemType, der dir sagt, ob es sich um eine Datei handelt.
Herunterladen kannst du die Datei schließlich mit IdFTP.Get(). Das funktioniert ähnlich wie Put(), was du ja schon erfolgreich einsetzt.
Freundliche Grüße vom marabu