Dynamische Listen und Spalten

Mit der anstehenden CONZEPT 16-Version 5.7.05 haben Sie die Möglichkeit Listen- und Spaltenobjekte dynamisch – das heißt zur Laufzeit – zu erzeugen.

Damit können Sie variable Listenobjekte je nach Bedarf per Prozedur zusammensetzen und müssen nicht mehr mit versteckten Spalten vorbereiten.

Wie das funktioniert und was dabei zu beachten ist, lesen Sie in diesem Artikel.

Das dynamische Erstellen der Oberflächenobjekte erfolgt mit der Funktion WinCreate(), die bereits seit der Version 5.7.01 Teil des Funktionsumfangs ist, ebenso wie die Funktion WinAdd(), die zum Hinzufügen eines Objektes zu einem anderen aufgerufen wird.

Die Listenobjekte – die dynamisch erstellt werden können – sind

  • DataList (_WinTypeDataList),
  • DataListPopup (_WinTypeDataListPopup),
  • RecList (_WinTypeRecList),
  • RecListPopup (_WinTypeRecListPopup),
  • StoList (_WinTypeStoList),
  • StoListPopup (_WinTypeStoListPopup) und
  • RecView (_WinTypeRecView)

sowie die Spaltenobjekte

  • Column (_WinTypeListColumn, für Data- und Rec- und StoList-Objekte) und
  • GroupColumn (_WinTypeGroupColumn, für RecView-Objekte).
Beispiel
// DataList-Objekt mit Namen "dlsMyDataList" erstellen
tWinDataList # WinCreate(_WinTypeDataList, 'dlsMyDataList');
// Position (x: 8, y: 8) und Abmessungen (120 x 80, B x H) setzen:
tWinDataList->wpArea # RectMake(8, 8, 128, 88);
// DataList-Objekt zu Frame-Objekt hinzufügen
aWinFrame->WinAdd(tWinDataList);

Damit haben Sie ein DataList-Objekt erzeugt und einem Frame-Objekt hinzugefügt, allerdings noch ohne Spalten. Diese werden auf die selbe Weise erstellt.

Beispiel
// Spalte mit Namen "clmMyColumn" und Beschriftung "Nr." erzeugen
tWinColumn # WinCreate(_WinTypeListColumn, 'clmMyColumn', 'Nr.');
// Spalte zur Liste hinzufügen
tWinDataList->WinAdd(tWinColumn);

Hierdurch erzeugen Sie ein Column-Objekt – also eine Spalte – und fügen Sie dem DataList-Objekt – der Liste – hinzu. Das Listenobjekt selbst kann auch ein statisches sein, das Sie auf diese Art um zusätzliche Spalten erweitern können. Dynamisch erstellte Column-Objekte haben unter anderem die Ausprägungen

  • wpVisible = true,
  • wpClmType = _TypeAlpha,
  • wpDbFieldName = '',
  • wpClmWidth = 70 und
  • wpClmOrder = _MaxInt.

Die Eigenschaften können Sie nach der Erstellung beliebig anpassen. Die Eigenschaft wpClmType spielt nur bei DataList- und DataListPopup-Objekten eine Rolle, die Eigenschaft wpDbFieldName wiederum nur bei RecList- und RecListPopup-Objekten.

Hinweis: Die Eigenschaft wpClmType kann ab dieser Version auch bei statischen Spalten verändert werden, solange das DataList-Objekt keine Zeilen enthält.

Über die Eigenschaft wpClmOrder wird die Anzeigeposition der Spalte bestimmt. Spalten mit kleinem Wert werden links eingeordnet, Spalten mit großem Wert rechts. Beim Maximalwert (_MaxInt) werden sie also immer ganz rechts eingeordnet. Nach dem Einordnen wird der Wert der Eigenschaft auf die tatsächliche Anzeigeposition gesetzt.

Beispiel
// Spalte an dritter Position anzeigen
tWinColumn->wpClmOrder # 3;
// Spalte zur Liste hinzufügen
tWinDataList->WinAdd(tWinColumn);

Die Indexposition der Spalte – die zum Beispiel bei der Funktion WinLstCellSet() angegeben werden muss – ergibt sich aus der Einfügereihenfolge die mit der Funktion WinAdd() beeinflusst werden kann. Hierbei kann nämlich eine Nachfolgespalte angegeben werden, vor die die einzufügende Spalte eingereiht wird. Wird keine Nachfolgespalte übergeben, wird die Spalte hinter die letzte bereits vorhandene Spalte eingefügt.

Das Hinzufügen und Entfernen einer Spalte vor der letzten Position ist nur möglich, solange die Liste leer ist – ein DataList-Objekt also keine Zeilen enthält beziehungsweise einem RecList-Objekt keine Tabelle oder kein Schlüssel zugewiesen ist. An letzter Position kann zu jeder Zeit eine Spalte hinzugefügt und entfernt werden.

Beispiel
// Erste Spalte ermitteln
tWinColumnRef # tWinDataList->WinInfo(_WinFirst);
// Dritte Spalte ermitteln
tWinColumnRef # tWinColumnRef->WinInfo(_WinNext, 2);
// Spalte an dritter Position einfügen (Index = 3)
tWinDataList->WinAdd(tWinColumn, 0, tWinColumnRef);
...
// Zeile hinzufügen
tLine # tWinDataList->WinLstDatLineAdd(...);
// Dritte Zelle setzen
tWinDataList->WinLstCellSet(..., 3, tLine);

Mit der dynamischen Erstellung bieten sich Ihnen viele neue, flexible und ressourcenschonende Möglichkeiten, Listen an individuelle Gegebenheiten anzupassen.

Wir sind gespannt auf Ihre Umsetzungen =).

Klicken Sie hier, um die Nutzungsbedingungen für unseren Blog zu lesen.

3 Antworten

  1. Besonders gefällt mir, das man künftig auch den clmType ändern kann. Damit kann flexible Datalists künfig dann auch korrekt nach z.B. Datum sortieren. (statt nur nach Alpha)

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Leave the field below empty!

Wünsche, Fragen oder Feedback sind willkommen:

Nutzungsbedingungen der Kommentarfunktion im Blog

1. Allgemeines

Vectorsoft AG („Anbieter“) stellt für Internetnutzer („Nutzer“) auf der Website
vectorsoft.de einen öffentlichen Blog bereit. Der öffentliche Blog dient dem
Informations- und Gedankenaustausch. Die Nutzer, welche sich mit Beiträgen und
Kommentaren beteiligen, verpflichten sich dazu, die Blog-Nutzungsbedingungen
einzuhalten und tragen die Verantwortung für die Richtigkeit und Angemessenheit
sowie Freiheit von Rechtsverletzungen ihrer Beiträge. Mit Nutzung der
Kommentarfunktion in unserem Blog akzeptieren Sie diese Nutzungsbedingungen.

2. Netiquette

Wir bitten Sie von persönlichen Angriffen und Provokationen aufgrund anderer
Meinungen abzusehen. Bitte argumentieren Sie sachlich und bewegen Sie sich auf
der Basis einer konstruktiven Diskussionskultur. Ihr Kommentar sollte stets im
Zusammenhang mit dem jeweiligen Thema sein, um Ausschweifungen in andere
Themenbereiche zu vermeiden. Das mehrmalige Posten desselben Kommentars
oder mehrerer ähnlicher Kommentare ist nicht erlaubt.

3. Verbot rechtswidriger Inhalte

Mit Absenden Ihres Kommentars bestätigen Sie, dass Sie keine Urheberrechte oder andere Rechte Dritter verletzen. Volksverhetzende, rassistische Äußerungen, Anleitungen zu Straftaten und deren Verherrlichung, Gewaltdarstellungen, pornografische Inhalte und Äußerungen, die Persönlichkeitsrechte verletzen sind untersagt.

4. Keine Werbung

Die Nutzung der Kommentarfunktion ist für kommerzielle oder parteipolitische
Zwecke nicht erlaubt. Werbliche Beiträge aller Art werden von uns umgehend
gelöscht.

5. Angaben zum Namen

Bei der Eingabe Ihres Namens achten Sie auf die zuvor genannten Grundsätze.

6. Quellenangaben

Bitte geben Sie bei der beabsichtigten Veröffentlichung von Zitaten oder Beiträgen
Dritter die jeweiligen Quellen an und erläutern dessen Bezug zum Blogbeitrag.

7. Verstoß gegen die Nutzungsbedingungen

Beiträge, die gegen diese Richtlinie verstoßen werden umgehend gelöscht. Sollten
Sie selbst Verstöße bemerken, so senden Sie uns bitte den Link des betreffenden
Kommentars per E-Mail an . Wir weisen ausdrücklich daraufhin, dass wir einzelne Nutzer bei wiederholten oder schweren Verstößen gegen diese
Nutzungsbedingungen ausschließen werden.

Stand: Sept. 2024

Deine Trial Version - jetzt anfordern!

Teste yeet - unverbindlich und kostenfrei

IHRE EVALUIERUNGSLIZENZ - JETZT ANFORDERN!

TESTEN SIE DIE CONZEPT 16 VOLLVERSION - UNVERBINDLICH und KOSTENFREI

Melden Sie sich bei unserem Newsletter an

Anrede*
     
Zustimmung zur Datenverarbeitung gem. DSGVO*



WordPress Cookie-Hinweis von Real Cookie Banner