Zum Hauptinhalt springen

EvtPosChanged

EvtPosChanged

Änderung der Position/Größe des Objekts

Details

Das Ereignis wird ausgelöst, wenn das Objekt in der Position oder Größe verändert wird. Dieses Ereignis dient der Anpassung bzw. Ausrichtung von Unterobjekten des auslösenden Objekts.

info

Befindet sich in einem Frame -Objekt ein FrameClient -Objekt, wird das Ereignis bis einschließlich zur Version 5.7.08 nicht beim Frame , sondern nur beim FrameClient ausgelöst. Um das Ereignis beim Frame -Objekt auszulösen, muss das Ereignis beim Frame -Objekt gesetzt, und der Dialog nach der 5.7.08 erneut gespeichert worden sein. Dynamisch erzeugte Dialoge müssen nicht gespeichert werden.

Definition des Funktionskopfs:

sub EvtPosChanged
(
aEvt : event; // Ereignis
aRect : rect; // Größe des Fensters
aClientSize : point; // Größe des Client-Bereichs
aFlags : int; // Aktion
)
: logic; // Wird nicht ausgewertet
{
return(true);
}

aEvt

Die Funktion hat einen Übergabeparameter vom Typ event. In aEvt wird unter anderem der Deskriptor des auslösenden Objekts, d. h. das Objekt, in dem die Ereignisfunktion eingetragen wurde, übergeben.

aRect

In aRect werden die neuen Ausmaße des Objekts angegeben. Dies sind die Außenmaße des Objekts (bei einem Frame zum Beispiel inklusive Rand, Titel usw.). Wird das Fenster minimiert stehen in left und top - 32000.

aClientSize

In aClientSize wird die Größe des Innenbereichs des Objektes übergeben. Bei Frame -Objekten ist der Innenbereich die Größe des Fensters abzüglich der Titel- und Menüleiste, sowie des Randes. Die neue Breite und Höhe sind die entscheidenden Werte zur Positionierung und Größenveränderung von untergeordneten Objekten. Sichtbare Objekte müssen zwischen den Werten ( 0 , 0 ) und x liegen.

aFlags

Hier wird die Aktion angegeben, welche durchgeführt wurde:

Resultat

Der Rückgabewert der Funktion wird nicht ausgewertet.

info

Eine Veränderung des auslösenden Objektes darf nicht in dieser Funktion erfolgen, da es sonst zu Rekursionen kommt.

Beispiel:

sub EvtPosChanged
(
aEvt : event; // Ereignis
aRect : rect; // Größe des Fensters
aClientSize : point; // Größe des Client-Bereichs
aFlags : int; // Aktion
) : logic; // Wird nicht ausgewertet

local
{
tFrame : int;
tObject : int;
tRect : rect;
}

{
if (aFlags & _WinPosSized != 0)
{
tObject # aEvt:obj->WinInfo(_WinFirst);
// Objekt anpassen
if (tObject > 0)
{
tRect # tObject->wpArea;
tRect:right # aClientSize:x - 16;
tRect:bottom # aClientSize:y - 16;
tObject->wpArea # tRect;
}
}
...
return(true);
}