| Autor |
Beitrag |
Tksnav17
Hält's aus hier
Beiträge: 13
Delphi 7 Prof.
|
Verfasst: Mi 22.02.06 16:18
Also, folgendes Problem.
Ich habe ein Formular, bei dem mit Enter eine MessageBox aufgeht. Bestätigt man hier jedoch den den ausgewählten Button mit Enter, so wird zwar die MessageBox geschlossen, aber das Formular erhält das Enter ebenfalls und ruft damit die MessageBox wieder auf.
Is bestimmt nur ne Eigenschaft zu ändern.
Kann mir da jemand weiter helfen?
mfg
Tksnav17
|
|
digi_c
      
Beiträge: 1905
W98, XP
D7 PE, Lazarus, WinAVR
|
Verfasst: Mi 22.02.06 16:21
Das Primitivste wäre sicherlich eine globale Variable die nach dem Aufrufen der Box gesetzt wird und vor einem erneuten Aufruf abgefragt wird.
Es geht aber bestimmt auch intelligenter...
|
|
Tksnav17 
Hält's aus hier
Beiträge: 13
Delphi 7 Prof.
|
Verfasst: Mi 22.02.06 16:27
Is aber schonmal ne möglichkeit zum Ausprobieren, Danke.
|
|
Tastaro
      
Beiträge: 414
Erhaltene Danke: 23
|
Verfasst: Mi 22.02.06 16:46
Wird die Messagebox in einer "OnKeyUp"-Routine aufgerufen?
Falls ja, dann ändere das und lass sie in er "OnKeyDown"-Routine starten.
@digi_c: Globale Variabeln?
Beste Grüße
Tastaro
|
|
Tksnav17 
Hält's aus hier
Beiträge: 13
Delphi 7 Prof.
|
Verfasst: Mi 22.02.06 17:11
Also das ganze sieht so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| if Application.MessageBox('Tagesabschluß entgültig durchführen ?', 'Frage', 292) = 6 then begin . . . end else begin . . . end; |
und im else-Teil passiert das.
Ist in einer extra Funktion, die durch ein OnKeyPress aufgerufen wird.
Hab es jetzt erstmal durch setzen einer Variablen gelöst. Damit hab ich zwar das Problem umschifft, aber vielleicht kann mir ja noch jemand die Ursache des Problems sagen, denn bei allen anderen meiner Programme kam das noch nie vor und habe ich das ähnlich gemacht.
Moderiert von raziel: Delphi-Tags hinzugefügt
|
|
digi_c
      
Beiträge: 1905
W98, XP
D7 PE, Lazarus, WinAVR
|
Verfasst: Mi 22.02.06 18:09
@Tastaro Ich weiß ist nicht schön, deshalb distanziere ich mich nochmal explezit davon 
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 22.02.06 20:16
gib deiner funktion doch mal einen ordentlichen rückgabewert. z. b.
Delphi-Quelltext 1: 2: 3: 4:
| case application.messagebox('Tagesabschluß entgültig durchführen ?', 'Frage', mb_yesno) of id_yes: ....; id_no: ...; end; |
ist nicht getestet. also, erst mal die hilfe aufrufen wegen der richtigen werte und buttons.
|
|
Tksnav17 
Hält's aus hier
Beiträge: 13
Delphi 7 Prof.
|
Verfasst: Do 23.02.06 09:58
Das sieht zwar schöner aus, ändert doch aber nichts an dem Problem, daß die Taste an das Formular übergeben wird, das die Messagebox aufruft.
Mich würde interessieren, wie ich das unterbinden kann.
|
|
raiguen
      
Beiträge: 374
WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
|
Verfasst: Do 23.02.06 15:58
[quote]Ist in einer extra Funktion, die durch ein OnKeyPress aufgerufen wird. [/qoute]
Welches OnKeyPress ist das? Etwa das vom Formular? Und KeyPreview des Formulares auf TRUE gesetzt? Dann ist das auch kein Wunder...
Gruß
|
|
Tksnav17 
Hält's aus hier
Beiträge: 13
Delphi 7 Prof.
|
Verfasst: Do 23.02.06 16:26
Is zwar das OnKeyPress des Formulars, KeyPreview steht aber auf False.
Kann es manchmal sein, dass so eine Eigenschaft von irgendwo her vererbt wird?
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 24.02.06 21:45
Tksnav17,
schau es dir doch erst mal an. den code den ich dir gepostet hab, hat einen vorteil gegenüber deinen code
du weisst was zurück kommt
- ja: gedrückt
- nein: gedrückt
- oder: irgend was anderes gedrückt.
bei dem anderen, machst du das gleiche wieder von vorne. obgleich das niemand will.
deshalb hast du ja auch das problem.
|
|
digi_c
      
Beiträge: 1905
W98, XP
D7 PE, Lazarus, WinAVR
|
Verfasst: Mo 27.02.06 20:08
Stimmt, musste aber auch überlegen 
|
|
Tksnav17 
Hält's aus hier
Beiträge: 13
Delphi 7 Prof.
|
Verfasst: Di 28.02.06 16:15
Hm, da mußt du mir bitte den Unterschied erklären. Ich bin der Meinung, daß durch die Abfrage des Rückgabewertes "6" ich doch die OK-Taste abfrage. Und da ja nur Zwei Tasten sichtbar sind, wird mit else ja auch definitiv die No-Taste abgefragt.
Außerdem versteh ich nicht, wie durch meine Abfrage das Problem etsteht.
Wäre schön, wenn du mir das erklären könntest.
|
|