![]() |
Ordner angeben
hi, hab mal ne richtig dumme frage, finde aber leider keine antwort:
ich habe ein edit feld in das man einen ordner eingeben muss. ( z.bsp: c:\spiele\big red race ) daneben möchte ich einen button machen, wo auf klick darauf eine ordnerstruktur aufpoppt, wie im Windows Explorer, wo man dann den ordner auch auswählen kann... wie lautet der befehl dafür ? :freak: |
Re: Ordner angeben
SelectDirectory
|
Re: Ordner angeben
such mal hier nach SelectDirectory
|
Re: Ordner angeben
mhm, ok das hat geklappt, jetzt möchte ich aber den pfad in ein edit feld reinscreiben:
Delphi-Quellcode:
ich muss dazu sagen das der button und das edit2 feld im frame Frame21 sind, warum funzt das nicht? :oops:
procedure TForm1.Frame21SpeedButton2Click(Sender: TObject);
var Dir: String; begin SelectDirectory('Select a directory', '', Dir); ShowMessage(Dir); Edit2.text:=(Dir); end; |
Re: Ordner angeben
Delphi-Quellcode:
so sollte es gehen.
procedure TForm1.Frame21SpeedButton2Click(Sender: TObject);
var Dir: String; begin SelectDirectory('Select a directory', '', Dir); ShowMessage(Dir); Edit2.text:=Dir; end; |
Re: Ordner angeben
Neben SelectDirectory gibt es auch noch die neuere Möglichkeit, die optisch besser aussieht!
Delphi-Quellcode:
mfG
uses
ShellAPI, SHLObj; ////////////////////////////// function OpenFolder(root: Integer; Caption: string): string; var bi: TBrowseInfo; lpBuffer: PChar; pidlPrograms, pidlBrowse: PItemIDList; begin if (not SUCCEEDED(SHGetSpecialFolderLocation(GetActiveWindow, root, pidlPrograms))) then exit; lpBuffer := StrAlloc(MAX_PATH); bi.hwndOwner := GetActiveWindow; bi.pidlRoot := pidlPrograms; bi.pszDisplayName := lpBuffer; bi.lpszTitle := PChar(Caption); bi.ulFlags := BIF_RETURNONLYFSDIRS; bi.lpfn := nil; bi.lParam := 0; pidlBrowse := SHBrowseForFolder(bi); if (pidlBrowse <> nil) then if SHGetPathFromIDList(pidlBrowse, lpBuffer) then Result := lpBuffer; StrDispose(lpBuffer); end; //////////////////////////////////////// // Aufruf // procedure TForm1.Button1Click(Sender: TObject); var Verz: String; begin Verz := OpenFolder(CSIDL_DRIVES,'Verzeichnis auswählen'); // CSIDL_DRIVES sorgt dafür, dass du als obertes Verzeichnis den // Arbeitslplatz hast ;-) end; mirage228 |
Re: Ordner angeben
@ fuckracism, funzt leider nicht:
Zitat:
|
Re: Ordner angeben
Hast du denn einen Edit auf dein Forumlar gezogen??
|
Re: Ordner angeben
Zitat:
|
Re: Ordner angeben
Zitat:
versuch trotzdem ma die methode "OpenFolder" als Methode des Forms zu machen, also oben zu public die deklaration reinschreiben und ein TFrom1 (oder was auch immer du hast) vor die Methodendefinition (TForm1.OpenFolder) mfG mirage228 |
Re: Ordner angeben
Hoi,
also ist dein Edit2 auf dem Frame ... dann schreib mal die Frame-Unit in deine Uses-Clausel der Mainunit. |
Re: Ordner angeben
Zitat:
@mirage, ich hab keíne TForm1 sondern einen TFrame21...sry, ich kann nicht ganz genau nachvollziehen was du meinst :roll: :oops: :spin: |
Re: Ordner angeben
Salut,
dieses Thema war genau das, was ich auch gesucht habe. Allerdings habe ich da noch ein paar Fragen dazu, um auch wirklich zu verstehen, was da gemacht wird. Zum einem bräuchte ich dazu mal die Hilfe bzw. eine HilfeDatei zu SHLOBJ, denn dazu findet meine Delphi Hilfe nix, und zum anderen würde mich mal interessieren, warum ich im Code ![]() Grüße Blechwolf |
Re: Ordner angeben
Moin Blechwolf,
sei doch bitte so gut, und mache für neue Fragen einen neuen Thread auf. Danke. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 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