![]() |
[FTP]Ordner wechsel durch doppel klick auf Eintrag in der LB
Guten Tag liebe Delphi-Praxis User,
erstmal bin ich jetzt schon sehr positiv über dieses Board überrascht, da ich schon ohne die Frage zu stellen antworten gefunden habe. :dp: Nur leider zu meinem jetzigen Problem finde ich nichts :-( Es geht sich um folgendes: Ich will das wenn man einen Doppel Klick auf einen Ordner welcher in der ListBox aufgelistet ist, direkt in diesen wechselt. Des weiteren sollen oben in der Listbox zwei Punkte sein so ungefair: <..> und wenn man dann da drauf klickt, wechselt er im übergeordneten Ordner. Hier mein bisheriger Code:
Delphi-Quellcode:
Vielen Dank im voraus!
unit Remote;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdFTP; type TRemoteUploadTool = class(TForm) Serverdaten: TGroupBox; BtFtpVerbinden: TButton; GroupBox1: TGroupBox; GroupBox2: TGroupBox; BtAuswaehlen: TButton; GroupBox3: TGroupBox; GroupBox4: TGroupBox; BtUploadAbbrechen: TButton; BtUploadStarten: TButton; GroupBox5: TGroupBox; Label1: TLabel; Label2: TLabel; LboxVerzeichniss: TListBox; LboxAuswahl: TListBox; PbarAktuelleDatei: TProgressBar; ProgressBar2: TProgressBar; StaticText2: TStaticText; Label3: TLabel; IdFTP1: TIdFTP; StaticText1: TStaticText; StaticText3: TStaticText; StaticText4: TStaticText; StaticText5: TStaticText; EdUser: TEdit; EdPasswort: TEdit; EdIp: TEdit; EdPort: TEdit; BtTrennen: TButton; StaticText6: TStaticText; EdPfad: TEdit; procedure BtFtpVerbindenClick(Sender: TObject); procedure BtTrennenClick(Sender: TObject); procedure LboxVerzeichnissDblClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var RemoteUploadTool: TRemoteUploadTool; implementation {$R *.dfm} procedure TRemoteUploadTool.BtFtpVerbindenClick(Sender: TObject); var idftp:TIdFtp; Name: String; i:integer; begin BtTrennen.Visible:=True; BtFtpVerbinden.Visible:=false; idftp:=TIdftp.Create(Self); // Mit FTP Verbinden idftp.Username:= edUser.Text; idftp.Password:= EdPasswort.Text; idftp.Port:= StrToInt(EdPort.Text); idftp.Host:= EdIp.Text; try idftp.Connect(); idftp.ChangeDir(EdPfad.Text); except showmessage('Leider ist ein Fehler beim Verbinden zum FTP aufgetreten!'); end; if not idftp.Connected then begin ShowMessage('Es besetht keine Verbindung!'); exit; end; // Ordner und Dateien auflisten idftp.List (LboxVerzeichniss.Items); end; procedure TRemoteUploadTool.BtTrennenClick(Sender: TObject); begin IdFTP1.Quit; LboxVerzeichniss.Clear; BtTrennen.Visible:=false; BtFtpVerbinden.Visible:=true; end; procedure TRemoteUploadTool.LboxVerzeichnissDblClick(Sender: TObject); var vdir:string; begin // IdFTP1.ChangeDir(); end; end. Gruß |
Re: [FTP]Ordner wechsel durch doppel klick auf Eintrag in de
Herzlich willkommen in der Delphi-PRAXiS, learner90.
Zum Indy Projekt gibt es ein paar Demos - darunter auch einen FTP-Client. Beim Doppelklick auf einen Directory-Eintrag wird folgende Funktion (INDY9) aufgerufen:
Delphi-Quellcode:
Getippt und nicht getestet.
procedure TMainForm.ChageDir(DirName: String);
Var LS: TStringList; begin LS := TStringList.Create; try SetFunctionButtons(false); // Hier reagierst du auf '..' if DirName = '..' then IdFTP1.ChangeDirUp else IdFTP1.ChangeDir(DirName); IdFTP1.TransferType := ftASCII; CurrentDirEdit.Text := IdFTP1.RetrieveCurrentDir; DirectoryListBox.Items.Clear; IdFTP1.List(LS); DirectoryListBox.Items.Assign(LS); // Und hier baust du '..' ein: if CurrentDirEdit.Text <> '/' then DirectoryListBox.Items.Insert(0, '..'); if DirectoryListBox.Items.Count > 0 then if AnsiPos('total', DirectoryListBox.Items[0]) > 0 then DirectoryListBox.Items.Delete(0); finally SetFunctionButtons(true); LS.Free; end; end; Freundliche Grüße vom marabu |
Re: [FTP]Ordner wechsel durch doppel klick auf Eintrag in de
Vielen Dank für das herzliche Willkommen!
Und super vielen Dank für den Code =) Aber da klappt so einiges nicht =( Also ich hab mal die Namen so genannt es es bei mir passt aber da kommen folgende Fehler: Zitat:
Delphi-Quellcode:
?
SetFunctionButtons(false);
|
Re: [FTP]Ordner wechsel durch doppel klick auf Eintrag in de
Hi,
der Code stammt aus der Indy9-Demo, nur die zwei kommentierten Stellen habe ich gebaut um dir zu zeigen, wie du den Eintrag für das übergeordnete Verzeichnis einbauen kannst. Du solltest dir vielleicht den ganzen Quelltext anschauen und dann darüber nachdenken, wie du meine Vorgehensweise auf dein Projekt übertragen kannst. Es dürfte ja nicht so schwer sein, da sich verschiedene FTP-Clients doch naturgemäß sehr ähneln. Auf jeden Fall lässt sich Indy9-Code ohne Anpassungen nicht unbedingt mit Indy10 übersetzen. Auch du wirst eine Prozedur haben, mit der du den Doppelklick auf ein Verzeichnis behandelst - Wechsel des Verzeichnisses und Einlesen aller Einträge. Dort würde ich mit den Änderungen ansetzen. Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz