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);
}