Delphi-Version: 10.2 Tokyo
Dialog an bestimmter Stelle erscheinen lassen
Liste der Anhänge anzeigen (Anzahl: 2)
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:
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.
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; 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 |
AW: Dialog an bestimmter Stelle erscheinen lassen
So ganz verstehe ich das Problem noch nicht. Du könntest den Dialog ja zum Beispiel immer direkt links oder rechts vom Aufrufer anzeigen, je nachdem wo auf dem Bildschirm Platz ist.
Nebenbei zu deinem Dialog: Für mich persönlich wäre diese eher für Win 9x typische Art der Ordnerauswahl ein NoGo, weil ich sehr viel über die Ordnerfavoriten, spezielle Ordner wie den Desktop, eingeklinkte Ordner wie OneDrive oder ein Handy / Tablet usw. mache. Die zeigst du in deiner Ordnerauswahl aber alle nicht an... |
AW: Dialog an bestimmter Stelle erscheinen lassen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi jaenicke
Du meinst Ordner wie Users, Desktop oder Bilder? Oder sowas wie mein Handy, das meine Kiste alseigenes Laufwerk anzeigt? Meine Dialoge/Frames basieren alle auf der Filsever-Komponente von DeddyH, und die kennnt aktuell nur C:\ als Rootlaufwerk. Wobei - mich persönlich ärgert die Anordnung dieser Specialfolders im Exoplorer eher - dise Dinger sind da so angeordnet, als würden sie sich ausserhalb des C-Laufwerks befinden. Das tun sie selbstverständlich nicht, auch dann nicht, wenn sich auf der Hauptplatte aussser der C:\Partition noch weitere solche Dinger befinden. Auf C:\ (eine SSD-Disk, 500GB) speichere ich selbst rein gar nichts - ich habe da nur begrenzten Platz zur Verfügung, und knapp die Hälfte davon wird von den installierten Programmen benötigt und von dem, was diese Programme da ablegen. Bilder, Texte, Datenbanken und dergleichen haben da nichts zu suchen. Trozdem wäre es eine Idee, dieser Komponente das Aufffinden dieser Bentzer-Dateien noch beizubringen. Wobei mir gerade einfällt: ich hab da bisllang noch gar nicht daarauf geachtet, ob diese Dateien da sind: Anhang 49477 Wie du siehst, sind alle diese Dateien da, nur nicht da, wo sie vom Explorer dargestellt werden, sondern da, wo sie wirklich sind: unterhalbvon C:\. Zu Überlegen bleibt lediglich, ob diese benutzerabhängigen Ordner nicht anders dargestellt werden sollen. was aber noch wirklich fehlt, ist die Möglichkeit, Verzeichnisse auf beliebigen Partitionen/Festplatten für nicht angemeldete User sperren zu können (Windows- und Programmbezogen). Gruss Delbor |
AW: Dialog an bestimmter Stelle erscheinen lassen
Zitat:
An solche Ordner würde ich also gar nicht heran kommen. Davon abgesehen mag man ja persönlich von der Anordnung halten was man will (ich halte sie z.B. für sehr praktisch), aber es macht als Entwickler schon Sinn an der Stelle dem Windows Standard zu folgen, wenn man ein Programm schreibt, das man nicht nur selbst benutzen möchte. |
AW: Dialog an bestimmter Stelle erscheinen lassen
Zitat:
|
AW: Dialog an bestimmter Stelle erscheinen lassen
Hi Luckie
Zitat:
Wenn ich das richtig verstanden habe, könnte in diesen virtuellen Ordnern eine Verknüpfung zu andern Verzeichnissen auf beliebigen Laufwerken hergestellt werden - wobei diese Zielverzeichnisse selbst nicht speziell geschützt sind. Natürlich lässt sich das im Explorer ändern, nur ist dieser Weg eine eher holprige Lösung. Wenn, dann müsste dies im Rahmen einer Benutzerverwaltung vom Programm aus geschehen. Gruss Delbor |
AW: Dialog an bestimmter Stelle erscheinen lassen
Zitat:
Jedenfalls ist es schon ein erheblicher Mehraufwand, wenn man jeweils das physische Verzeichnis suchen muss (und wissen muss wo es liegt bzw. ansonsten zuerst im Windows Explorer nachschauen muss) anstatt einfach mit einem Klick über das virtuelle zu gehen... Ich habe bei der Verzeichnisauswahl aber auch schon Probleme gehabt bzw. habe sie noch. Und zwar mit Delphi selbst. Ich weiß nicht warum, aber Delphi (auch die neueste Version) zeigt den Auswahldialog immer ganz unten rechts auf dem Bildschirm an und zwar so, dass der größte Teil des Dialogs außerhalb des Bildschirms liegt. Ich sehe also quasi genug um den Dialog an der Titelleiste in den sichtbaren Bereich zu ziehen... Ob das nun an dem Windows-Dialog oder an Delphi liegt, weiß ich nicht. Trotzdem würde ich nach Möglichkeit immer Standardanzeigen benutzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 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