![]() |
Delphi-Version: 7
SelectDirectory mit Positionsangabe?
Hallo zusammen,
Gibt es eine Möglichkeit SelectDirectory zu übermitteln, wo das entsprechende Fester geöffnet werden soll? Irgendwo auf dem Bildschirm ist irgendwie nicht so der Bringer. Gruß K-H |
AW: SelectDirectory mit Positionsangabe?
Zum fertigbasteln ;-)
Delphi-Quellcode:
uses shlObj;
function BrowseCallbackProc(hwnd: HWND; MessageID: UINT; lParam: LPARAM; lpData: LPARAM): Integer; stdcall; var DirName: array[0..MAX_PATH] of Char; pIDL : pItemIDList; p:tagWINDOWPOS; begin case MessageID of BFFM_INITIALIZED:begin SendMessage(hwnd, BFFM_SETSELECTION, 1, lpData); SetWindowPos(hwnd,hwnd,10,10,800,400,sw_show); end; BFFM_SELCHANGED :begin pIDL := Pointer(lParam); if Assigned(PIDL) then begin SHGetPathFromIDList(pIDL, DirName); if DirectoryExists(DirName) then if 1=1 then //(ExtractFileName(DirName)='Windows') then SendMessage(hwnd, BFFM_ENABLEOK, 0, 1) else SendMessage(hwnd, BFFM_ENABLEOK, 0, 0) else SendMessage(hwnd, BFFM_ENABLEOK, 0, 0); end else SendMessage(hwnd, BFFM_ENABLEOK, 0, 0); end; end; Result := 0; end; function SelectFolderDialogExt(Handle: Integer; var SelectedFolder: string): Boolean; var ItemIDList: PItemIDList; JtemIDList: PItemIDList; DialogInfo: TBrowseInfo; Path: PChar; begin Result := False; Path := StrAlloc(MAX_PATH); SHGetSpecialFolderLocation(Handle, CSIDL_DRIVES, JtemIDList); with DialogInfo do begin pidlRoot := JtemIDList; //ulFlags := BIF_RETURNONLYFSDIRS; //only select directories hwndOwner := GetActiveWindow; SHGetSpecialFolderLocation(hwndOwner, CSIDL_DRIVES, JtemIDList); pszDisplayName := StrAlloc(MAX_PATH); lpszTitle := PChar('Select a folder'); lpfn := @BrowseCallbackProc; lParam := LongInt(PChar(SelectedFolder)); end; ItemIDList := SHBrowseForFolder(DialogInfo); if (ItemIDList <> nil) then if SHGetPathFromIDList(ItemIDList, Path) then begin SelectedFolder := Path; Result := True; end; end; procedure TForm1.Button1Click(Sender: TObject); var dir:String; f:Tform; begin SelectFolderDialogExt(Panel1.Handle,dir); Caption := Dir; end; |
AW: SelectDirectory mit Positionsangabe?
mal sehen was sich daraus machen läßt!
vielen Dank! K-H Jetzt sieht es wesentlich besser aus, und ich kann mich an den feinschliff machen. Nur hiermit habe ich noch ein Verständnisproblem:
Delphi-Quellcode:
Das sieht aus wie Reste, die ich eigentlich garnicht brauche, oder hab ich da etwas übersehen?
if 1=1 then //(ExtractFileName(DirName)='Windows') then
SendMessage(hwnd, BFFM_ENABLEOK, 0, 1) else SendMessage(hwnd, BFFM_ENABLEOK, 0, 0) Gruß K-H |
AW: SelectDirectory mit Positionsangabe?
Liste der Anhänge anzeigen (Anzahl: 1)
Eine ähnliche Version ist auch da noch mit drin (ich hoff mal ich hab nicht zuviel rausgelöscht)
[edit] vorhin hatte ich's nicht gefunden :gruebel: ![]() |
AW: SelectDirectory mit Positionsangabe?
Danke!
aber die Fensterpositionierung fehlte, aber sonst sehr interessant. Gruß K-H Edith: Zitat:
|
AW: SelectDirectory mit Positionsangabe?
@p80286
das sind Reste die Du gegf. nicht brauchst.., da löschen immer einfacher ist als suchen, habe ich mal drin gelassen.. |
AW: SelectDirectory mit Positionsangabe?
Ja Danke,
ich hab gestern Abend ein wenig damit rumgespielt, "Ausschlachtsoftware" ist ganz gut zum lernen zu gebrauchen. Gruße K-H Edith: Das Fenster zu positionieren ist etwas umständlich:
Delphi-Quellcode:
Gibt es da keine übersichtlichere Möglichkeit?
xpos:=Left+E_SrcDir.left+10;
ypos:=Top+Height-Clientheight+E_SrcDir.Top+E_SrcDir.Height ; (Bitte nicht schlagen aber dafür einen neuen Tread?) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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