AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi OpenDialog: Nur einen Ordner auswählen, kein File
Thema durchsuchen
Ansicht
Themen-Optionen

OpenDialog: Nur einen Ordner auswählen, kein File

Ein Thema von thebaer · begonnen am 8. Aug 2003 · letzter Beitrag vom 2. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
thebaer
(Gast)

n/a Beiträge
 
#1

OpenDialog: Nur einen Ordner auswählen, kein File

  Alt 8. Aug 2003, 23:33
Hallo Leute,

eigentlich ne schwachsinnsfrage, aber ich steh grad auf
dem Schlauch. Wie zum teufel kann ich den
OpenDialog, oder irgendwas ähnliches so hinbiegen, dass
der User nur Ordner auswählen kann und ich diesen dann mit dem Pfad
in ein Edit-Feld schreibe.

Dabei soll aber auch keine Dummy Datei herhalten müssen.

Danke im voraus

TheBaer
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: OpenDialog: Nur einen Ordner auswählen, kein File

  Alt 9. Aug 2003, 00:06
Moin The Baer,

Zitat von thebaer:
Dabei soll aber auch keine Dummy Datei herhalten müssen.

Dann geht's mit TOpenDialog gar nicht.

Entweder Du begnügst Dich mit den Möglichkeiten von SelectDirectory (aus der Unit FileCtrl, Beispiele solltest Du auch hier im Forum finden), oder Du baust den Hier im Forum suchenSHBrowseForFolder Dialog ein.

Als letzte Variante fällt mir noch ein:
Die Komponenten TurboPower ShellShock. Diese enthalten eine Kompo, die SHBrowseForFolder kapselt. Zu finden bei sourceforge.net.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
thebaer
(Gast)

n/a Beiträge
 
#3

Re: OpenDialog: Nur einen Ordner auswählen, kein File

  Alt 9. Aug 2003, 15:55
Habs anders gelöst, hab ne zweite Form mit ner ShellTreeView.

Danke trotzdem, werd mir die Sachen mal anschauen...
  Mit Zitat antworten Zitat
Benutzerbild von Teclis
Teclis

Registriert seit: 20. Sep 2003
Ort: Norderstedt
21 Beiträge
 
#4

Re: OpenDialog: Nur einen Ordner auswählen, kein File

  Alt 23. Sep 2003, 21:11
Den gibt es auch noch !habe ich auch gerade erst gefunden.

if opendialog1.execute then
label1.caption:=ExtractFileDir(opendialog1.filenam e);

CU Teclis

PS: Wahrscheinlich liest das gar keiner mehr ! :O´
Wer Rechtschreibfehler findet darf sie behalten ! :O)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: OpenDialog: Nur einen Ordner auswählen, kein File

  Alt 23. Sep 2003, 21:55
Doch ich, um dir zu sagen, dass man es genau so nicht macht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: OpenDialog: Nur einen Ordner auswählen, kein File

  Alt 23. Sep 2003, 22:04
Spricht etwas gegen SelectDirectory ?
Zitat:
SelectDirectory zeigt ein Dialogfeld an, in dem der Benutzer einen Verzeichnisnamen eingeben kann.

Unit
FileCtrl
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Mathieu

Registriert seit: 10. Jun 2007
1 Beiträge
 
#7

Re: OpenDialog: Nur einen Ordner auswählen, kein File

  Alt 6. Sep 2007, 19:45
Wer zufällig auf diesen Beitrag stößt,
sollte einfach die JVCL installieren
und die Komponente TJvSelectDirectory nutzen!

Matti
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#8

Re: OpenDialog: Nur einen Ordner auswählen, kein File

  Alt 6. Sep 2007, 19:48
irgendwo mal im Netz gefunden:


Delphi-Quellcode:
{
  This code shows the SelectDirectory dialog with additional expansions:
  - an edit box, where the user can type the path name,
  - also files can appear in the list,
  - a button to create new directories.


  Dieser Code zeigt den SelectDirectory-Dialog mit zusätzlichen Erweiterungen:
  - eine Edit-Box, wo der Benutzer den Verzeichnisnamen eingeben kann,
  - auch Dateien können in der Liste angezeigt werden,
  - eine Schaltfläche zum Erstellen neuer Verzeichnisse.
}


function SelectDirDialog(const Caption: string; const Root: WideString;
  var Directory: string; EditBox: Boolean = False; ShowFiles: Boolean = False;
  AllowCreateDirs: Boolean = True): Boolean;
  // callback function that is called when the dialog has been initialized
  //or a new directory has been selected

  // Callback-Funktion, die aufgerufen wird, wenn der Dialog initialisiert oder
  //ein neues Verzeichnis selektiert wurde
  function SelectDirCB(Wnd: HWND; uMsg: UINT; lParam, lpData: lParam): Integer;
    stdcall;
  var
    PathName: array[0..MAX_PATH] of Char;
  begin
    case uMsg of
      BFFM_INITIALIZED: SendMessage(Wnd, BFFM_SETSELECTION, Ord(True), Integer(lpData));
      // include the following comment into your code if you want to react on the
      //event that is called when a new directory has been selected
      // binde den folgenden Kommentar in deinen Code ein, wenn du auf das Ereignis
      //reagieren willst, das aufgerufen wird, wenn ein neues Verzeichnis selektiert wurde
      {BFFM_SELCHANGED:
      begin
        SHGetPathFromIDList(PItemIDList(lParam), @PathName);
        // the directory "PathName" has been selected
        // das Verzeichnis "PathName" wurde selektiert
      end;}

    end;
    Result := 0;
  end;
var
  WindowList: Pointer;
  BrowseInfo: TBrowseInfo;
  Buffer: PChar;
  RootItemIDList, ItemIDList: PItemIDList;
  ShellMalloc: IMalloc;
  IDesktopFolder: IShellFolder;
  Eaten, Flags: LongWord;
const
  // necessary for some of the additional expansions
  // notwendig für einige der zusätzlichen Erweiterungen
  BIF_USENEWUI = $0040;
  BIF_NOCREATEDIRS = $0200;
begin
  Result := False;
  if not DirectoryExists(Directory) then
    Directory := '';
  FillChar(BrowseInfo, SizeOf(BrowseInfo), 0);
  if (ShGetMalloc(ShellMalloc) = S_OK) and (ShellMalloc <> nil) then
  begin
    Buffer := ShellMalloc.Alloc(MAX_PATH);
    try
      RootItemIDList := nil;
      if Root <> 'then
      begin
        SHGetDesktopFolder(IDesktopFolder);
        IDesktopFolder.ParseDisplayName(Application.Handle, nil,
          POleStr(Root), Eaten, RootItemIDList, Flags);
      end;
      OleInitialize(nil);
      with BrowseInfo do
      begin
        hwndOwner := Application.Handle;
        pidlRoot := RootItemIDList;
        pszDisplayName := Buffer;
        lpszTitle := PChar(Caption);
        // defines how the dialog will appear:
        // legt fest, wie der Dialog erscheint:
        ulFlags := BIF_RETURNONLYFSDIRS or BIF_USENEWUI or
          BIF_EDITBOX * Ord(EditBox) or BIF_BROWSEINCLUDEFILES * Ord(ShowFiles) or
          BIF_NOCREATEDIRS * Ord(not AllowCreateDirs);
        lpfn := @SelectDirCB;
        if Directory <> 'then
          lParam := Integer(PChar(Directory));
      end;
      WindowList := DisableTaskWindows(0);
      try
        ItemIDList := ShBrowseForFolder(BrowseInfo);
      finally
        EnableTaskWindows(WindowList);
      end;
      Result := ItemIDList <> nil;
      if Result then
      begin
        ShGetPathFromIDList(ItemIDList, Buffer);
        ShellMalloc.Free(ItemIDList);
        Directory := Buffer;
      end;
    finally
      ShellMalloc.Free(Buffer);
    end;
  end;
end;
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: OpenDialog: Nur einen Ordner auswählen, kein File

  Alt 6. Sep 2007, 19:51
Wenn ihr das schon rauskramt, dann auch noch 2 weitere Alternativen

Code-Library-Eintrag
Delphi-Komponente
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#10

Re: OpenDialog: Nur einen Ordner auswählen, kein File

  Alt 1. Apr 2009, 14:05
Nun klinke ich mich hier mal ein. Ich nutze die Funktion aus Post #8, allerdings kann ich einen neuen Ordner nur direkt benennen, wenn bereits ein anderer Ordner in dem Verzeichnis existiert. Sieht man sehr schön, wenn man mehrfach auf neuer Ordner klickt.
Gibt es da noch eine Möglichkeit das zu ändern, hab schon so einiges probiert.

Edit:
Hab es noch etwas genauer rausgefunden: den neuen Ordner kann man nur dann direkt umbenennen, wenn der markierte Ordner aufgeklappt ist. Das geht natürlich nicht, wenn der noch keine Unterordner hat
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:18 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