EvtLstSelect
EvtLstSelect
Änderung der selektierten Zeile
Details
- Name: Typ Beschreibung
- aEvt:
eventEreignisinformationen - aID:
int/bigintID des Datensatzes oder Nummer der Zeile - Resultat:
logicWird nicht ausgewertet - Siehe: Liste , Objekte , Ereignisbefehle , Ereignisabläufe RecList , Ereignisabläufe RecView
Das Ereignis wird ausgelöst, wenn sich die selektierte Zeile in einem Listen-Objekt geändert hat. Dies ist unabhängig davon, ob dies per Maus oder Tastatur geschehen ist. Das Ereignis wird auch beim Laden des Frames ausgelöst.
Im Zusammenhang mit einer ComboBox ( RecListPopup , DataListPopup oder StoListPopup ) wird das Ereignis erst mit dem Schließen der ComboBox ausgelöst.
Beim Auslösen des Ereignisses werden die Feldpuffer der Felder, die in den Spalten einer RecList enthalten sind, mit den Werten des selektierten Datensatzes gefüllt. Dieses Verhalten kann durch das Löschen des Flags _WinLstRecSelectBuffer in der Eigenschaft LstFlags unterbunden werden. Der Datensatz kann dann über die Record-ID gelesen werden.
Das Ereignis wird ebenfalls ausgelöst, wenn kein Datensatz in der Liste dargestellt wird oder ein Update auf die Liste durchgeführt wird. Im Übergabeparameter aID wird dann der Wert 0 übergeben. Das Auslösen des Ereignisses EvtLstSelect bei einem Update auf die RecList kann durch die Option _WinLstRecEvtSkip unterbunden werden.
Definition des Funktionskopfes:
sub EvtLstSelect
(
aEvt : event; // Ereignis
aID : bigint; // Record-ID des Datensatzes oder Zeilennummer
)
: logic; // Wird nicht ausgewertet
{
return(true);
}
Alternativer Funktionskopf:
sub EvtLstSelect
(
aEvt : event; // Ereignis
aID : int; // Record-ID des Datensatzes oder Zeilennummer
)
: logic; // Wird nicht ausgewertet
{
return(true);
}
aEvt
In diesem Parameter vom Typ event wird unter anderem der Deskriptor des auslösenden Objektes, d. h. das Objekt, in dem die Ereignisfunktion eingetragen wurde, übergeben.
aID
Beim Reclist - bzw. beim RecListPopup -Objekt wird in aID die Datensatz-ID des selektierten Datensatzes übergeben. Beim DataList - bzw. DataListPopup -Objekt wird die Nummer der selektierten Zeile übergeben. Beim StoList - bzw. StoListPopup -Objekt hat die Nummer keine Bedeutung.
Wird der alternative Funktionskopf verwendet, kommt es zum Laufzeitfehler _ErrValueOverflow , wenn die zu übergebende Datensatz-ID nicht in den Wertebereich von int passt.
Resultat
Der Rückgabewert der Funktion wird nicht ausgewertet.
Der Datensatzpuffer der Datei, die zum Aufbau des RecList -Objekts benötigt wird, darf nicht verändert werden. Bei Änderungen kann nicht mehr die korrekte Reihenfolge ermittelt werden und es kann dazu kommen, dass Datensätze übersprungen oder eine Endlosschleife programmiert wird. Muss der entsprechende Feldpuffer verändert werden, muss dafür Sorge getragen werden, dass der ursprüngliche Zustand des Feldpuffers wieder hergestellt wird, bevor die Funktion beendet wird (siehe RecBufCopy () ).
Beispiele:
// Fenster aktualisieren
sub EvtLstSelect
(
aEvt : event; // Ereignis
aID : bigint; // Datensatz-ID
) : logic; // Wird nicht ausgewertet
{
$FrmKunden->WinUpdate();
return(true);
}
// Datensatz lesen und Bild aktualisieren
sub EvtLstSelect
(
aEvt : event; // Ereignis
aID : bigint; // Datensatz-ID
) : logic; // Wird nicht ausgewertet
{
// Datensatz lesen
RecRead(ART.D.Artikel, 0, _RecID, aID);
// Bild aktualisieren
$wcBild->wpCaption # '!data\' + ART.aBild;
return(true);
}
// Ereignisaufruf mit Sicherung der Feldpuffer
sub EvtLstSelect
(
aEvt : event; // Ereignis
aID : bigint; // Datensatz-ID
) : logic; // Wird nicht ausgewertet
local
{
tRecBuf : int;
}
{
// Datensatz lesen
RecRead(ART.D.Artikel, 0, _RecID, aID);
// Sichern der Feldpuffer
tRecBuf # RecBufCreate(aEvt:Obj->wpDbFileNo);
RecBufCopy(aEvt:Obj->wpDbFileNo, tRecBuf);
...
// Wiederherstellen des Datensatzpuffers
tRecBuf->RecBufCopy(aEvt:Obj->wpDbFileNo);
tRecBuf->RecBufDestroy();
// Rückgabe des Ergebnisses
return(true);
}