AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

SelectDirectory mit Positionsangabe?

Offene Frage von "p80286"
Ein Thema von p80286 · begonnen am 10. Jan 2011 · letzter Beitrag vom 12. Jan 2011
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

SelectDirectory mit Positionsangabe?

  Alt 10. Jan 2011, 17:40
Delphi-Version: 7
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: SelectDirectory mit Positionsangabe?

  Alt 10. Jan 2011, 21:25
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;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: SelectDirectory mit Positionsangabe?

  Alt 11. Jan 2011, 10:38
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:
if 1=1 then //(ExtractFileName(DirName)='Windows') then
                            SendMessage(hwnd, BFFM_ENABLEOK, 0, 1)
                           else
                            SendMessage(hwnd, BFFM_ENABLEOK, 0, 0)
Das sieht aus wie Reste, die ich eigentlich garnicht brauche, oder hab ich da etwas übersehen?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (11. Jan 2011 um 13:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.097 Beiträge
 
Delphi 12 Athens
 
#4

AW: SelectDirectory mit Positionsangabe?

  Alt 11. Jan 2011, 13:01
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
http://www.delphipraxis.net/96316-op...ml#post1046009
Angehängte Dateien
Dateityp: pas SearchSameFilesP.pas (12,8 KB, 11x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Jan 2011 um 13:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: SelectDirectory mit Positionsangabe?

  Alt 11. Jan 2011, 13:10
Danke!
aber die Fensterpositionierung fehlte,
aber sonst sehr interessant.

Gruß
K-H
Edith:
Ok wer suchen kann, braucht das Rad nicht neu zu erfinden!
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (11. Jan 2011 um 13:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: SelectDirectory mit Positionsangabe?

  Alt 11. Jan 2011, 20:06
@p80286

das sind Reste die Du gegf. nicht brauchst.., da löschen immer einfacher ist als suchen, habe ich mal drin gelassen..
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: SelectDirectory mit Positionsangabe?

  Alt 12. Jan 2011, 09:22
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:
xpos:=Left+E_SrcDir.left+10;
ypos:=Top+Height-Clientheight+E_SrcDir.Top+E_SrcDir.Height ;
Gibt es da keine übersichtlichere Möglichkeit?
(Bitte nicht schlagen aber dafür einen neuen Tread?)
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (12. Jan 2011 um 11:43 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:33 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