Autor Thema: Notes Event Handling verbuggt?  (Gelesen 2525 mal)

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Notes Event Handling verbuggt?
« am: 05.08.10 - 14:38:20 »
Hallo an alle,
ein einfaches Szenario:

In einer Maske existiert ein Feld, in dem im Exiting-Event eine Messagebox ausgegeben wird und ein Button, der ebenfalls eine Messagebox ausgibt.

Ist nun der Fokus im Feld und man klickt auf den Button, wird verständlicherweise zuerst der Exiting-Code vom fokussierten Feld ausgeführt. Was aber passiert ist folgendes: Nach dem die Messagebox vom Exiting-Code ausgegeben wurde, bleibt der Button, auf den man gedrückt hat, eingerastet und es wird kein weiterer Code ausgeführt! Erst wenn man nochmals auf den Button oder auf eine freie Fläche drückt, rastet der Button wieder aus und die Messagebox vom Button wird ausgegeben!

Das alles passiert nur, wenn im Exiting-Event vom Feld eine Messagebox ausgegeben wird! Wird stattdessen beispielsweise ein Print ausgegeben, wird der Code vom Button direkt unmittelbar ausgegeben!

Kennt jemand dieses Verhalten und gibt es dazu einen Workaround?!
Ich konnte dieses Verhalten unter Notes 6.5 und höher reproduzieren, niedrigere Versionen habe ich nicht getestet.

Liebe Grüße
Giordano

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Notes Event Handling verbuggt?
« Antwort #1 am: 05.08.10 - 16:43:11 »
Der ewige Kampf "Frontend versus Backend" ... Dem Debugger macht das besonders zu schaffen. Einen Workaround kann ich mir nicht vorstellen, und ich sehe da auch nichts in Richtung "show stopper". Wenn Du solche Teile debuggen musst, bau halt den Code Debugger-freundlicher um, damit das wesentliche doch im Debugger ablaufen kann.

Bernhard

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: Notes Event Handling verbuggt?
« Antwort #2 am: 05.08.10 - 16:51:32 »
Hi Bernhard,
danke für deine Antwort, aber mein Problem hat leider nichts mit Debugging zu tun. Tatsächlich soll dem End User im Exiting-Event eine Messagebox angezeigt werden. Und hier liegt der Hund begraben: Der Code läuft einfach nicht mehr weiter und bleibt im Exiting Event hängen, es sei denn man klickt beispielsweise auf eine freie Fläche!

Den Code kann ich leider nicht mal eben so umstellen, weil dann die ganze Logik kaputt geht und nebenbei bemerkt auch nicht von mir programmiert wurde. Umprogrammieren würde also längere Zeit in Anspruch nehmen und ein Bug, der mindestens seit Notes 6.5 vorhanden ist, ist einfach nicht zumutbar!

Liebe Grüße
Giordano
« Letzte Änderung: 05.08.10 - 16:53:27 von Dubidu »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Notes Event Handling verbuggt?
« Antwort #3 am: 05.08.10 - 17:31:39 »
Sorry Giordano - den Debuggr habe ich da in Dein Posting wohl einfach hinein interpretiert. Kannst Du noch genaueres zu Deinem Problem schreiben? Ich nehme an, dass der Kern meiner Replik auch mit dieser Situation noch nicht ad adsurdum geführt wurde: Da wird sich etwas "beissen", und das gilt es zu finden ("Print" ist ja auch etwas ganz anderes als "Dialogbox").

Bernhard

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: Notes Event Handling verbuggt?
« Antwort #4 am: 05.08.10 - 18:51:36 »
Hi Bernhard,
mein Problem ist innerhalb 3 Minuten(!) praktisch nachvollziehbar:

1. Leere Maske erstellen
2. Ein Feld erstellen
2.1 Im Exiting Event vom Feld eine Messagebox ausgeben
3. Ein Button erstellen
3.1 Der Button soll eine Messagebox ausgeben, wenn auf ihn geklickt wird.

Und nun das Szenario:

1. Form im Notes-Client öffnen
2. Der Focus/Mauszeiger sollte im Feld sein.
3. Auf den Button klicken
4. Das Exiting-Event vom Feld wird ausgelöst
4.1. Nun erwartet man, dass danach der Code vom Button ausgelöst wird --> Fehlanzeige. Der Button bleibt eingerastet und nichts passiert!
5. Entweder auf eine leere Fläche oder nochmals auf den Button klicken --> Code vom Button wird nun endlich ausgeführt!

Wird jedoch statt der Messagebox ein Print im Exiting Event ausgeführt, wird unmittelbar nach dem Exiting der Button-Code ausgeführt!

Liebe Grüße
Giordano

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Notes Event Handling verbuggt?
« Antwort #5 am: 05.08.10 - 22:33:09 »
Servus Giordano,

was da passiert, ist aber völlig klar und auch in der DesignerHelp beschrieben: Eine Messagebox ist ein modales Element, und Du willst sie parallel auslösen. Das kann nicht funktionieren - Du stellst Dir da selbst ein Bein. Und Du bekommst das Szenario auch hin, wenn Du andere parallel ausgelöste Aktionen erzwingst, die modale Frontend-Elemente hervorzaubern.

Du musst Dir also ein anderes Handling überlegen. Und das geht ganz bestimmt. Wenn Du ein Problem / eine Frage dazu hast: Schreib' Deine spezielle Situation hier einfach auf, wir finden gemeinsam schon einen Weg  ;)

Bernhard

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: Notes Event Handling verbuggt?
« Antwort #6 am: 06.08.10 - 08:45:09 »
Hi Bernhard,
ich denke, das Problem ist viel tiefgreifender. Die zweite Messagebox im Button, diente nur zur visuellen Veranschaulichung des Problems. Du kannst stattdessen anderen beliebigen Code in dem Button implementieren --> Er wird einfach nicht ausgeführt!
Das ist für mich definitiv ein Bug, den ich gerne umgehen würde.

Zitat
Schreib' Deine spezielle Situation hier einfach auf, wir finden gemeinsam schon einen Weg  ;)

Mein spezielles Problem ist folgendes:
In einer Form ist standardmäßig der Focus auf einem Feld, bei dem im Exiting Event eine Prüfung gemacht wird. Schlägt sie fehl, kommt die besagte Messagebox. Das Dumme ist nur, dass wenn der User die Form über einen Button oder über Escape schließen will und die Abfrage kommt, das Schließen des Fensters wenigstens dann ausgeführt werden sollte, wenn der User die Messagebox wegklickt! --> Passiert aber nicht. Der User muss auf eine andere freie Fläche klicken, damit das Schließen der Form ausgelöst wird.

Das Schlauste wäre natürlich die Abfrage nicht im Exiting-Event zu machen, aber glaub mir bitte, wenn ich dir sage, dass ich die Logik des Codes nicht mal einfach so umstellen kann und darf, weil demnächst der Kunde das Produkt ausgeliefert bekommt!

Liebe Grüße
Giordano

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Notes Event Handling verbuggt?
« Antwort #7 am: 06.08.10 - 09:00:07 »
Hallo,

Zitat
ich denke, das Problem ist viel tiefgreifender. Die zweite Messagebox im Button, diente nur zur visuellen Veranschaulichung des Problems. Du kannst stattdessen anderen beliebigen Code in dem Button implementieren --> Er wird einfach nicht ausgeführt!
Das ist für mich definitiv ein Bug, den ich gerne umgehen würde.

Nein das ist kein Bug und das hat Bernhard auch schon geschrieben.
Die Messagebox ist ein modal angezeigtes Element.

Diesen von Dir geschilderten Effekt kannman auch ohne grossen Aufwand in VB nachstellen.

Und somit hast Du in zwei voneinander getrennten Programmiersprachen, auch noch von konkurrierenden Unternehmen, denselben Effekt im Handling mit einer MessageBox.


Andreas

Offline Dubidu

  • Aktives Mitglied
  • ***
  • Beiträge: 168
  • Geschlecht: Männlich
  • Eins, zwei, drei - eierlei!
Re: Notes Event Handling verbuggt?
« Antwort #8 am: 06.08.10 - 10:36:41 »
Hi Andreas,

Die Messagebox ist ein modal angezeigtes Element.

Dann ist der Button ebenfalls ein modales Element, so dass sich Messagebox vom Exiting Event und Button-Klick gegenseitig in die Quere kommen, auch wenn der Button keine Messagebox, sondern Backend-Code ausführen will?!

Liebe Grüße
Giordano

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 248
  • Geschlecht: Männlich
Re: Notes Event Handling verbuggt?
« Antwort #9 am: 06.08.10 - 16:41:53 »
Welche Art von Meldung kommt denn in der Messagebox, die durch den Exit-Event ausgelöst wird?
Kommt diese Meldung immer oder nur dann, wenn eine Fehlersituation existiert? Vielleicht könnte man dann ja mit uidoc.GotoField den Focus zurück auf das Feld setzen?

Ob Escape gedrückt wurde könnte man unter Windows übrigens abfragen bwvor die Messagebox ausgegegeben wird und dann ggf. auf diese verzichten bzw. erst mal eine Nachfrage machen, ob die Änderungen verworfen werden sollen ...

-Werner

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz