Zum Hauptinhalt springen

Beispiel - EvtInit / EvtTerm

Die Ereignisse EvtInit und EvtTerm werden beim Laden und Entladen eines Objektes aufgerufen. In diesem Beispiel wird davon ausgegangen, das die Funktionen EvtInit und EvtTerm bei einem Frame-Objekt bei den entsprechenden Ereignissen eingetragen wurden.

In der Datenbank ist die Datei fPersonalGui angelegt, in der benutzer- und objektabhängig die Koordinaten von Frame-Objekten gespeichert werden.

sub EvtInit
(
aEvt : event; // Ereignis
) : logic;
{
UserInfo(_UserCurrent);
PgiUser # UserInfo(_UserName);
PgiObjName # aEvt:Obj->wpName;
if (RecRead(fPersonalGui, kPgiUserObject, 0) < _rMultiKey)
{
// letzte Position des Frames setzen
aEvt:Obj->wpAreaTop # PgiFrmTop;
aEvt:Obj->wpAreaLeft # PgiFrmLeft;
aEvt:Obj->wpAreaRight # PgiFrmRight;
aEvt:Obj->wpAreaBottom # PgiFrmBottom;
}

return(true);
}

sub EvtTerm
(
aEvt : event; // Ereignis
) : logic;
local
{
tErg : int;
}
{
UserInfo(_UserCurrent);
PgiUser # UserInfo(_UserName);
PgiObjName # aEvt:Obj->wpName;
tErg # RecRead(fPersonalGui, kPgiUserObject, _RecLock);

// letzte Position des Frames ermitteln
PgiFrmTop # aEvt:Obj->wpAreaTop;
PgiFrmLeft # aEvt:Obj->wpAreaLeft;
PgiFrmRight # aEvt:Obj->wpAreaRight;
PgiFrmBottom # aEvt:Obj->wpAreaBottom;

switch (tErg)
{
case _rOk :
{
// Position speichern
RecReplace(fPersonalGui, _RecUnlock);
}
case _rNoRec :
{
// Position in neuem Datensatz speichern
RecInsert(fPersonalGuo, _RecUnlock);
}
}

return(true);
}