Autor Beitrag
Tksnav17
Hält's aus hier
Beiträge: 13


Delphi 7 Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13


Delphi 7 Prof.
BeitragVerfasst: Mi 22.02.06 16:27 
Is aber schonmal ne möglichkeit zum Ausprobieren, Danke.
Tastaro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: 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? :motz: ;)

Beste Grüße
Tastaro
Tksnav17 Threadstarter
Hält's aus hier
Beiträge: 13


Delphi 7 Prof.
BeitragVerfasst: Mi 22.02.06 17:11 
Also das ganze sieht so aus:

ausblenden 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 user profile iconraziel: Delphi-Tags hinzugefügt
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mi 22.02.06 18:09 
@Tastaro Ich weiß ist nicht schön, deshalb distanziere ich mich nochmal explezit davon 8)
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 22.02.06 20:16 
gib deiner funktion doch mal einen ordentlichen rückgabewert. z. b.

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 13


Delphi 7 Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13


Delphi 7 Prof.
BeitragVerfasst: 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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mo 27.02.06 20:08 
Stimmt, musste aber auch überlegen ;)
Tksnav17 Threadstarter
Hält's aus hier
Beiträge: 13


Delphi 7 Prof.
BeitragVerfasst: 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.