AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [FTP]Ordner wechsel durch doppel klick auf Eintrag in der LB
Thema durchsuchen
Ansicht
Themen-Optionen

[FTP]Ordner wechsel durch doppel klick auf Eintrag in der LB

Offene Frage von "learner90"
Ein Thema von learner90 · begonnen am 16. Okt 2007 · letzter Beitrag vom 17. Okt 2007
Antwort Antwort
learner90

Registriert seit: 16. Okt 2007
8 Beiträge
 
Delphi 7 Enterprise
 
#1

[FTP]Ordner wechsel durch doppel klick auf Eintrag in der LB

  Alt 16. Okt 2007, 10:35
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.
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:
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.
Vielen Dank im voraus!

Gruß
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: [FTP]Ordner wechsel durch doppel klick auf Eintrag in de

  Alt 17. Okt 2007, 15:39
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:
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;
Getippt und nicht getestet.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
learner90

Registriert seit: 16. Okt 2007
8 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: [FTP]Ordner wechsel durch doppel klick auf Eintrag in de

  Alt 17. Okt 2007, 16:08
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:
[DCC Fehler] Remote.pas(98): E1030 Ungültige Compileranweisung: 'LS'
[DCC Fehler] Remote.pas(129): E2029 Deklaration erwartet, aber Dateiende gefunden
[DCC Fehler] FtpRemoteUploadTool.dpr(5): F2063 Verwendete Unit 'versuch2\Remote.pas' kann nicht compiliert werden
Und was machst du mit dieser Anweisung:
SetFunctionButtons(false); ?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: [FTP]Ordner wechsel durch doppel klick auf Eintrag in de

  Alt 17. Okt 2007, 19:31
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz