Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ordner angeben (https://www.delphipraxis.net/6540-ordner-angeben.html)

quakergod 14. Jul 2003 14:19


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:

Chewie 14. Jul 2003 14:30

Re: Ordner angeben
 
SelectDirectory

Alexander 14. Jul 2003 14:32

Re: Ordner angeben
 
such mal hier nach SelectDirectory

quakergod 14. Jul 2003 14:51

Re: Ordner angeben
 
mhm, ok das hat geklappt, jetzt möchte ich aber den pfad in ein edit feld reinscreiben:
Delphi-Quellcode:
procedure TForm1.Frame21SpeedButton2Click(Sender: TObject);
var
  Dir: String;
begin
  SelectDirectory('Select a directory', '', Dir);
  ShowMessage(Dir);
  Edit2.text:=(Dir);
end;
ich muss dazu sagen das der button und das edit2 feld im frame Frame21 sind, warum funzt das nicht? :oops:

RomanK 14. Jul 2003 15:05

Re: Ordner angeben
 
Delphi-Quellcode:
procedure TForm1.Frame21SpeedButton2Click(Sender: TObject);
var
  Dir: String;
begin
  SelectDirectory('Select a directory', '', Dir);
  ShowMessage(Dir);
  Edit2.text:=Dir;
end;
so sollte es gehen.

mirage228 14. Jul 2003 16:19

Re: Ordner angeben
 
Neben SelectDirectory gibt es auch noch die neuere Möglichkeit, die optisch besser aussieht!

Delphi-Quellcode:
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;
mfG
mirage228

quakergod 14. Jul 2003 18:09

Re: Ordner angeben
 
@ fuckracism, funzt leider nicht:
Zitat:

[Error] Unit1.pas(66): Undeclared identifier: 'Edit2'
@ mirage228, da gibts leider einen parse error :?

RomanK 14. Jul 2003 18:19

Re: Ordner angeben
 
Hast du denn einen Edit auf dein Forumlar gezogen??

quakergod 14. Jul 2003 18:28

Re: Ordner angeben
 
Zitat:

Zitat von FuckRacism
Hast du denn einen Edit auf dein Forumlar gezogen??

ja klar, aber wie eben schon gesagt ich arbeite mit frames, ka ob sich das darauf auswirkt... :cry:

mirage228 14. Jul 2003 18:30

Re: Ordner angeben
 
Zitat:

Zitat von quakergod
@ mirage228, da gibts leider einen parse error :?

was für einen denn?

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

RomanK 14. Jul 2003 18:31

Re: Ordner angeben
 
Hoi,
also ist dein Edit2 auf dem Frame ... dann schreib mal die Frame-Unit in deine Uses-Clausel der Mainunit.

quakergod 14. Jul 2003 18:42

Re: Ordner angeben
 
Zitat:

Zitat von FuckRacism
Hoi,
also ist dein Edit2 auf dem Frame ... dann schreib mal die Frame-Unit in deine Uses-Clausel der Mainunit.

habs hinbekommen: Frame21.Edit2.text:=Dir; :bounce1: danke nochmal!

@mirage, ich hab keíne TForm1 sondern einen TFrame21...sry, ich kann nicht ganz genau nachvollziehen was du meinst :roll: :oops: :spin:

Blechwolf 15. Sep 2003 12:36

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 Hier im Forum suchennet ein PMalloc-Objekt brauche, und hier in der OpenFolder-Prozedur nicht.

Grüße
Blechwolf

Christian Seehase 15. Sep 2003 13:10

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 03:16 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