Domino 9 und frühere Versionen > Entwicklung

mit ENTER ins neue FIELD...

<< < (2/7) > >>

Semeaphoros:
Nein, es würde auch Windows-Standards brechen, Enter ist entweder im Textfeld ein Zeilenumbruch oder bei Mehrfachwerten Eingabebestätigung oder löst gemäss UI-Standards die Standardaktion (normalerweise der OK-Buhtong) aus. Damit würde man beim Umbiegen von Enter auf die TAB-Funktion diesen UI-Standard verletzen

Marinero Atlántico:
Jens hat Recht. Solche Kreativlösungen verwirren nur die Anwender.
Frage: Geht das eigentlich mit der C-Api?

<aehem>
In Java-Gui-APIs kann man für einzelne widgets wie Textfelder selektive event listener anmelden, die aus der Event Queue die entsprechenden Events selektiv rausfischen und CallBack-Methoden anbieten.

Callback Methode heisst: Das System bietet Methoden/Funktionen an, die vom System aufgerufen werden, wenn sich bestimmte Stati in der GUI verändern (Maske wird gespeichert, Maske wird geöffnet, etc.)

In Notes sind die meisten CallBack Methoden (queryOpen, queryModeChange, querySave) Masken-Gebunden. Auf Feldebene gibts diese Enter und Exit, sowie Eingabevalidierung und Eingabeumsetzung.

Das ist keine Wertung. Beschränkung auf weniger kann auch mehr Übersichtlichkeit bedeuten.
</aehem>

correct me if I am wrong

Axel

Semeaphoros:
Sorry Axel, aber Du wirfst da Callbacks und Events durcheinander. Notes kennt nur einen einzigen Callback, das ist der Timer, alles andere sind Events. Auch wenn sie manchmal änlich aussehen, bestehen da doch wesentliche Unterschied.

Und, nein, mit der Notes-C-Api liesse sich das nicht umbiegen, da müsste man schon die Win-API heranziehen, dort ist das dann aber ohne weiteres möglich, auch wenn der Aufwand, es zu tun, ziemlich gross werden könnte (man müsste die Routine aus der Maske heraus ein- und ausschalten, wobei das durchaus lösbar wäre).

Marinero Atlántico:
Hallo Jens,

kannst du mir bitte den Unterschied erklären?

Ich sehe das so:
Der User klickt einen Button zum Speichern eines Dokuments.
Gegen Domino wird ein Event geschickt, dass Domino anfordert dieses Dokument zu speichern.

Domino ruft die QuerySave-Methode auf. Der code, den der Entwickler da reingeschrieben hat, wird ausgeführt (das sehe ich als eine CallBack Methode an. Das Event selber bekommt der Entwickler nie zu Gesicht).
 
Domino ruft die PostSave Methode auf (wie QuerySave).

QuerySave und PostSave sind also Methoden, für die ein Kontrakt besteht, dass sie auf ein bestimmtes Event im Lebenszyklus eines Dokuments (eigentlich UIDoc) vom System, sprich Domino, aufgerufen werden.  
Der Entwickler hat die Möglichkeit hier code reinzuschreiben und er kann sicher sein, dass sie bei bestimmten Lebenszyklusevents (query-save= vor dem Speichern) vom System aufgerufen werden (call-back)

Was ist daran verkehrt? Möglicherweise habe ich da was falsch verstanden.  
Lotus nennt diese Methoden (querySave, etc.) events. Aber sind es nicht eigentlich callBack-Methoden?

Wir wissen alle wie ungenau diese Begriffe von unterschiedlichen Herstellern verwendet werden. Vielleicht überseh ich da auch irgendwelche wichtigen Aspekte.

Gruß Axel

Semeaphoros:
Natürlich kann ich Dir den Unterschied erklären.

Wenn Du Events verarbeiten willst, musst Du einen Event-Handler in einem vordefinierten Punkt in den Code der Umgebung einhängen. Der Domino-Designer erledigt das für Dich im Hintergrund. Der Eventhandler wird von der Umgebung in jedem Falle aufgerufen, wenn eines der definierten Events eintrifft. Dein Event-Handler hat eine ganz bestimmte Struktur zu erfüllen und sich an ein eng defiiniertes Protokoll zu halten, so muss er beispielsweise überprüfen, ob das Event überhaupt das ist, was er erwartet (macht wiederum der Designer automatsich) und am Schluss muss er mitteilen, ob das Event abgearbeitet ist oder nicht. Das ist vom Designer teilweise versteckt, sichtbar dort, wo es einen "Continue"-Parameter gibt.

Für einen Callback musst Du eine eigene-weitgehend beliebige-Routine schreiben und per Registrationsaufruf gegenüber der Umgebung registrieren. Siehe im Domino den Timer, da musst Du eine Prozedur schreiben und sie dann als Callback-Prozedur gegenüber dem Timer mit einem Registrationsaufruf ausdrücklich registrieren.

Auch wenn sich manche Sachen mit beiden Technologien realisieren lassen (aber normalerweise nicht in derselben Umgebung) und für den Endanwender kein Unterschied besteht, so sind es doch grundverschiedene Technologien, wobei der "normale" Anwenderentwickler davon in der Regel auch wieder nichts mitbekommt, denn mit Event-Handler kann man mit den meisten Umgebungen etwas anfangen, hingegen die Callbacks sind doch schon ziemlich systemnah (wenn auch nicht zwingend).

Die Begriffe zu verwässern ist unschicklich, das macht die Kommunikation diffus, etwa so ähnlich, wie wenn man ständig den Anmelde-/Anzeigenamen ändert.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln