Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ordnerinhalt in Listbox laden; Items als Buttons benutzen (https://www.delphipraxis.net/18138-ordnerinhalt-listbox-laden%3B-items-als-buttons-benutzen.html)

DRPEnc 15. Mär 2004 13:40


Ordnerinhalt in Listbox laden; Items als Buttons benutzen
 
Ok klingt alles ein bisschen komisch...

Was ich nun mal wieder will:

Ich klicke auf einen Knopf und es soll der Inhalt eines bestimmten Ordners in eine Listbox wandern.

Ich hab dafür diese Source gefunden

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s, path: string;
  i  : integer;
  stl : tstringlist;
begin
   path:='c:\Test\*.*'#0;
   s := path;

   ListBox1.Perform(LB_DIR, DDL_READWRITE, LongInt(@s[1]));
   listbox1.ItemIndex:=0;

  stl:=tstringlist.Create;
  try
    for i := 0 to listbox1.items.count - 1 do
    begin
      stl.Add(listbox1.items.strings[listbox1.itemindex]);
      listbox1.ItemIndex:=listbox1.ItemIndex+1;
    end;
    listbox1.Items.CommaText:=stl.commatext;
  finally
    stl.Free;
  end;
end;
Leider passt diese nicht ganz für mich. Der Pfad zu dem Ordner steht bei mir in einer Edit. Zum Beispiel 'c:\Test\*.*' steht in Edit1. Wie kann ich es lösen, dass der Pfad von Edit1 hergenommen wird?

Nun sind alle Dateien in der Liste.
Es sollte nun möglich sein, wenn man auf einen der Items, zum Beispiel Item1 sollte nun als Button funktionieren, welcher eine bestimmte Aktion ausführt. Z.B. ein Message Dialog mit 'Auf Item1 geklickt'.
Wenn ich nun auf Item2 klicke sollte ein Message Dialog mit 'Auf Item2 geklickt' erscheinen.

Das mit den MessageDialogen dient nur als Beispiel. Ich hab was ganz anderes vor, aber somit ist es einfacher.

Zusammenfassung des Problems:

Ordnerinhalt in Listbox einlesen und Items als verschiedene Buttons benutzen.

[edit=sakura] Titel korrigiert. Mfg, sakura[/edit]

Luckie 15. Mär 2004 13:51

Re: Ordnerinhalt in Listbox laden; Items als Buttons benutze
 
Zitat:

Zitat von DRPEnc
Leider passt diese nicht ganz für mich. Der Pfad zu dem Ordner steht bei mir in einer Edit. Zum Beispiel 'c:\Test\*.*' steht in Edit1. Wie kann ich es lösen, dass der Pfad von Edit1 hergenommen wird?

In dem du den Inhalt des Edits an die Variable Path übergibst?

Zitat:

Nun sind alle Dateien in der Liste.
Es sollte nun möglich sein, wenn man auf einen der Items, zum Beispiel Item1 sollte nun als Button funktionieren, welcher eine bestimmte Aktion ausführt. Z.B. ein Message Dialog mit 'Auf Item1 geklickt'.
Wenn ich nun auf Item2 klicke sollte ein Message Dialog mit 'Auf Item2 geklickt' erscheinen.
TListbox kennt das Ereignis OnClick und mit ItemIndex bekommst du den Index des Items auf den geklickt wurde. Die Eigenschaft Items ist vom Typ TStrings, ergo Items[Listbox1.ItemIndex] ist der Inhalt des geklickten Itmes als String.

ims 15. Mär 2004 13:53

Re: Ordnerinhalt in Listbox laden; Items als Buttons benutze
 
hi DRPEnc

und wie die übergabe geht (s. Luckie) kannst du aus meinen Beitrag zu deinem anderen Thema entnehmen :wink:


gruss, dave

DRPEnc 15. Mär 2004 13:56

Re: Ordnerinhalt in Listbox laden; Items als Buttons benutze
 
Problem mit den Buttons gelöst:

Delphi-Quellcode:
procedure TForm1.ListBox3Click(Sender: TObject);
var
path, Filename : string;
begin
Path := Edit6.text+'\';
Filename := Path + Listbox3.Items[Listbox3.ItemIndex];
Listbox3.Items.LoadFromFile(Filename); // öffnen
end;
@ims: Sorry Ich bin ein bisschen zerstreut. Link mir nochmal das andere Thema. THX ... meinst du diesen? Open.Dialog/Initial.Dir

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s, path: string;
  i  : integer;
  stl : tstringlist;
begin
   path:=Edit6.text+'*.*'#0;
   s := path;

   ListBox1.Perform(LB_DIR, DDL_READWRITE, LongInt(@s[1]));
   listbox1.ItemIndex:=0;

  stl:=tstringlist.Create;
  try
    for i := 0 to listbox1.items.count - 1 do
    begin
      stl.Add(listbox1.items.strings[listbox1.itemindex]);
      listbox1.ItemIndex:=listbox1.ItemIndex+1;
    end;
    listbox1.Items.CommaText:=stl.commatext;
  finally
    stl.Free;
  end;
end;
hmm... irgendwas ist falsch

Dieses doofe #0 mag irgendwie nicht mit variablen...

Lol! Habs hinbekommen:

Delphi-Quellcode:
path :=Edit6.text+'\*.DRPTlt'#0;


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:58 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