Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Cursor im Open-Dialog positionieren (https://www.delphipraxis.net/189645-cursor-im-open-dialog-positionieren.html)

striderx 4. Jul 2016 23:07

Cursor im Open-Dialog positionieren
 
Ich suche nach einer Möglichkeit, in einem Open-Dialog den Cursor auf eine bestimmte Datei zu positionieren (der Name steht beim Start in 'Filename').

Hat jemand eine Idee?


Cheers
striderx

Luckie 4. Jul 2016 23:33

AW: Cursor im Open-Dialog positionieren
 
Warum, wenn der Dateiname schon ausgewählt ist? Default-Schaltfläche ist doch "Öffnen" so dass ein Druck auf Return reichen sollte, die Datei auszuwählen und den Dialog zu schließen.

Aber jetzt mal so grob die Vorgehenseise. Handle vom Dialog ermitteln. Der Listview ist ein Child vom Dialog. Handle vom Listview ermitteln. Mit einer Nachricht die Items durchgehen, die richtigen finden und mit einer Nachricht selektieren.

striderx 4. Jul 2016 23:38

AW: Cursor im Open-Dialog positionieren
 
>>Warum, wenn der Dateiname schon ausgewählt ist<<

Es geht darum, in einem Verzeichnis mit vielen Dateien die Auswahl in der Nähe des eingetragenen Dateinamens zu erleichtern. Es sind nacheinander mehrere Dateien auszuwählen, deren Namen sich zumeist nur wenig unterscheiden.

Jasocul 5. Jul 2016 06:20

AW: Cursor im Open-Dialog positionieren
 
Klingt so, als würde das Verzeichnis festgelegt sein.
Wäre es dann nicht einfacher, die Dateien in einer Listbox oder Checklistbox darzustellen? Damit umgehst du das Ansteuern des OpenDialogs und hast alles selbst in der Hand.

striderx 5. Jul 2016 09:27

AW: Cursor im Open-Dialog positionieren
 
Ich hätte mein Szenario vieleicht etwas besser beschreiben sollen: Es geht darum, Bild-Dateien auszuwählen, die als Thumbnail angezeigt werden. Wenn die erste ausgewählt ist, geht es darum, weitere 'in der Nähe' auszuwählen. Der Dateiname in der Filename-Property ist jeweils derjenige der zuletzt ausgewählten Datei.

@Jasocul: Dafür eine Verzeichnis-Darstellung mit Thumbnails selbst zu programmieren ist für mich nicht zielführend. Fremd-Komponenten setze ich grundsätzlich nicht ein.

@Luckie: Theoretisch hatte ich mir das schon so ungefähr vorgestellt, mir fehlt jedoch die praktische Umsetzung. Hast Du ggf. ein Code-Beispiel - insbesondere für den Listen-Teil?

Jumpy 5. Jul 2016 11:04

AW: Cursor im Open-Dialog positionieren
 
Kann man nicht im Open-Dialog direkt mehrere Dateien auswählen? Mit Strg+Click auf die Dateien?
Ich meine ausser Filename hat er doch noch eine Property Filelist, oder so ähnlich (bin gerade nicht an einem Delphi-Rechner).

p80286 5. Jul 2016 11:33

AW: Cursor im Open-Dialog positionieren
 
Zitat:

Zitat von striderx (Beitrag 1341956)
Es geht darum, in einem Verzeichnis mit vielen Dateien die Auswahl in der Nähe des eingetragenen Dateinamens zu erleichtern. Es sind nacheinander mehrere Dateien auszuwählen, deren Namen sich zumeist nur wenig unterscheiden.

Dann wäre es u.U. sinnvoll wenn die Dateien nach Namen sortiert sind. Eine Sortierung nach "Typ" könnte in die Irre leiten.

Gruß
K-H

striderx 5. Jul 2016 11:41

AW: Cursor im Open-Dialog positionieren
 
@Jumpy

In dem Programm geht es u. a. darum, verschiedene Bilder zu kombinieren (immer je zwei). Ob das ein ansprechnendes Ergebnis bringt, muss halt immer wieder ausprobiert werden. Ein Multi-Select bringt hier nichts.

@p80286

Die Dateien sind nach Namen sortiert, aber darum geht es nicht.

Schlußendlich geht es um genau das, was Luckie theoretisch beschrieben hat. Ich brauche halt Hinweise für die praktische Umsetzung.

himitsu 5. Jul 2016 12:58

AW: Cursor im Open-Dialog positionieren
 
Opendialog hat eine Eventmethode, wo man sich rein hängen kann.
Am Besten auch den "neueren" TFileOpenDialog benutzen, anstatt dem alten TOpenDialog.

in FileOpenDialog.OnExecute kannst du über FileOpenDialog.Dialog Zugriff bekommen,
siehe TCustomFileDialog.Execute // DefaultFolder



Der TOpenDialog wird in neueren Windowsen intern auf die neue API umgeverbogen, aber dem Entwickler wird jeglicher vernünftige Zugriff auf den Dialog verwehrt, durch eine echt grauenhafte Implementation.

Das Event nutzt Delphi selber aus, um z.B. den "Bug" zu beheben, dass Windows seit einer Weile den DefaultFolder/InitialDir einfach ignoriert, bzw. denkt da automatisch etwas zu auszuwählen, wo es denkt der Endnutzer würde sich freuen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:04 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