Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Savedialog Frage (https://www.delphipraxis.net/97088-savedialog-frage.html)

darkblog 4. Aug 2007 13:27


Savedialog Frage
 
Hallo

Hier mein QuellCode :

Delphi-Quellcode:
unit FTP;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdFTP, StdCtrls, WinInet;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    ftp: TIdFTP;
    Edit3: TEdit;
    Button2: TButton;
    Label1: TLabel;
    SaveDialog1: TSaveDialog;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    Button4: TButton;
    Button5: TButton;
    ListBox2: TListBox;
    Button6: TButton;
    Button7: TButton;
    ListBox3: TListBox;
    Button8: TButton;

    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ftpWork(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCount: Integer);
    procedure ftpWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
    procedure ListBox1DblClick(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
     
function IsFile(const Filename : String) : Boolean;
var
  IsFile: Boolean;
begin
  if FileExists(Filename) then
  begin
    Result := true;
  end
  else
  begin
    Result := false;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin

ftp.Username := edit1.text;
ftp.Password := edit2.text;
ftp.Host := edit3.text;

Try
ftp.Connect;
ftp.list (listbox1.items,'',false);
label1.Font.Color := clgreen;
Listbox2.Items.Add('Erfolgreich Verbunden !') ;
Except
Listbox2.Items.Add('Verbindung Fehlerhaft') ;
end;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
label1.Font.Color := clred;
Label1.Caption := 'Status : Nicht verbunden';
ftp.disconnect;
Listbox1.clear;
Listbox2.Items.Add('Disconnected') ;
end;


procedure TForm1.ftpWork(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
Label1.Caption := 'Working!';
end;

procedure TForm1.ftpWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
label1.caption := 'fertig geworkt ^^';
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin

if Listbox1.ItemIndex <> - 1 then
  begin
   if IsFile(ListBox1.Items[ListBox1.ItemIndex]) then // Hier ist es eine Datei
    begin
   if savedialog1.Execute then
FTP.Get(edit3.text, Savedialog1.FileName);
    end
    else
    begin

      ftp.ChangeDir(Listbox1.Items[Listbox1.ItemIndex]); // Verzeichnis wechseln
      ftp.list(listbox1.items,'',false);
     listbox2.items.Add('Ordner wurde gewechselt');

    end;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if opendialog1.execute then
begin
ftp.Put(Opendialog1.filename,extractfilename(opendialog1.filename));
ftp.list (listbox1.items,'',false);
Listbox2.Items.Add('Erfolgreich hochgeladen') ;
end;
end;

procedure TForm1.Button5Click(Sender: TObject);
  var s:string;
begin
s:='Neuer Ordner';
  if inputQuery('Neuer Ordner','Wie soll der Ordner heißen?',s) then
    begin
      ftp.MakeDir(s);
    end;
ftp.list (listbox1.items,'',false);
end;



procedure TForm1.Button4Click(Sender: TObject);
  var i:integer;
      s:string;
begin
  i:=listbox1.ItemIndex; //Selection in i
    if i <> -1 then   // is selected
      begin
        s:=listbox1.Items[i]; //String der Selection in s
       if savedialog1.Execute then
   FTP.Get(edit3.text, Savedialog1.FileName);
                          listbox2.Items.add('Datei wurde gedownloaded');
                           ftp.list (listbox1.items,'',false);
      end
       else
        // Bitte einen Ordner auswählen !!
end;

procedure TForm1.Button6Click(Sender: TObject);
  var i:integer;
      s:string;
begin
  i:=listbox1.ItemIndex; //Selection in i
    if i <> -1 then   // is selected
      begin
        s:=listbox1.Items[i]; //String der Selection in s
        if MessageDLG('Sind sie sicher, dass Sie die Datei loeschen wollen?',mtWarning,[mbYes,mbNo],0)= mrYes then
         FTP.Delete(s);
                          listbox2.Items.add('Datei wurde gelöscht');
                           ftp.list (listbox1.items,'',false);
      end
       else
        // Bitte einen Ordner auswählen !!
end;


procedure TForm1.Button7Click(Sender: TObject);
  var i:integer;
      s:string;
begin
  i:=listbox1.ItemIndex; //Selection in i
    if i <> -1 then   // is selected
      begin
        s:=listbox1.Items[i]; //String der Selection in s
        if MessageDLG('Sind sie sicher, dass Sie den Ordner loeschen wollen?',mtWarning,[mbYes,mbNo],0)= mrYes then
         FTP.RemoveDir(s);
                           ftp.list (listbox1.items,'',false);
                           listbox2.items.Add('Ordner wurde gelöscht !')
      end
       else
        // Bitte einen Ordner auswählen !!
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
if OpenDialog1.Execute then
  ListBox3.Items.Add(ExtractFileName(OpenDialog1.FileName));
end;

end.
So weit so gut :)

Wie kann ich es aber machen das der Filename von der listbox1 automatisch in den Savedialog1. als Filename kommT?

Luckie 4. Aug 2007 13:32

Re: Savedialog Frage
 
Poste doch beim nächsten mal nur den relevanten Code.

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
begin
if OpenDialog1.Execute then
  OpenDialog1.Filename := ListBox3.Items.Add(ExtractFileName(OpenDialog1.FileName));
  ListBox3.Items.Add(ExtractFileName(OpenDialog1.FileName));
end;

DeddyH 4. Aug 2007 13:38

Re: Savedialog Frage
 
Zitat:

Zitat von Luckie
Delphi-Quellcode:
OpenDialog1.Filename := ListBox3.Items.Add(ExtractFileName(OpenDialog1.FileName));

:wiejetzt:

Bastler 4. Aug 2007 13:44

Re: Savedialog Frage
 
Den Code von Luckie hätte ich die genauso geschrieben und gepostet, wo is denn jetz dein Verständnisproblem?

Das einzige was mir grade so auffällt ist, das du Fragt wie du den Filenam aus ListBox1 in den Savedlg bekommst und Luckie ihn dir für ListBox3 gepostet hat, aber diese änderung kannst du ja selber vornehmen...

Luckie 4. Aug 2007 13:51

Re: Savedialog Frage
 
Das Add ist natürlich falsch. Es muss richtigerweise heissen:
Delphi-Quellcode:
OpenDialog1.Filename := ExtractFilename(ListBox3.Items[0]);
Aber letztendlich ist das Prinzip eigentlich deutlich geworden, dass man die Eigenschaft Filename des OpenDialoges eben auch vorbelegen kann.

Bastler 4. Aug 2007 14:22

Re: Savedialog Frage
 
Nagut, eins ist doppelt, das ist richtig, aber ob man :

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
begin
if OpenDialog1.Execute then
  OpenDialog1.Filename := ListBox3.Items.Add(ExtractFileName(OpenDialog1.FileName));
end;
oder

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
begin
if OpenDialog1.Execute then
  OpenDialog1.Filename := ExtractFileName(OpenDialog1.FileName);
  ListBox3.Items.Add(ExtractFileName(OpenDialog1.FileName));
end;
schreibt ist doch eigentlich egal, da das selbe passiert...

Christian Seehase 4. Aug 2007 14:26

Re: Savedialog Frage
 
Moin Bastler,

da ListBox.Items.Add aber den Index des hinzugefügten Strings zurückliefert, und nicht den String, ist das keineswegs egal ;-)

DeddyH 4. Aug 2007 14:27

Re: Savedialog Frage
 
Gell? :zwinker:

jfheins 4. Aug 2007 15:19

Re: Savedialog Frage
 
Zitat:

Zitat von Bastler
Nagut, eins ist doppelt, das ist richtig, aber ob man :

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
begin
if OpenDialog1.Execute then
  OpenDialog1.Filename := ListBox3.Items.Add(ExtractFileName(OpenDialog1.FileName));
end;
oder

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
begin
if OpenDialog1.Execute then
  OpenDialog1.Filename := ExtractFileName(OpenDialog1.FileName);
  ListBox3.Items.Add(ExtractFileName(OpenDialog1.FileName));
end;
schreibt ist doch eigentlich egal, da das selbe passiert...

Bin ich jetzt dumm, oder interessiert sich keiner für den Fall das .Execute() false zurückliefert (= Abbruch) :gruebel:
In diesem Fall sind die beiden nicht identisch, da bei der unteren Variante das .Add immer ausgeführt wird ...
Desweitern erschließt sich der Sinn hinter
Delphi-Quellcode:
OpenDialog1.Filename := ExtractFileName(OpenDialog1.FileName);
nicht so richtig ...

:wiejetzt:

darkblog 4. Aug 2007 17:23

Re: Savedialog Frage
 
Meine etwas ganz anderes :lol: :oops:

http://files.fastpic.de/Unbenannt_4502.JPG

Wenn mann auf einem Item in der Listbox1 klickt und dann Button4 klickt soll bei dem markiertem Bereich das stehen was in der listbox1 stand ist das überhaupt möglich oO

Apollonius 4. Aug 2007 17:45

Re: Savedialog Frage
 
Im Prinzip haben alle Vorgänger einen Code nahe der Lösung gepostet:
Delphi-Quellcode:
savedialog1.filename:=listbox1.Items[0];//hier das, was in der ersten Zeile steht, sonst eben ein anderes Item.
Also, ein bisschen extrapolieren täte dir gut :warn:

Luckie 4. Aug 2007 18:01

Re: Savedialog Frage
 
Zitat:

Zitat von Apollonius
Im Prinzip haben alle Vorgänger einen Code nahe der Lösung gepostet:
Delphi-Quellcode:
savedialog1.filename:=listbox1.Items[0];//hier das, was in der ersten Zeile steht, sonst eben ein anderes Item.

Genau das habe ich doch in meinem korrigiertem Code gepostet. :?

Apollonius 4. Aug 2007 18:08

Re: Savedialog Frage
 
Tschuldingung. [Haarspalterei] Auch wenns bei dir ein Opendialog war, obwohl man doch deutlich sieht, dass es ein savedialog sein soll. [/Haarspalterei]

darkblog 4. Aug 2007 18:20

Re: Savedialog Frage
 
geht alles nicht :/

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
begin
if savedialog1.Execute then
savedialog1.filename:=listbox1.Items[0];
  ListBox1.Items.Add(ExtractFileName(OpenDialog1.FileName));
end;

Apollonius 4. Aug 2007 18:23

Re: Savedialog Frage
 
Den Filename musst du natürlich vor dem Aufruf von execute setzen:
Delphi-Quellcode:
savedialog1.filename:=Listbox1.Items[0];
if savedialog1.execute then
  //Aktion

jfheins 4. Aug 2007 18:25

Re: Savedialog Frage
 
Zitat:

Zitat von darkblog
geht alles nicht :/

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
begin
if savedialog1.Execute then
savedialog1.filename:=listbox1.Items[0];
  ListBox1.Items.Add(ExtractFileName(OpenDialog1.FileName));
end;

Probiers mal so:
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
begin
savedialog1.filename:=listbox1.Items[0];
if savedialog1.Execute then
  ListBox1.Items.Add(ExtractFileName(OpenDialog1.FileName));
end;
Kaum macht man's richtig, schon geht's :stupid:

(Wenn du das Feld vorbelegen möchtest, wäre es sinnvol, dies vor dem Anzeigen mittels .Execute() zu tun ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 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 by Thomas Breitkreuz