AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Opendialog bei Ok-Button nicht schliessen

Opendialog bei Ok-Button nicht schliessen

Ein Thema von idefix2 · begonnen am 3. Jun 2015 · letzter Beitrag vom 5. Jun 2015
Antwort Antwort
Seite 1 von 2  1 2   
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Opendialog bei Ok-Button nicht schliessen

  Alt 3. Jun 2015, 16:08
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)
  Mit Zitat antworten Zitat
bepe

Registriert seit: 17. Okt 2006
118 Beiträge
 
#2

AW: Opendialog bei Ok-Button nicht schliessen

  Alt 3. Jun 2015, 16:45
Dafür hat der TOpenDialog das OnCanClose Ereignis.

mfg,
bp
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.477 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Opendialog bei Ok-Button nicht schliessen

  Alt 3. Jun 2015, 16:46
Korrekte Lösung:
Es wird direkt bei SelektionChange/Eingabe validiert und dementsprechend der Button enabled/disabled, bzw. man verwendet das erwähnte Event.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#4

AW: Opendialog bei Ok-Button nicht schliessen

  Alt 3. Jun 2015, 22:33
@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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.477 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Opendialog bei Ok-Button nicht schliessen

  Alt 3. Jun 2015, 22:37
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#6

AW: Opendialog bei Ok-Button nicht schliessen

  Alt 3. Jun 2015, 23:48
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).
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Opendialog bei Ok-Button nicht schliessen

  Alt 4. Jun 2015, 00:02
je nach Eingabe in dem Extra Feld, in ein anderes Verzeichnis verschoben werden.
Warum verlegst du Aufgaben des eigentlichen Programms in den Dialog? Der Dialog ist nun mal dafür gedacht eine Datei "auszuwählen" um dann was damit zu machen. Und nicht, um mir ihr im Dialog was zu machen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#8

AW: Opendialog bei Ok-Button nicht schliessen

  Alt 4. Jun 2015, 11:40
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.

Geändert von idefix2 ( 4. Jun 2015 um 11:47 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#9

AW: Opendialog bei Ok-Button nicht schliessen

  Alt 4. Jun 2015, 17:47
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) ?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#10

AW: Opendialog bei Ok-Button nicht schliessen

  Alt 4. Jun 2015, 18:58
Das eigentliche Problem war anders, aber evtl. bringt dich dieser Beitrag auf neue Ideen.

http://www.delphipraxis.net/172365-d...g-aendern.html

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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf