![]() |
Opendialog bei Ok-Button nicht schliessen
Bei normalen Forms hat das Ereignis Onclose einen Parameter Action, mit dem man im Onclose ein Close verhindern kann.
Gibt es eine Möglichkeit, im Opendialog etwas ähnliches zu machen und selbst auf den OK-Button des OpenFile Dialogs zu reagieren, um ein Schliessen des Dialogs bei falschen Eingaben zu unterbinden? Den OK-Button des Dialogs ganz auszublenden, und einen eigenen Button einzurichten, der das erledigt, wäre eine Notlösung, die mir nicht besonders gefällt. Hintergrund: Ich habe den Dialog mit einem neuen Eingabefeld erweitert. Im Onclose sollten diese Eingabe überprüft werden, und nur wenn das Fileselect in Verbindung mir dieser Eingabe "erfolgreich" durchgeführt werden kann, sollte der Close-Dialog tatsächlich per OK-Button geschlossen werden (abbrechen ist natürlich immer möglich, dann erfolgen auch keine Prüfungen und keine weitere Reaktion auf die Eingaben) |
AW: Opendialog bei Ok-Button nicht schliessen
Dafür hat der TOpenDialog das
![]() |
AW: Opendialog bei Ok-Button nicht schliessen
Korrekte Lösung:
Es wird direkt bei SelektionChange/Eingabe validiert und dementsprechend der Button enabled/disabled, bzw. man verwendet das erwähnte Event. |
AW: Opendialog bei Ok-Button nicht schliessen
@Himitsu
Diese "Korrekte Lösung" ist in dem Fall leider nicht möglich. Das ausgewählte File muss unter Umständen, je nach Eingabe in dem Extra Feld, in ein anderes Verzeichnis verschoben werden. Wenn das aus irgend einem Grund nicht klappt (zum Beispiel, weil es gerade in einer anderen Anwendung geöffnet ist), soll der Diaog nicht mit OK geschlossen werden. Das weiss ich aber erst, wenn ich versucht habe, es zu verschieben. @Bepe Danke, genau das habe ich gesucht |
AW: Opendialog bei Ok-Button nicht schliessen
Dann hoffe ich du gibst wenigstens eine Fehlermeldung mit aus ... nich daß da jemand stundenlang auf den OK-Button drückt und sich wundert, daß nix passiert.
:stupid: |
AW: Opendialog bei Ok-Button nicht schliessen
Ich mache ihne dann sogar darauf aufmerksam, dass er das File wahrscheinlich in einem anderen Programm offen hat und gefälligst dort aussteigen soll (das ist in 99% der Fälle der Grund dafür, dass ein rename/move fehlschlägt).
:lol: |
AW: Opendialog bei Ok-Button nicht schliessen
Zitat:
|
AW: Opendialog bei Ok-Button nicht schliessen
Die Frage ist berechtigt.
Aber ich meine, dass es für den Benutzer angenehmer ist, wenn im Fehlerfall der Dialog offen bleibt und er nach Behebung des Problems (was meist darin besteht, ein anderes Programm zu schliessen) einfach nur noch einmal Ok drücken muss. Sonst müsste der Dialog geschlossen werden, und der User müsste ihn erneut aufrufen, und dann die Eingaben, die er gemacht hat, erneut machen. Oder ich müsste mir die Eingaben merken, und das Formular beim nächten Aufruf mit den letzten Angaben wieder ausfüllen - was auch eine fragliche Vorgangsweise wäre, weil es zu einem schlecht nachvollziehbaren Programmverhalten kommt, manchmal, nämlich wenn beim vorigen Aufruf ein Fehler passiert ist (aber das könnte ja auch schon länger zurückliegen), wären dann die Felder beim Öffnen des Dialogs schon mit den Eingaben vom letzten mal ausgefült, und normalerweise nicht). Es passiert als Reaktion auf den OK-Button nicht besonders viel, den Vierzeiler in die onclick Routine des Buttons (bzw. hier in die oncanclose Routine der Form) aufzunehmen erscheint mir in dem Fall besser, auch wenn das im Allgemeinen nicht die erste Wahl für die Vorgangsweise ist. |
AW: Opendialog bei Ok-Button nicht schliessen
So, jetzt hänge ich bei der sache nochmal:
Zum Auslesen der eingegebenen Werte in der oncanclose-Routine wollte ich die funktion GetDlgItemText verwenden - damit bekomme ich aber nur die statischen Werte von labelcaptions und dgl., bei den Editfeldern liefert die Funktion einen leeren String. Welche Funktion liefert die eingegebenen Werte in den Standardeingabefeldern des Dialogs (Directory und Dateiname) ? |
AW: Opendialog bei Ok-Button nicht schliessen
Das eigentliche Problem war anders, aber evtl. bringt dich dieser Beitrag auf neue Ideen.
![]() Da wollte ich, während das Dialogfenster offen war, den Dateinamen ändern. Unter normalen Umständen klappt das nicht. Es ging nur mit SendMessage. Wie gesagt, vielleicht bringt dich das auf eine andere Idee. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:24 Uhr. |
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