Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Verzeichniswechsel in TOpenDialog verhindern (https://www.delphipraxis.net/128286-verzeichniswechsel-topendialog-verhindern.html)

uligerhardt 27. Jan 2009 13:27


Verzeichniswechsel in TOpenDialog verhindern
 
Hallo!

Ich möchte unsere Benutzer Dateien aus einem festgelegten Verzeichnis wählen lassen. Wenn ich dazu TOpenDialog nehme, kann der Benutzer aber auch in andere Verzeichnisse navigieren. Kann man das irgendwie unterbinden? ofNoChangeDir klingt ja gut, ist aber leider was ganz anderes.

Ciao,
Uli.

matashen 27. Jan 2009 14:23

Re: Verzeichniswechsel in TOpenDialog verhindern
 
Hallo,

Dann nimm doch eine TFilelistbox statt einen opendialog.

ist unter der Kategorie Win3.1 in deiner Komponentenleiste. Das macht genau das. Du gibst einen Pfad vor und der Benutzer darf einen Eintrag(Datei) auswählen.

Gruß Matthias

uligerhardt 27. Jan 2009 14:54

Re: Verzeichniswechsel in TOpenDialog verhindern
 
Zitat:

Zitat von matashen
Dann nimm doch eine TFilelistbox statt einen opendialog.

Ich hab mir auch schon überlegt, ob ich mir einen Dialog selber bastele. Aber es wäre halt schön, wenn ich mit wenig Aufwand die Optik des Standarddialogs haben könnte, inkl. Toolbutton für Ansicht, standardgemäß plazierten OK-/Abbrechen-Buttons etcpp.
Einen Teil dessen könnte ich mit einem ShellListView erschlagen, aber der soll ja recht fehlerhaft sein. Mal sehen.

matashen 27. Jan 2009 15:12

Re: Verzeichniswechsel in TOpenDialog verhindern
 
Meines Wissens gibt es beim Standarddialog kein Event wo du entsprechend reagieren könntest oder eine Eigenschaft um das wechseln des Verzeichnisses zu verhindern.

Gruß Matthias

_frank_ 27. Jan 2009 22:46

Re: Verzeichniswechsel in TOpenDialog verhindern
 
beim SHBrowseForFolder dialog kann man eine Callback definieren und darin auf die Message BFFM_INITIALIZED prüfen um nach dem Anzeigen des Dialogs Änderungen durchzuführen, evtl gibts da etwas ähnliches bei TOpendialog auch...musst halt dort dann mittels FindWindow(ex) die Controls suchen und mit ShowWindow,EnableWindow,... entsprechend bearbeiten.

wenn ich bisher richtig recherchiert habe, müsste dieses mit Ofn_EnableHook funktionieren.
Beispiel (c++): http://cboard.cprogramming.com/showthread.php?t=64380

HTH Frank

uligerhardt 27. Jan 2009 23:30

Re: Verzeichniswechsel in TOpenDialog verhindern
 
Zitat:

Zitat von _frank_
beim SHBrowseForFolder dialog kann man eine Callback definieren und darin auf die Message BFFM_INITIALIZED prüfen um nach dem Anzeigen des Dialogs Änderungen durchzuführen, evtl gibts da etwas ähnliches bei TOpendialog auch...musst halt dort dann mittels FindWindow(ex) die Controls suchen und mit ShowWindow,EnableWindow,... entsprechend bearbeiten.

Es gibt einen Event OnIncludeItem (o.ä., hab grad kein Delphi in der Nähe), der mit einem Options-Flag ofEnableIncludeNotify o.ä. freigeschalten wird - funktioniert leider aber erst ab W2k. :-(

_frank_ 28. Jan 2009 01:18

Re: Verzeichniswechsel in TOpenDialog verhindern
 
mal ein paar böse Manipulationen am Opendialog:
http://www.delphipages.com/threads/t...93656&SAR=TRUE

den verzeichniswechsel über das listview scheint man aber nicht deaktivieren zu können :(

Gruß Frank

uligerhardt 28. Jan 2009 08:04

Re: Verzeichniswechsel in TOpenDialog verhindern
 
Ich denke, das wird mir zu viel Gebastel, wo man nie weiß, ob man unter jedem OS Alles versteckt und verhindert hat. Und besonders stabil hört sich diese ganze Hookerei auch nicht an. Es muss wohl reichen, im OnFolderChange zu Beep'en und zum Schluss noch eine Prüfung mit MessageBox zu machen.

Danke euch beiden für's Mit-Denken :cheers:
Uli.

_frank_ 28. Jan 2009 08:12

Re: Verzeichniswechsel in TOpenDialog verhindern
 
ich halte den Aufwand auch für nicht sinnvoll...wollte diesen Weg nur mit dokumentieren.

Mein Weg wäre eine Listbox mittels findfirst/findnext zu füllen..ist nicht viel Code und man hat auch die Kontrolle über Filter und Verzeichniswechsel.

Gruß Frank

matashen 28. Jan 2009 09:12

Re: Verzeichniswechsel in TOpenDialog verhindern
 
Zitat:

Mein Weg wäre eine Listbox mittels findfirst/findnext zu füllen..ist nicht viel Code und man hat auch die Kontrolle über Filter und Verzeichniswechsel.
Da ist ja mein Weg über eine Filelistbox noch elegenater als sich selbst auch noch um das richtige Befüllen mit Dateinamen zu kümmern. Ist meines erachtens die Sinnvollste Lösung.
Einen OpenDialog nutzen um bei falsch Auswahl dann ne Meldung anzuzeigen ist von der Sicht des Benutzers auch nicht gerade fein. Ich denke da wird nur der Benutzer verwirrt und verunsichert.

Gruß Matthias


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 Uhr.
Seite 1 von 2  1 2      

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