Zum Hauptinhalt springen

EvtLstEditStartItem

EvtLstEditStartItem

Item oder SubItem eines RecViews ändern

Details

Das Ereignis wird ausgelöst, wenn im Ereignis EvtLstEditStartGroup im Parameter aResult _WinRvwGroupEditContinue zurückgegeben wurde. Es leitet den Editiervorgang für das in aGroup übergebene Item oder SubItem ein. Hier kann das Editieren für bestimmte Items der Gruppe unterbunden werden.

Definition des Funktionskopfes:

sub EvtLstEditStartItem
(
aEvt : event; // Ereignis
aGroup : handle; // Gruppe
aRecBuf : handle; // Datensatzpuffer
aResult : int; // Eingabe-Resultat
aOptions : int; // Eingabe-Optionen (optional)
)
: 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.

aGroup

In diesem Parameter wird der Deskriptor der editierten Gruppe übergeben. Die Eigenschaften SelectorItem und SelectorSubItem sind entsprechend gesetzt, so dass das zu editierende Item identifiziert werden kann.

aRecBuf

Hier wird der Datensatzpuffer mit den aktuellen Feldinhalten des Datensatzes übergeben.

aResult

Über diesen Parameter kann ein Wert zurückgegeben werden, der definiert, ob der Editiervorgang gestartet (_WinRvwGroupEditContinue) oder abgebrochen werden soll (_WinRvwGroupEditAbort). Mit der Konstanten _WinRvwGroupEditSkipItem kann der Editiervorgang für ein Item übersprungen werden. In diesem Fall wird das Ereignis für das nächste Item in der Reihenfolge von VisibleOrder ausgeführt. Standardmäßig ist aResult mit _WinRvwGroupEditContinue vorbelegt. Die Rückgabe von dieser Konstanten führt zum Auslösen des Ereignisses EvtLstEditActivate. Wird _WinRvwGroupEditAbort zurückgegeben, wird anschließend das Ereignis EvtLstEditEndItem aufgerufen.

aOptions

Dieser Parameter entscheidet darüber, ob für das durch aGroup spezifizierte GroupItem eine Popup-Liste erstellt werden soll oder nicht.

Dem Argument kann einer der folgenden Werte zugewiesen werden:

  • _WinRvwEditNone Es wird keine Popupliste erstellt. Dies ist das Standardverhalten.
  • _WinRvwEditLst Es wird eine Popupliste mit einer Spalte, die dem Datentyp des GroupItem-Objektes entspricht entstellt. Beim Aufklappen der Popupliste wird der Eintrag selektiert, der dem Inhalt des Eingabefeldes entspricht. Der selektierte Eintrag wird beim Zuklappen ins Eingabefeld übertragen.
  • _WinRvwEditLstAlpha Es wird eine Popupliste mit zwei Spalten erstellt. Die erste Spalte besitzt denselben Datentyp, wie das GroupItem-Objekt, ist jedoch unsichtbar. Die zweite Spalte ist vom Typ alpha. Die Einträge dieser Spalte werden angezeigt. Ein Eintrag wird selektiert, wenn der Inhalt des Eingabefeldes dem Inhalt der 1. Spalte entspricht. Der Wert der 1. Spalte wird beim Zuklappen in das Eingabefeld übertragen.

Wird eine der Optionen _WinRvwEditLst oder _WinRvwEditLstAlpha gesetzt, dann ist die Popupliste zunächst leer. Diese kann im Ereignis EvtLstEditActivate gefüllt werden. Dort wird der Deskriptor des Eingabefeldes übergeben. Ausgehend hiervon kann die Popupliste ermittelt werden.

sub GetPopupFromEdit
(
aEdit : handle;
)
: handle;
{
return (aEdit->WinInfo(_WinFirst, 1, _WinTypePopupList));
}

sub GetPopupListFromEdit
(
aEdit : handle;
)
: handle;

local
{
tHandle : handle;
}

{
tHandle # aEdit->GetPopupFromEdit();

if (tHandle > 0)
tHandle # tHandle->WinInfo(_WinFirst, 1, _WinTypeDataListPopup);

return (tHandle);
}

Anschließend kann über die bekannten Befehle die Popupliste befüllt werden:

  tPopupList # aEdit->GetPopupListFromEdit();

tPopupList->WinLstDatLineAdd('S');
tPopupList->WinLstCellSet('Sachbücher', 2);
...

Für den Datentyp logic wird eine automatisch befüllte Liste generiert, die in Abhängigkeit von aOptions unterschiedlich ausfällt:

  • _WinRvwEditLst Es wird eine einspaltige Liste generiert. Sie enhält zwei Einträge, die mit Häkchen dargestellt werden.
  • _WinRvwEditLstAlpha Es wird eine zweispaltige Liste generiert. Die erste Spalte ist unsichtbar. Die zweite Spalte enthält zwei Einträge, die in Abhängigkeit von der Eigenschaft FmtBoolString gesetzt werden.

Der in der Liste selektierte Wert für true bzw. false kann mit der folgenden Funktion ausgehend vom Eingabefeld ermittelt werden.

sub GetSelectedLogicValue
(
aEdit : handle;
)
: logic;

local
{
tList : handle;
tValue : logic;
}

{
tList # aEdit->GetPopupListFromEdit();

if (tList > 0)
tList->WinLstCellGet(tValue, 1, _WinLstDatLineCurrent);

return (tValue);
}

Resultat

Der Rückgabewert der Funktion wird nicht ausgewertet.

Besonderheiten

info

Während dieses Ereignisses ist eine Veränderung des RecView -Objektes nicht zulässig. Eigenschaften und Befehle, die das RecView , die Columns oder SubColumns verändern würden, lösen den Laufzeitfehler _ErrHdlInvalid aus. Das Abfragen von Eigenschaften sowie der Aufruf von WinInfo () sind zulässig.

Beispiel:

sub EvtLstEditStartItem
(
aEvt : event; // Ereignis
aGroup : handle; // Gruppe
aRecBuf : handle; // Datensatzpuffer
aResult : int; // Eingabe-Resultat
aOptions : int; // Eingabe-Optionen (optional)
)
: logic // Wird nicht ausgewertet

{
if (aGroup->wpSelectorItem = 1 and aGroup->wpSelectorSubItem = 3)
aResult # _WinRvwGroupEditAbort;

return(true);
}

Das SubItem im Beispiel stellt ein Bild dar und gibt über das Resultat _WinRvwGroupEditAbort zurück, dass dieses nicht editiert werden kann.