Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Dialog an bestimmter Stelle erscheinen lassen

  Alt 9. Jul 2018, 20:07
Delphi-Version: 10.2 Tokyo
Hi zusammen

Zur Zeit arbeite ich an einer Einstellungsseite. Aktuell sollen verschiedenen (SQLite-) Datenbankpfade definiert werden können, die in einem StringGrid angezeigt werden.
Ursprünglich wollte ich mit Selectdirectory arbeiten, hab das aber ziemlich schnell wieder verworfen.
So hab ich mir denn einen eigenen FolderDialogFrame gebaut (TFileSearcher, der nur die Ordner findet). Angezeigt wird dieser, auf einem Fenster klebend, so:
Delphi-Quellcode:
function TSettingsFrame.CreateFolderDlg: String;
  var FolderDlg : TFolderDialog;
begin
  FolderDlg := TFolderDialog.Create(Self);
  try
    FolderDlg.SelectDirectoryFrame1.FileSearcher1.RootDir := 'C:\';
    FolderDlg.Left := ClientToScreen(); //<==
    if FolderDlg.ShowModal = mrOK then
      Result := FolderDlg.FolderName;
  finally
    FreeAndNil(FolderDlg);
  end;
end;
TFolderDialog ist ein normales Fenster, das Modal angezeigt werden soll. TSettingsFrame ist der Basisframe, von dem eine Instanz auf der Mainform platziert wurde. Wo auf dieser Form er angelegt wird/werden muss, darf nicht bestimmend sein - der durch obige function erzeugte FolderDialog darf den aufrufenden SettingsFrame aber nicht verdecken, höchstens jedoch etwas anschneiden, sollte aber auch nicht komplett unabhängig von der Position des Aufrufers angeziegt werden.

Im Anhang noch 2 jpegs, die die Mainform normal und Maximized mit jeweils Mainformzentriertem Dialog zeigen. Die Lösung mit demm Positionproperty ist mir nachträglich eingefallen - wirklich befriedigend ist sie aber nicht. Das Stringgrid sollte im Endeffekt gross genug sein, um einen kompletten Pfad anzuzeigen (der in Node.Data meines TFolderFrames steht).

Hat jemand eine Idee für eine befriedigendere Lösung?

Gruss
Delbor
Miniaturansicht angehängter Grafiken
20_25_59-mainformcenternormal.jpg   mainformcentermaximized.jpg  
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat