Verwenden des VCL-Steuerelements TControlList

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu VCL


Wir haben ein neues flexibles und virtualisiertes Listensteuerelement in der VCL-Bibliothek eingeführt. Das zugrunde liegende Konzept für dieses Steuerelement ist, ein neues, modern aussehendes VCL-Steuerelement bereitzustellen, das eine benutzerdefinierte UI-Konfiguration und ein leistungsstarkes Steuerelement bietet, das mit sehr langen Listen verwendet werden kann. Diese Liste stellt eine einzige Auswahlliste dar, und alle Einträge haben visuell die gleiche Höhe und Breite.

Form1.png

Das neue Steuerelement ermöglicht es Entwicklern, den Inhalt zu definieren, indem sie einen der Einträge der Liste mithilfe von grafischen Steuerelementen (d. h. von TGraphicControl abgeleitet) entwerfen und dem Steuerelement Daten zur Anzeige einzelner Einträge bereitstellen, ohne alle Steuerelemente für alle Einträge in der Liste zu erstellen, sondern nur diejenigen, die zur Anzeige der Daten erforderlich sind. Da die Liste vollständig virtuell ist, kann sie Tausende und sogar Millionen von Einträgen verarbeiten und bietet einen extrem schnellen Bildlauf. Neben der Berechnung und Anzeige von nur den Einträgen, die auf den Bildschirm passen, speichert die Liste den Inhalt der Einträge mit Bitmaps im Arbeitsspeicher.

Das neue Steuerelement ähnelt dem klassischen Steuerelement TDBCtrlGrid – es gibt einen Bereich für Steuerelemente, Sie platzieren Steuerelemente darin und die virtuellen Einträge werden zur Laufzeit erstellt. Im Gegensatz zu TDBCtrlGrid können darin nur TGraphicControl-Elemente platziert werden, und alle Einträge sind virtuell. Unten ist das Steuerelement zur Entwurfszeit (mit der Oberfläche eines einzelnen Elements, das zur Bearbeitung zur Verfügung steht) und zur Laufzeit (mit demselben Inhalt, der mehrfach vervielfältigt wurde) dargestellt.

Form2.png

Diese Liste enthält keine Sammlung von Einträgen mit speziellen Informationen. Die Daten können entweder über Live-Bindungen (einschließlich der Bindung an eine Datenmenge oder eine Sammlung von Objekten) oder über ein Ereignis zur Abfrage der Daten eines einzelnen Eintrags bereitgestellt werden (sodass die direkte Speicherung und Zuordnung vollständig dem Entwickler überlassen bleibt).

Das Steuerelement bietet verschiedene Ereignisse zum Festlegen von Eigenschaften, Aktivieren und Ändern der Sichtbarkeit für gehostete Steuerelemente für jeden Eintrag. Mit speziellen Eigenschaften können Sie die Auswahl für verschiedene Objektzustände anpassen und zusätzliche Eigenschaften ermöglichen es Ihnen, die Farben der Beschriftungen automatisch anzupassen, wenn ein Objekt ausgewählt wird.

procedure TForm2.ControlList1BeforeDrawItem(AIndex: Integer;    
  ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); 
begin   
  Label1.Caption := 'Label' + AIndex.ToString; 
end;

Zur Entwurfszeit gibt es ein spezielles Dialogfeld mit einer Sammlung vordefinierter Konfigurationen, die eine Anpassung für TControlList-Eigenschaften und Steuerelementsammlungen mit spezifischen Eigenschaften beinhalten. Mit den Pfeilen oben wählen Sie die Grundkonfiguration aus und können sie mit einigen der anderen Kontrollkästchen unten fein abstimmen. Der Experte überschreibt Einstellung der Steuerelementliste.

Preset configurations.png

Der von Ihnen entworfene Eintrag wird virtuell für jeden der mit der Eigenschaft ItemCount angeforderten Einträge repliziert. Die sichtbare Oberfläche des Steuerelements ermöglicht im Allgemeinen eine Reihe von Einträgen, die alle die gleiche Breite und Höhe haben. Das Steuerelement hat 3 verschiedene Layouts:

  • "Einzeln" für eine einzelne Spalte mit Einträgen, in diesem Fall stimmt die Breite des Eintrags mit der Breite des Steuerelements überein.
  • "Mehrere von oben nach unten" ermöglicht mehrere Spalten und nutzt den verfügbaren vertikalen Platz, bevor zur nächsten Spalte gewechselt wird, wodurch ein vertikaler Bildlauf möglich ist.
  • "Mehrere von links nach rechts" ermöglicht ebenfalls mehrere Spalten, verwendet aber ein anderes Layout und einen anderen horizontalen Bildlaufmodus (siehe Abbildung unten).

Wenn Sie die Liste in der früheren Demo für mehrere Spalten konfigurieren, können Sie die Breite der Einträge auf einen anderen Wert als null setzen und erhalten die Ausgabe in der folgenden Abbildung (wiederum zur Entwurfszeit und zur Laufzeit):

Multiple columns.png

Alle Einträge sind virtuell. Das Steuerelement bietet eine ausgezeichnete Leistung, und Sie können problemlos über eine Million Einträge haben. Sichtbare Einträge und ihre Positionen werden von speziellem Code in Echtzeit unter Verwendung von Bildlaufinformationen definiert. Nur sichtbare Einträge werden verarbeitet.

Im Allgemeinen können Sie das Ereignis OnClick für jedes beliebige Steuerelement in der Liste der Steuerelemente verwenden. Das Steuerelement unterstützt High-DPI-Optionen und VCL-Stile und ist vollständig für Live-Bindungen aktiviert.

Die neue Komponente TControlListButton

TSpeedButton kann nicht direkt in dem Bereich verwendet werden, da das Steuerelement keine speziellen Interaktionen, wie z. B. die Änderung des Schaltflächenstatus, verarbeitet. Für Steuerelemente, die verschiedene Status haben können, haben wir eine spezielle TControlListControl-Klasse hinzugefügt, die von TGraphicControl geerbt wurde. Sie können neue Steuerelemente erstellen, die von der Klasse TControlListControl abgeleitet sind, und für ihre Einträge Mausereignisse verwenden. Dies ist der Ansatz von TControlListButton, der Entsprechung von TSpeedButton, das mit TControlList verwendet werden kann. Diese Schaltfläche hat 3 Stile: Druck-Schaltfläche, Tool-Schaltfläche und Link.

Liste der Eigenschaften der Komponente TControlList

  • ItemCount: Integer

Definiert die Anzahl der Einträge

  • ItemColor: Tcolor

Definiert die Hintergrundfarbe eines Eintrags

  • ItemIndex: Integer

Index des aktiven Eintrags

  • ItemWidth: Integer

Definiert die Breite des Eintrags (bei 0 wird die gesamte Breite des Steuerelements verwendet)

  • ItemHeight: Integer

Definiert die Höhe des Eintrags

  • ItemMargins: TMargins

Definiert die Ränder zwischen den Einträgen

  • ColumnLayout: TControlListColumnLayout

Benutzerdefinierte Validierung der Eingabezeichen

  • ItemSelectionOptions: TControlListItemSelectionOptions

Definiert die Auswahl- und Textfarben für Eintragsstaus anhand der folgenden Werte: - cltSingle - cltMultiTopToBottom - cltMultiLeftToRight

  • HotItemIndex: Integer

Index des aktiven Eintrags

  • MarkDisabledItem: Boolean

Legen Sie MarkDisabledItem auf True fest, um deaktivierten Inhalt eines deaktivierten Eintrags automatisch zu zeichnen

Liste der Ereignisse der Komponente TControlList

  • OnBeforeDrawItem

Ereignis zum Definieren der Eigenschaften von Steuerelementen und der Hintergrundzeichnung vor dem Zeichnen des Eintraginhalts

  • OnAfterDrawItem

Ereignis zum Definieren der Eigenschaften von Steuerelementen und der Hintergrundzeichnung nach dem Zeichnen des Eintraginhalts

  • OnBeforeDrawItems

Ereignis zum Festlegen der allgemeinen Hintergrundzeichnung vor dem Zeichnen aller Einträge

  • OnAfterDrawItems

Ereignis zum Definieren der allgemeinen Listenzeichnung nach dem Zeichnen aller Einträge (für alle Einträge)

  • OnItemClick

Ereignis beim Klicken auf einen Eintrag

  • OnItemDblClick

Ereignis beim Doppelklicken auf einen Eintrag

  • OnEnableItem

Ereignis zum Definieren aktivierter und deaktivierter Einträge

  • OnEnableControl

Ereignis zum Definieren aktivierter und deaktivierter Steuerelemente in einem bestimmten Eintrag

  • OnShowControl

Ereignis zum Anzeigen/Ausblenden von Steuerelementen in einem bestimmten Eintrag

Siehe auch

Vcl.Controls.TGraphicControl

Vcl.DBCGrids.TDBCtrlGrid

Vcl.ControlList.TControlList

Vcl.Buttons.TSpeedButton