Zum Hauptinhalt springen

SelectionData

SelectionData

Selektionsobjekt der Mehrfachauswahl

Details

Ist bei einem Objekt eine Mehrfachauswahl zulässig, kann die Mehrfachauswahl durch Setzen der Eigenschaft MultiSelect bei diesem Objekt auf true aktiviert werden.

Erst wenn diese Eigenschaft gesetzt ist, steht das SelectionData-Objekt zur Verfügung. Um die Eigenschaften dieses Objekts zu lesen, wird der Deskriptor des Objekts benötigt. Der Deskriptor kann der Eigenschaft SelData entnommen werden.

Das SelectionData-Objekt besitzt folgende Eigenschaften:

Die beiden Strukturen unterscheiden sich lediglich in der Sortierung der Elemente. In der Cte-Liste sind die selektierten Objekte in der Reihenfolge ihrer Selektion enthalten. Im Cte-Tree werden die Objekte über ihre Identifikation (Zeilennummer, Datensatz-ID oder Objekt-Deskriptor) sortiert.

Die Deskriptoren zu den verschiedenen Strukturen werden über Parameter beim Lesen oder Schreiben der Eigenschaft Data bestimmt:

tCteData # tSelectionData->wpData(_WinSelDataCteTree); // Cte-Tree
tCteData # tSelectionData->wpData(_WinSelDataCteList); // Cte-List

Den Eigenschaften der einzelnen Cte-Items können anschließend Informationen zu den selektierten Objekten entnommen werden:

  • Custom Die Eigenschaft wird nicht automatisch gesetzt und steht dem Entwickler zur Verfügung.
  • ID Die ID wird automatisch vorbelegt. Je nach zugrunde liegendem Objekt befindet sich in dieser Eigenschaft die Datensatz-ID ( RecList -Objekt), die Zeilennummer ( DataList -Objekt) oder der Deskriptor des TreeNode -Objekts ( TreeView -Objekt). Beim StoList -Objekt ist die ID nicht belegt.
  • Name In dieser Eigenschaft befindet sich der in eine Zeichenkette umgewandelte Wert aus der Eigenschaft ID. Wird innerhalb eines StoList -Objekts mehrfach selektiert, befinden sich die Namen der selektierten Objekte in dieser Eigenschaft.

Über die Befehle WinMsdInsert () und WinMsdDelete () können Elemente der Selektion hinzugefügt bzw. aus einer Selektion entfernt werden.

Aufgrund der Unterschiede bei den zugrundeliegenden Objekten, sind bei der Verwendung der Mehrfachselektion folgende Dinge zu beachten:

  • RecList Beim RecList -Objekt können alle sichtbaren Datensätze selektiert werden. Werden vor oder nach der Selektion Datensätze gelöscht, wird das innerhalb der Selektion nicht berücksichtigt. Die Liste der selektierten Elemente kann also Elemente enthalten, die nicht mehr vorhanden sind. Wird zusammen mit der Umschalt -Taste ein Bereich selektiert, wird nur der Anfang und das Ende des Bereichs angegeben (siehe auch Ereignis EvtLstSelectRange). Dazwischen können sich auch neu angelegte Datensätze befinden, die noch nicht in der Liste angezeigt wurden.
  • DataList Die Liste der selektierten Elemente wird beim DataList -Objekt automatisch gepflegt. Werden Zeilen aus dem DataList -Objekt entfernt, die in der Selektion enthalten sind, wird das entsprechende Element ebenfalls aus der Cte-Liste und dem Cte-Tree entfernt.
  • StoList Bei der Storage-List werden in den Listen des Selektions-Objekts nur die Namen der Objekte angegeben. Die Id wird nicht besetzt.
  • TreeView Bei Verwendung des TreeView -Objekts sollten bei Änderungen der Selektion die Befehle WinMsdInsert () und WinMsdDelete () verwendet werden, da so beide Selektions-Listen des Objekts automatisch miteinander synchronisiert werden. Ansonsten wird der Befehl WinMsdUpdate () verwendet, um die Selektion zu aktualisieren.

Über eine Schleife können alle markierten Objekte aus dem Cte-Tree oder der Cte-Liste ermittelt und weiterverarbeitet werden.

tCteItem # tCteData->CteRead(_CteFirst);
while (tCteItem != 0)
{
tCteID # tCteItem->spID;
tCteName # tCteItem->spName;
...
tCteItem # tCteData->CteRead(_CteNext, tCteItem);
}