Verwenden des VCL-Steuerelements TControlList
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.
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.
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.
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):
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.
Inhaltsverzeichnis
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
|
Definiert die Anzahl der Einträge |
|
Definiert die Hintergrundfarbe eines Eintrags |
|
Index des aktiven Eintrags |
|
Definiert die Breite des Eintrags (bei 0 wird die gesamte Breite des Steuerelements verwendet) |
|
Definiert die Höhe des Eintrags |
|
Definiert die Ränder zwischen den Einträgen |
|
Benutzerdefinierte Validierung der Eingabezeichen |
|
Definiert die Auswahl- und Textfarben für Eintragsstaus anhand der folgenden Werte: - cltSingle - cltMultiTopToBottom - cltMultiLeftToRight |
|
Index des aktiven Eintrags |
|
Legen Sie MarkDisabledItem auf True fest, um deaktivierten Inhalt eines deaktivierten Eintrags automatisch zu zeichnen |
Liste der Ereignisse der Komponente TControlList
|
Ereignis zum Definieren der Eigenschaften von Steuerelementen und der Hintergrundzeichnung vor dem Zeichnen des Eintraginhalts |
|
Ereignis zum Definieren der Eigenschaften von Steuerelementen und der Hintergrundzeichnung nach dem Zeichnen des Eintraginhalts |
|
Ereignis zum Festlegen der allgemeinen Hintergrundzeichnung vor dem Zeichnen aller Einträge |
|
Ereignis zum Definieren der allgemeinen Listenzeichnung nach dem Zeichnen aller Einträge (für alle Einträge) |
|
Ereignis beim Klicken auf einen Eintrag |
|
Ereignis beim Doppelklicken auf einen Eintrag |
|
Ereignis zum Definieren aktivierter und deaktivierter Einträge |
|
Ereignis zum Definieren aktivierter und deaktivierter Steuerelemente in einem bestimmten Eintrag |
|
Ereignis zum Anzeigen/Ausblenden von Steuerelementen in einem bestimmten Eintrag |