Parmi les nouvelles fonctionnalités de la prochaine version de Delphi, C ++ Builder et RAD Studio 10.4.2, Embarcadero comprendra deux nouveaux contrôles VCL, un contrôle de liste virtualisé et une zone de saisie numérique.
Avertissement: cet article de blog couvre un produit inédit, qui est sujet à modifications jusqu’à GA.
La sortie de RAD Studio 10.4.2 se rapproche et vous pouvez rejoindre notre webinaire de prévisualisation demain, voir https://blogs.embarcadero.com/whats-coming-in-10-4-2-sydney/ . Il s’agit d’informations préliminaires (ou de blogs bêta) sur un domaine spécifique, les nouveaux contrôles VCL.
Table of Contents
Nouveau contrôle VCL TControlList
Embarcadero introduit dans la bibliothèque VCL un nouveau contrôle de liste flexible et virtualisé. L’idée derrière ce contrôle est d’offrir un nouveau contrôle VCL d’aspect moderne offrant une configuration d’interface utilisateur personnalisée et un contrôle haute performance, qui peut être utilisé avec de très longues listes. Cette liste représente une seule liste de sélection et tous les éléments sont visuellement de la même hauteur et largeur.
Le nouveau contrôle permet au développeur de définir le contenu en concevant l’un des éléments de la liste à l’aide de contrôles graphiques (c’est-à-dire les descendants de TGraphicControl) et de fournir des données au contrôle pour afficher des éléments individuels, sans créer tous les contrôles pour tous les éléments de la liste, mais uniquement ceux nécessaires pour afficher les données. Étant totalement virtuelle, la liste peut gérer des milliers, voire des millions d’éléments, offrant un défilement extrêmement rapide. En plus de calculer et d’afficher uniquement les éléments qui correspondent à l’écran, la liste met en cache le contenu des éléments à l’aide de bitmaps en mémoire.
Le nouveau contrôle ressemble au contrôle TDBCtrlGrid classique – il y a un panneau pour les contrôles, vous placez des contrôles dessus et des éléments virtuels sont créés au moment de l’exécution. Contrairement à DBCtrlGrid, nous ne pouvons y placer que TGraphicControl et tous les éléments sont virtuels. Ci-dessous, vous pouvez voir le contrôle au moment de la conception (avec la surface d’un seul élément disponible pour l’édition) et à l’exécution (avec le même contenu multiplié plusieurs fois).
Cette liste n’inclut pas une collection d’éléments avec des informations spécifiques. Les données peuvent être fournies soit via des liaisons en direct (y compris la liaison à un ensemble de données ou une collection d’objets) ou via un événement pour interroger les données d’un élément individuel (de sorte que le stockage direct et le mappage reviennent entièrement au développeur) . Pour chaque élément à afficher, le contrôle appelle un gestionnaire d’événements que vous pouvez utiliser pour personnaliser l’apparence de chaque élément, dans ce cas, il suffit de modifier la légende de l’étiquette:
1 2 3 4 5 |
procedure TForm2.ControlList1BeforeDrawItem(AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); begin Label1.Caption := 'Label' + AIndex.ToString; end; |
Avec la conception précédente, 10000 éléments et plusieurs colonnes, ce code trivial produit une sortie comme ci-dessous:
Lors de la conception, il existe une boîte de dialogue spéciale avec une collection de configurations prédéfinies, qui incluent l’ajustement des propriétés TControlList et des collections de contrôle avec des propriétés spécifiques. Vous utilisez les flèches en haut pour choisir la configuration de base et vous pouvez l’ajuster avec certaines des autres options de case à cocher en bas. L’assistant remplace le paramètre de liste de contrôle.
L’élément que vous concevez est répliqué (virtuellement) pour chacun des éléments demandés avec la propriété ItemCount. La surface visible du contrôle permet généralement un certain nombre d’éléments, tous avec la même largeur et hauteur. Le contrôle a 3 dispositions différentes:
- Unique pour une seule colonne d’éléments, auquel cas la largeur de l’élément correspondra à la largeur du contrôle.
- Multi Top To Bottom autorise plusieurs colonnes et utilisera l’espace vertical disponible avant de passer à la colonne suivante, offrant un défilement vertical.
- Multi Left To Right autorise également plusieurs colonnes mais utilise une disposition et un mode de défilement horizontal différents (voir l’image ci-dessous).
En termes généraux, vous pouvez utiliser l’événement OnClick pour n’importe quel contrôle de la liste de contrôle. Le contrôle prend en charge les options High-DPI et les styles VCL et il est entièrement activé pour les liaisons dynamiques.
Le nouveau composant TControlListButton
Nous ne pouvons pas utiliser TSpeedButton directement sur le panneau, car le contrôle ne gère pas les interactions spéciales telles que le changement d’état du bouton. Pour les contrôles, qui peuvent avoir différents états, nous avons ajouté une classe spéciale TControlListControl (héritée de TGraphicControl). Vous pouvez créer de nouveaux contrôles qui héritent de la classe TControlListControl et utiliser des événements de souris pour leurs éléments. C’est l’approche utilisée par TControlListButton – l’analogue d’un TSpeedButton qui peut être utilisé avec TControlList. Ce bouton a 3 styles – bouton poussoir, bouton outil et lien.
Nouveau contrôle VCL TNumberBox
Le nouveau contrôle VCL TNumberBox est un contrôle d’entrée numérique d’aspect moderne modelé sur le contrôle WinUI NumberBox de la plate-forme Windows. Le contrôle prend en charge l’entrée de nombres entiers, de nombres à virgule flottante avec un ensemble donné de chiffres décimaux et une mise en forme appropriée, ainsi que des valeurs monétaires:
L’utilisateur peut augmenter ou diminuer la valeur à l’aide des boutons fléchés ou autoriser les touches ou la molette de la souris, et également augmenter et diminuer d’une grande valeur à l’aide des touches Page précédente et Page suivante. Le composant comprend un bouton de rotation facultatif (configuré avec la propriété SpinButtonOptions Placement), qui peut être compact, intégré ou désactivé, comme illustré ici respectivement:
Le composant prend également en charge l’évaluation d’expression simple; si activé, un utilisateur peut entrer une expression comme 40 + 2 et le contrôle la remplacera par le résultat. Le contrôle prend en charge le calcul des calculs en ligne des équations de base telles que la multiplication, la division, l’addition et la soustraction (permettant l’utilisation de parenthèses). Notez que vous pouvez utiliser les symboles + et – à la fois comme opérations binaires et unaires, vous pouvez donc taper -23 ou + 23, vous pouvez écrire 55 + 23 et 55-23, et même les combiner comme dans 53 ++ 23 ou 53 –23, qui est évalué comme 53 – (-23). ajoute ainsi les deux valeurs.
Restez à l’écoute
C’est tout pour le moment. Connectez-vous au webinaire d’aperçu de demain et (une fois publié) téléchargez la version d’essai pour expérimenter ces nouveaux contrôles VCL.
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition