Delphi, C++ Builder & .NET Fait partie de sgcUI

sgcEditors, les contrôles de saisie modernes pour Delphi, C++ Builder & .NET

Quinze champs de formulaire qui ont le même aspect sur chaque écran et se comportent comme des champs natifs : un calendrier avec de vraies règles de réservation, des sélecteurs de date et d'heure, un curseur à plage, un sélecteur de couleur, des pastilles, des étoiles, un champ numérique, des champs à boutons, de recherche, à masque et monétaire, une liste multicolonne et un mémo, plus un interrupteur pour les réglages, un champ d'adresse IP, un champ de durée, un sélecteur de police, une liste à cases à cocher et une liste double, un NumPad et un clavier à l'écran pour panneaux tactiles. Saisis une date dans ta propre langue, contrôle toute la fiche avant d'enregistrer, passe au thème sombre avec une seule propriété et lie les éditeurs à un jeu de données.

Quinze contrôles pour VCL, FireMonkey, WinForms, WPF, AvaloniaValidation de formulaire dans toutes les éditionsSaisie de texte native avec IME et presse-papiersÉdition .NET Community gratuiteInclus dans sgcUI Standard
Démo Gallery avec le calendrier mensuel, les sélecteurs de date, d'heure et de date et heure, le champ numérique, la notation, le curseur à plage, la saisie de jetons et le sélecteur de couleur

Des champs de saisie à la hauteur de tes fiches

Seize fonctionnalités qui rendent la saisie des dates, des montants, des codes, des choix et des étiquettes rapide et difficile à rater.

Les contrôles

Quinze champs de saisie qui couvrent les champs des vrais formulaires métier, chacun disponible pour VCL, FireMonkey et .NET.

La démo Gallery avec les contrôles sgcEditors

Les contrôles

Quinze champs de saisie modernes dans un seul paquet

Les formulaires de réservation, les pages de paramètres et les filtres réclament toujours les mêmes champs : un calendrier, un sélecteur de date ou d'heure, un curseur, une couleur, une liste d'étiquettes, une note en étoiles, un nombre avec unités, un code à masque, un prix, un choix dans une longue liste, une zone de recherche et un commentaire. sgcEditors te donne les quinze sous forme d'une famille cohérente. Chaque contrôle existe pour VCL et FireMonkey avec les mêmes propriétés publiées et les mêmes événements, et pour WinForms, WPF et Avalonia avec les mêmes noms, donc ce que tu apprends sur un contrôle vaut pour les autres. Ils partagent un seul thème, une seule couleur d'accentuation et un seul modèle de clavier. Dépose-les depuis la page SGC Editors de la palette et ils ont le bon aspect dès la première exécution.

  • TsgcVCLMonthCalendar, TsgcVCLDatePicker, TsgcVCLTimePicker, TsgcVCLDateTimePicker
  • TsgcVCLRangeSlider et TsgcVCLSpinEdit pour les nombres
  • TsgcVCLColorPicker, TsgcVCLTokenEdit, TsgcVCLRating
  • TsgcVCLButtonEdit, TsgcVCLSearchEdit, TsgcVCLMaskEdit, TsgcVCLCurrencyEdit, TsgcVCLLookupEdit, TsgcVCLMemo
  • Tous descendent de TsgcVCLCustomEditor
Lire la rubrique d'aide
Un calendrier qui suit de vraies règles de réservation

Les contrôles

Un calendrier qui suit de vraies règles de réservation

Un hôtel, une clinique ou un guichet de location n'accepte jamais n'importe quelle date. Le calendrier mensuel sélectionne une date ou, avec SelectionMode sur esmRange, une plage de jours, et MaxRangeDays plafonne la longueur de cette plage. Les jours hors de MinDate et MaxDate, ceux listés dans DisabledDates, les DisabledWeekDays comme les week-ends et tout jour que ton gestionnaire OnIsDateDisabled refuse sont barrés et ne peuvent pas être choisis. Les numéros de semaine ISO 8601 et les vues mois, année et décennie aident les utilisateurs à sauter loin dans le temps. Le même calendrier alimente la liste déroulante des sélecteurs de date, donc les règles s'appliquent partout où une date est choisie.

  • SelectionMode : esmSingle ou esmRange
  • MinDate, MaxDate et MaxRangeDays
  • DisabledDates, DisabledWeekDays, OnIsDateDisabled
  • ShowWeekNumbers pour les numéros de semaine ISO
Lire la rubrique d'aide
Plages de prix et de dates avec deux poignées

Les contrôles Enregistrée uniquement

Plages de prix et de dates avec deux poignées

Les filtres de prix, de poids ou de distance se lisent mieux comme une plage sur un rail. Le curseur à plage choisit une valeur entre Min et Max avec une poignée, ou une plage avec deux poignées en RangeMode, à l'horizontale ou à la verticale. Il dessine des graduations, des libellés et une info-bulle avec la valeur au-dessus de la poignée déplacée, et un clic sur le rail déplace la poignée la plus proche. Les poignées ne se croisent jamais, Step cale les valeurs et MinRange garde un écart minimal, donc le filtre ne peut jamais devenir vide par accident. Les valeurs et les libellés suivent les paramètres régionaux du contrôle, séparateurs décimaux et de milliers compris.

  • RangeMode avec Value et EndValue
  • Min, Max, Step et MinRange
  • TickInterval, ShowLabels, ShowValueTip
  • LabelFormat ou OnFormatLabel pour les devises

Community : une seule poignée est dessinée et modifiable ; EndValue est conservée mais pas affichée.

Lire la rubrique d'aide
Étiquettes et pastilles avec saisie semi-automatique

Les contrôles Enregistrée uniquement

Étiquettes et pastilles avec saisie semi-automatique

Les étiquettes, les destinataires et les compétences sont des listes, pas une seule ligne de texte. La saisie de jetons dessine chaque entrée comme une pastille avec un bouton de suppression, renvoie les pastilles à la ligne et défile quand elles ne tiennent pas. Un délimiteur, Entrée, Tab ou la perte du focus transforme le texte saisi en pastille, et coller a, b, c en fait trois. OnValidateToken normalise ou refuse chaque entrée, et AllowDuplicates, CaseSensitive et MaxTokens fixent les règles. Dans les versions Registered, une liste de saisie semi-automatique propose des entrées pendant la frappe. AddToken, RemoveToken et Clear modifient la liste depuis le code quand tu charges ou enregistres une fiche.

  • Tokens contient les pastilles ; Delimiters en termine une
  • OnValidateToken et InvalidTokens vérifient chaque entrée
  • AutoCompleteItems et AutoCompleteMinChars pour les suggestions
  • OnTokenAdded et OnTokenRemoved signalent les changements

Community : les pastilles, la validation et les limites fonctionnent ; la liste de saisie semi-automatique ne s'ouvre jamais.

Lire la rubrique d'aide

Les contrôles Enregistrée uniquement

Choisis n'importe quelle couleur, avec alpha

Les éditeurs de thème, les réglages de graphiques et les concepteurs d'étiquettes ont besoin de plus qu'une palette fixe. Le sélecteur de couleur empile une grille de nuanciers, un carré saturation et valeur, une barre de teinte, une barre alpha et une ligne avec un aperçu et un champ hexadécimal, et Parts choisit lesquels apparaissent. Le champ hexadécimal accepte #RGB, #RGBA, #RRGGBB et #RRGGBBAA. Le sélecteur garde la teinte à part de la couleur, donc un gris conserve sa teinte et le carré ne saute jamais pendant le glissement. Définis ta palette de marque comme nuanciers et les utilisateurs gardent le sélecteur complet à un clic.

  • Parts avec ecpSwatches, ecpHSV, ecpAlpha, ecpHex
  • Swatches et SwatchColumns pour ta palette
  • SelectedColor comme valeur ARGB
  • OnChangeComplete quand l'utilisateur relâche la souris

Community : nuanciers et hexadécimal seulement ; le carré HSV et la barre alpha ne sont pas dessinés et l'alpha vaut toujours $FF.

Lire la rubrique d'aide

Les contrôles

Boutons, recherche et notes dans le même style

Beaucoup de champs ont besoin d'un bouton à côté du texte : parcourir un fichier, ouvrir une boîte de dialogue, effacer la valeur. Le champ à boutons place des boutons parcourir, liste déroulante, recherche, effacer, plus, moins, texte ou dessinés par le propriétaire de chaque côté d'un champ natif, chacun avec son propre raccourci, et les lecteurs d'écran listent chaque bouton par son nom et peuvent l'actionner. Le champ de recherche déclenche OnSearch après une pause dans la frappe ou aussitôt sur Entrée, et repropose les recherches précédentes dans un historique déroulant. Le mémo est un éditeur multiligne thématisé avec un texte indicatif, un compteur de caractères avec une limite facultative, et une hauteur qui suit les lignes entre MinLines et MaxLines.

  • TsgcVCLButtonEdit avec Buttons et OnButtonClick
  • TsgcVCLSearchEdit avec SearchDelay, History et OnSearch
  • TsgcVCLMemo avec ShowCounter, MaxLength, AutoHeight
Lire la rubrique d'aide

Les contrôles

Saisie à masque et monétaire que tu peux partager avec .NET

Les numéros de téléphone, les codes postaux, les numéros de compte et les prix demandent un format fixe. Le champ à masque accepte un masque de saisie dans la syntaxe EditMask de Delphi ou dans la syntaxe MaskedTextBox de .NET, donc un même masque se comporte de la même façon dans une application Delphi et dans une application .NET : les littéraux restent fixes, chaque position n'accepte que son type de caractère, et Text renvoie la valeur avec ou sans les littéraux. Le champ monétaire stocke une valeur Currency exacte, un decimal en .NET, sans virgule flottante. Il affiche le format monétaire complet des paramètres régionaux tant qu'il n'a pas le focus, et un nombre groupé avec le symbole ou le code ISO pendant la frappe. MinValue, MaxValue et AllowNegative maintiennent le montant dans la plage.

  • EditMask et MaskSyntax : emxDelphi ou emxDotNet
  • IsComplete, EditText et SaveLiterals
  • Value, Decimals, CurrencyCode, SymbolMode
  • PositivePattern et NegativePattern
Lire la rubrique d'aide

Les contrôles

Choisir une ligne dans une liste multicolonne

Les clients, les produits et les pays se choisissent par leur nom mais se stockent par leur clé. Le champ de liste de choix ouvre une liste déroulante multicolonne avec une ligne d'en-tête facultative et la filtre pendant la frappe. Le champ affiche la colonne d'affichage et KeyValue conserve la clé, par exemple le code d'un pays derrière son nom. Les lignes viennent de Items, une ligne par entrée avec les cellules séparées par |, ou de OnGetItems pour une recherche sur un serveur, et OnNotInList décide de ce qui se passe avec un texte qui ne correspond à aucune ligne. En .NET, les lignes peuvent aussi venir de n'importe quelle collection via ItemsSource, DisplayMember et ValueMember, sur WinForms, WPF et Avalonia.

  • Columns avec Title, Width et Alignment
  • KeyColumn, DisplayColumn et KeyValue
  • ShowHeader, MatchMode, DropDownRows
  • .NET : ItemsSource, SelectedValue dans toutes les éditions
Lire la rubrique d'aide

Les contrôles

Un interrupteur pour les réglages et les options

Les pages de réglages et les panneaux d'options activent et désactivent des fonctions. L'interrupteur est la forme moderne de la case à cocher : une piste arrondie avec un curseur rond qui glisse vers le nouvel état, un libellé facultatif de chaque côté et le texte On et Off dans la piste si tu le souhaites. Il est dessiné sur mesure, prend la couleur d'accentuation du thème lorsqu'il est activé et s'adapte au DPI. Un changement de l'utilisateur passe d'abord par OnChanging, si bien qu'une règle de ta fiche peut le refuser, et OnChange s'exécute après chaque changement, par l'utilisateur ou par le code.

  • TsgcVCLToggleSwitch et TsgcFMXToggleSwitch, et en .NET TsgcWinFormsToggleSwitch, TsgcWpfToggleSwitch et TsgcAvaloniaToggleSwitch
  • Checked, Caption, CaptionPosition, ShowText avec OnText et OffText, ReadOnly et Animated
  • TrackOnColor, TrackOffColor et ThumbColor, ou les couleurs du thème, et SwitchWidth et SwitchHeight pour la taille de la piste
  • OnChanging annule un changement de l'utilisateur avec Allow, OnChange se déclenche après chaque changement et Toggle change l'état comme le ferait l'utilisateur
  • Clic, glisser du curseur, Espace, Gauche et Droite, fiches de droite à gauche et une case à cocher avec le pattern Toggle pour les lecteurs d'écran
  • En WPF et Avalonia, Checked se lie dans les deux sens par défaut, et en WinForms il déclenche CheckedChanged pour la liaison de données

L'interrupteur est présent dans toutes les éditions, Community comprise.

Lire la rubrique d'aide

Les contrôles

Un champ d'adresse IP pour IPv4 et IPv6

Les réglages réseau, la configuration d'appareils et les règles de pare-feu demandent des adresses. En IPv4, le champ d'adresse IP affiche quatre champs d'octet séparés par des points et passe au champ suivant pendant la saisie, si bien qu'une adresse se saisit aussi vite que dans un champ simple et reste toujours bien formée : une valeur supérieure à 255 est ramenée à la limite, et les champs vides passent à 0 quand le focus quitte le contrôle. En IPv6, c'est un seul champ de texte qui accepte les chiffres hexadécimaux, les deux-points et les points, valide le texte et l'écrit sous la forme canonique de la RFC 5952 quand le focus quitte le contrôle, si bien que 2001:DB8:0:0:0:0:2:1 devient 2001:db8::2:1.

  • TsgcVCLIPAddressEdit et TsgcFMXIPAddressEdit, et en .NET TsgcWinFormsIPAddressEdit, TsgcWpfIPAddressEdit et TsgcAvaloniaIPAddressEdit
  • Mode choisit IPv4 ou IPv6, Address est la valeur et Octets lit ou définit un champ d'une adresse IPv4
  • IsValid indique si l'adresse est complète, et avec Required une adresse vide ou incomplète affiche le cadre d'erreur du thème
  • Un point ou un troisième chiffre passe au champ suivant, Retour arrière au début d'un champ revient en arrière, Gauche et Droite franchissent les limites des champs, et une adresse collée remplit tous les champs
  • OnChange se déclenche après chaque changement, Clear vide l'adresse, et les lecteurs d'écran voient un champ avec le pattern Value
  • En WPF et Avalonia, Address est lié dans les deux sens par défaut, et en WinForms il déclenche AddressChanged pour la liaison de données

Le champ d'adresse IP est présent dans toutes les éditions, Community comprise.

Lire la rubrique d'aide

Les contrôles

Un champ de durée pour les intervalles de temps

Un délai d'attente, un intervalle ou une durée d'exécution est une durée, pas une heure du jour. Le champ de durée l'affiche en segments, jours, heures, minutes, secondes et millisecondes, et l'utilisateur modifie un segment à la fois en saisissant, avec les flèches, la molette de la souris ou les boutons de pas. Un pas se reporte sur le segment suivant, si bien que 59 secondes plus une font une minute, et le segment le plus haut affiché n'est pas borné, si bien que sans les jours 50 heures s'affichent 50:00:00.

  • TsgcVCLTimeSpanEdit et TsgcFMXTimeSpanEdit, et en .NET TsgcWinFormsTimeSpanEdit, TsgcWpfTimeSpanEdit et TsgcAvaloniaTimeSpanEdit
  • Value en millisecondes en Delphi et un TimeSpan en .NET, avec les parties Days, Hours, Minutes, Seconds et Milliseconds
  • Segments choisit les segments affichés et DisplayFormat écrit la valeur comme une horloge, 1.02:30:05.250, ou avec des unités, 1d 2h 30m 5s 250ms
  • MinValue et MaxValue bornent la valeur, AllowNegative accepte un signe moins initial, et Increment et ShowButtons règlent le pas et les boutons de pas
  • Haut et Bas font avancer le segment ayant le focus, Page précédente et Page suivante le font de dix en dix, Gauche, Droite et Tab passent d'un segment à l'autre, et les lecteurs d'écran voient un spinner avec le pattern RangeValue en secondes
  • En WPF et Avalonia, Value est lié dans les deux sens par défaut, et en WinForms il déclenche ValueChanged pour la liaison de données

Le champ de durée est présent dans toutes les éditions, Community comprise.

Lire la rubrique d'aide

Les contrôles

Un sélecteur de police avec aperçu de chaque famille

Les concepteurs d'états, les éditeurs d'étiquettes et les pages de réglages laissent l'utilisateur choisir une police. Le sélecteur de police est un champ avec un bouton de liste déroulante dont la liste dessine chaque famille dans sa propre police. La saisie filtre les familles, les familles choisies le plus récemment sont listées en premier au-dessus d'un séparateur, et un filtre ne garde que les familles à chasse fixe, pour un éditeur de code ou un terminal. La liste vient de la plateforme jusqu'à ce que l'application la remplisse.

  • TsgcVCLFontPicker et TsgcFMXFontPicker, et en .NET TsgcWinFormsFontPicker, TsgcWpfFontPicker et TsgcAvaloniaFontPicker
  • FontName est la valeur, Fonts la liste des familles et RefreshFonts la recharge après l'installation d'une police
  • ShowPreview dessine chaque nom dans sa propre police et PreviewText ajoute un texte d'exemple après le nom
  • RecentCount et RecentFonts gardent les familles choisies récemment, pour que l'application les enregistre et les recharge
  • FontFilter garde les familles à chasse fixe, et Alt+Bas ouvre la liste, Entrée ou un clic choisit une famille et Échap la ferme
  • Le sélecteur de police Delphi dessine les polices de l'aperçu sous Windows, en VCL et en FireMonkey ; sur les autres plateformes FireMonkey, les noms sont listés dans la police du thème
  • En WPF et Avalonia, FontName est lié dans les deux sens par défaut

Le sélecteur de police est présent dans toutes les éditions, Community comprise.

Lire la rubrique d'aide

Les contrôles

Une liste à cases à cocher pour les longues listes d'options

Les colonnes d'une grille, les filtres d'un état ou les modules d'une licence sont de longues listes d'options. La liste à cases à cocher est une liste défilante avec une case sur chaque ligne, décochée, cochée ou grisée, et un indicateur d'activation par élément. Une ligne d'en-tête facultative Tout sélectionner coche ou décoche chaque élément activé, et une zone de filtre facultative masque les lignes qui ne contiennent pas le texte saisi sans changer leur état. Seules les lignes visibles sont dessinées, si bien qu'une liste de 10000 éléments reste rapide.

  • TsgcVCLCheckListBox et TsgcFMXCheckListBox, et en .NET TsgcWinFormsCheckListBox, TsgcWpfCheckListBox et TsgcAvaloniaCheckListBox
  • Items avec Checked, State et ItemEnabled par élément, et AllowGrayed pour le troisième état
  • ShowCheckAll affiche la ligne Tout sélectionner à trois états et ShowFilter la zone de filtre
  • CheckAll, UncheckAll et CheckedCount, et OnClickCheck avant OnChange pour un changement de l'utilisateur
  • Espace bascule la ligne ayant le focus, Ctrl+A coche tous les éléments, une lettre saute à l'élément suivant qui commence par elle, et les lecteurs d'écran voient des éléments de liste avec le pattern Toggle
  • En .NET, CheckedItems et CheckedIndices sont des listes en lecture seule pour la liaison, et l'événement ItemCheck arrive avant Change

La liste à cases à cocher est présente dans toutes les éditions, Community comprise.

Lire la rubrique d'aide

Les contrôles

Une liste double pour choisir et ordonner des éléments

Choisir les colonnes d'un état, les membres d'un groupe ou les étapes d'un processus revient à déplacer des éléments d'une liste vers une autre. La liste double dessine la liste Disponibles à gauche et la liste Sélectionnés à droite, avec entre elles des boutons qui déplacent les lignes sélectionnées ou toutes les lignes, et des boutons Monter et Descendre du côté extérieur qui réordonnent la liste Sélectionnés. Un double-clic ou un glissement déplace un élément vers l'autre liste, et un glissement dans la liste Sélectionnés la réordonne.

  • TsgcVCLDualListBox et TsgcFMXDualListBox, et en .NET TsgcWinFormsDualListBox, TsgcWpfDualListBox et TsgcAvaloniaDualListBox
  • AvailableItems et SelectedItems, AvailableCaption et SelectedCaption, ShowCaptions et ShowReorderButtons
  • SortAvailable insère dans l'ordre les éléments ramenés, ShowFilter ajoute une zone de filtre au-dessus de chaque liste, et ReadOnly garde la sélection et refuse les déplacements
  • MoveToSelected, MoveAllToSelected, MoveToAvailable, MoveAllToAvailable, MoveUp et MoveDown font ce que font les boutons
  • OnMoving peut laisser un élément où il est, et OnChange se déclenche une fois par opération
  • Clic, Ctrl+clic, Maj+clic et Ctrl+A sélectionnent, Tab passe d'une liste à l'autre, Ctrl+Droite et Ctrl+Gauche déplacent, Ctrl+Haut et Ctrl+Bas réordonnent, et la vue est inversée dans les fiches de droite à gauche
  • En WPF et Avalonia, SelectedItems est lié dans les deux sens par défaut, et en WinForms il déclenche SelectedItemsChanged

La liste double est présente dans toutes les éditions, Community comprise.

Lire la rubrique d'aide

Saisie, langue et données

Une saisie rapide pour les utilisateurs au clavier, un contrôle de chaque champ avant l'enregistrement, la bonne langue pour chaque utilisateur et un lien direct vers tes jeux de données.

Saisie, langue et données

De la vraie frappe, pas seulement des clics

Les opérateurs de saisie tapent les dates, ils ne cliquent pas dans des calendriers. Chaque champ de texte de sgcEditors est un vrai contrôle d'édition de la plateforme, donc la composition IME pour le japonais, le chinois et le coréen, le presse-papiers, l'annulation, le menu contextuel et les lecteurs d'écran fonctionnent tous. L'analyse est tolérante : barres obliques, traits d'union, points, deux-points, virgules ou espaces séparent les champs, les noms de mois et de jours des paramètres régionaux sont compris et les années à deux chiffres sont ramenées au bon siècle. Haut et Bas font défiler le segment sous le curseur, et un texte illisible déclenche OnParseError.

  • DisplayFormat avec les segments d, m, y, h, n, s
  • OnParseError pour accepter ou refuser une saisie inhabituelle
  • AllowEmpty et TextHint pour les champs facultatifs
  • Le champ numérique accepte . et , comme séparateur décimal
Lire la rubrique d'aide

Saisie, langue et données

Un NumPad pour panneaux tactiles

Un panneau tactile en atelier n'a pas de clavier, et le clavier du système couvre la moitié de l'écran. Le NumPad saisit un nombre avec des touches assez grandes pour un doigt ou un gant. Dépose un pavé ancré sur la fiche et il écrit dans le contrôle qui a le focus, ou attache un pavé déroulant à un contrôle et un appui sur le contrôle ouvre le pavé juste en dessous. La cible n'a besoin d'aucun changement : le pavé lit sa plage et ses décimales et écrit la valeur comme une modification de l'utilisateur, si bien que l'arrondi, les limites et OnChange de la cible s'exécutent comme si l'utilisateur avait tapé.

  • TsgcVCLNumPad ancré et TsgcVCLNumPadPopup en liste déroulante, aussi pour FireMonkey et en .NET
  • Saisit dans le champ numérique, le champ monétaire, un champ standard et les jauges bouton rotatif et curseur de sgcGauges
  • Associate choisit la cible, ou le pavé suit le contrôle qui a le focus
  • Un afficheur avec le nombre saisi et une ligne de limites comme Min 0 Max 120

Le NumPad est dans toutes les éditions, Community comprise. Il fait partie du pack HMI de sgcUI pour les écrans d'opérateur.

Lire la rubrique d'aide

Saisie, langue et données

Un clavier à l'écran pour bornes et écrans tactiles

Une borne, un terminal en libre-service ou un panneau d'opérateur a besoin de noms, de codes et de notes en plus des nombres. Le clavier à l'écran est un clavier complet construit sur le même chemin de saisie que le NumPad. Ancre-le sur la fiche et il écrit dans le contrôle qui a le focus, ou attache un clavier déroulant qui s'ouvre sous un champ quand ce champ prend le focus. Le clavier ne prend jamais le focus, si bien que le curseur et la sélection de la cible restent où ils sont, et un champ standard, un mémo et les contrôles sgcEditors n'ont besoin d'aucun changement.

  • TsgcVCLKeyboard ancré et TsgcVCLKeyboardPopup en liste déroulante, aussi pour FireMonkey et en .NET pour WinForms, WPF et Avalonia
  • Associate choisit la cible, ou le clavier suit le focus. AutoPopup, AutoPopupAll, PopupPosition et CloseOnEnter pilotent la liste déroulante
  • Pages de lettres, de symboles et de chiffres, avec Maj, Verr. Maj, AltGr et touches mortes pour les lettres accentuées
  • Dix dispositions intégrées (en-US, en-GB, es-ES, fr-FR, de-DE, it-IT, pt-BR, nl-NL, pl-PL et tr-TR), vos propres dispositions avec sgcKeyboardRegisterLayout et une touche de disposition qui parcourt Layouts
  • OnKeyText modifie ou annule le texte avant son écriture, et OnEnterKey s'exécute après Entrée
  • Thèmes, fiches de droite à gauche et touches annoncées par les lecteurs d'écran

Le clavier à l'écran est dans toutes les éditions, Community comprise. Il fait partie du pack HMI de sgcUI pour les écrans d'opérateur et les bornes.

Lire la rubrique d'aide
Chaque contrôle parle la langue de l'utilisateur

Saisie, langue et données

Chaque contrôle parle la langue de l'utilisateur

Les équipes internationales et les produits multilingues ont besoin de dates qui se lisent naturellement pour chaque utilisateur. Chaque contrôle a ses propres FormatSettings, remplis depuis les paramètres régionaux de l'utilisateur et modifiables à l'exécution, donc deux contrôles d'une même fiche peuvent même utiliser deux langues. Le calendrier et les sélecteurs y prennent les noms de jours et de mois, les formats de date et d'heure, les chaînes AM et PM et les séparateurs. FirstDayOfWeek et WeekNumbering suivent les paramètres régionaux ou ton choix, et les nombres utilisent les bons séparateurs décimaux et de milliers. Les unités, les infobulles et les noms accessibles restent tes propres propriétés, donc tu les traduis avec le reste de la fiche.

  • FormatSettings par contrôle
  • FirstDayOfWeek : efdLocale ou efdMonday forcé
  • WeekNumbering : ewnISO8601 par défaut
  • TsgcEditorLocale pour les modèles sans interface
  • De droite à gauche pour l'arabe et l'hébreu : les boutons d'incrément, de liste déroulante et d'effacement passent de l'autre côté, les curseurs, les notes et le calendrier s'écoulent depuis la droite, et le champ de saisie se lit de droite à gauche
Lire la rubrique d'aide
Des versions liées aux données pour tes fiches

Saisie, langue et données Enregistrée uniquement

Des versions liées aux données pour tes fiches

La plupart des fiches métier Delphi reposent sur un TDataSet, et câbler chaque éditeur à la main est répétitif. Dix contrôles liés aux données se lient directement à un champ via DataSource et DataField : un sélecteur de date, un sélecteur d'heure, un champ numérique, une notation, un curseur à plage dont la seconde poignée se lie à EndDataField, un champ à boutons, un champ à masque qui reprend l'EditMask de son champ, un champ monétaire, un mémo et un champ de liste de choix qui remplit sa liste multicolonne depuis un second jeu de données via ListSource, KeyField et ListField, comme TDBLookupComboBox. Les champs nuls s'affichent vides quand AllowEmpty est activé, et un champ obligatoire signale une valeur vide au validateur. Ils se lient via TsgcEditorFieldLink, qui n'utilise que l'unité DB, donc les versions FireMonkey n'ont pas besoin de LiveBindings. En .NET, les éditeurs WinForms lient un champ via DataSource, DataMember et DataField avec un BindingSource, une DataTable, une DataView ou une List, et les propriétés de valeur WPF et Avalonia se lient dans les deux sens. Dépose-les sur une fiche existante et la logique de jeu de données que tu as déjà continue de fonctionner sans changement.

  • TsgcVCLDBDatePicker, TsgcVCLDBTimePicker, TsgcVCLDBSpinEdit
  • TsgcVCLDBRating et TsgcVCLDBRangeSlider
  • TsgcVCLDBButtonEdit, TsgcVCLDBMaskEdit, TsgcVCLDBCurrencyEdit, TsgcVCLDBMemo, TsgcVCLDBLookupEdit
  • DataSource, DataField, EndDataField ; listes de choix via ListSource, KeyField, ListField
  • WinForms : DataSource, DataMember, DataField ; WPF et Avalonia : les propriétés de valeur se lient dans les deux sens

Dans les paquets .NET Community, les éditeurs WinForms n'ont ni DataSource, ni DataMember, ni DataField ; la liaison WPF et Avalonia et l'ItemsSource du champ de liste de choix fonctionnent dans les deux éditions.

Lire la rubrique d'aide

Saisie, langue et données

Contrôle toute la fiche avant d'enregistrer

Une fiche n'est terminée que lorsque chaque champ est correct. Le validateur de sgcUICore contrôle les contrôles d'une fiche selon des règles : obligatoire, plage, longueur, expression régulière, e-mail, comparaison avec un autre champ et ton propre code. Il trouve les contrôles comme le fait Smart Paste, donc il contrôle aussi bien les contrôles sgcEditors que les champs, mémos, listes déroulantes, cases à cocher et sélecteurs standard, sur VCL, FireMonkey, WinForms, WPF et Avalonia. Le champ à masque signale une valeur incomplète et le champ de liste de choix un texte absent de la liste, sans aucune règle. Les erreurs s'affichent sous forme de cadre dans la couleur d'erreur du thème, d'une icône dont l'info-bulle porte le message et d'une liste récapitulative facultative, et les lecteurs d'écran annoncent le message avec le champ. En .NET, le validateur affiche aussi les erreurs de ta couche de données : IDataErrorInfo et INotifyDataErrorInfo sur WinForms et WPF, les erreurs de validation des données sur Avalonia.

  • TsgcVCLValidator, TsgcFMXValidator, TsgcWinFormsValidator, TsgcWpfValidator, TsgcAvaloniaValidator
  • Règles uvrRequired, uvrRange, uvrLength, uvrRegex, uvrEmail, uvrCompare, uvrCustom
  • Trigger : uvtExit par défaut, uvtChange ou uvtManual ; Validate avant d'enregistrer
  • TsgcVCLValidationSummary liste les erreurs et place le focus sur le champ au clic

Dans toutes les éditions, Community comprise. Les expressions régulières reconnaissent les mêmes textes sur Delphi 7 à 13 et sur .NET.

Lire la rubrique d'aide

Saisie, langue et données

Organise une fiche, ou génère-la à partir de tes données

Le contrôle de mise en page organise les contrôles d'une fiche, ceux de sgcEditors comme les contrôles standard, en groupes, groupes à onglets et colonnes, avec les libellés alignés sur une même largeur, des séparateurs que l'utilisateur peut faire glisser et des mises en page de droite à gauche, et SaveLayout conserve la disposition en JSON. Le formulaire de données s'appuie dessus. Pointe-le sur un TDataSet, ou lie un objet de ta propre classe, et il crée un contrôle sgcEditors par champ, les règles de validation de chaque champ, un récapitulatif des erreurs et un navigateur pour parcourir, ajouter, modifier, supprimer et valider les enregistrements. Smart Paste remplit tout l'enregistrement à partir d'un texte collé, comme une signature d'e-mail ou un bloc d'adresse, et signale les champs qu'il a remplis. En .NET, les formulaires de données WinForms, WPF et Avalonia acceptent une DataTable, une liste ou un objet.

  • TsgcVCLLayoutControl, TsgcFMXLayoutControl; SaveLayout et LoadLayout
  • TsgcVCLDataForm, TsgcFMXDataForm, TsgcWinFormsDataForm, TsgcWpfDataForm, TsgcAvaloniaDataForm
  • Fields : libellé, genre, obligatoire, limites, groupe, onglet et ordre de chaque champ ; BindObject pour une classe
  • SmartPasteFromClipboard, SmartPasteUndo et un bouton Smart Paste sur le navigateur

Le contrôle de mise en page est dans toutes les éditions, Community comprise ; Delphi Community n'a pas de package de conception pour sgcEditors, il y est donc créé en code. Le formulaire de données, ses règles de validation et son Smart Paste ne sont que dans l'édition Enregistrée.

Lire la rubrique d'aide

Clavier, DPI et thèmes

Les détails que vérifient les relecteurs : aucune souris nécessaire, net sur chaque écran et un aspect qui correspond à ton application.

Net sur chaque écran

Clavier, DPI et thèmes

Net sur chaque écran

Les portables à 150 pour cent à côté d'écrans externes à 100 pour cent sont courants aujourd'hui, et des champs flous font cheap. sgcEditors dispose chaque contrôle en pixels logiques à 96 DPI et le dessine à l'échelle de l'écran, sans rien à faire dans ton code. Quand une fiche VCL passe sur un moniteur avec un autre DPI, le champ interne et sa police s'adaptent avec le contrôle, et une liste déroulante est dessinée au DPI du moniteur sur lequel elle s'ouvre. Les images FireMonkey suivent l'échelle de la scène pour Retina et Android.

  • Disposition en pixels logiques, dessin à l'échelle de l'écran
  • Les champs internes se redimensionnent sur WM_DPICHANGED
  • Les listes déroulantes utilisent le DPI de leur propre moniteur
  • SaveToPNG accepte une échelle pour des images nettes
Lire la rubrique d'aide
Compatible clavier et lecteurs d'écran

Clavier, DPI et thèmes

Compatible clavier et lecteurs d'écran

Aucune fonction de sgcEditors ne demande une souris. Les contrôles dessinés prennent eux-mêmes le focus et les contrôles de texte le transmettent à leur champ interne, et un contrôle qui a le focus dessine un anneau de focus de 2 pixels dans la couleur d'accentuation. Dans le calendrier, les flèches avancent d'un jour ou d'une semaine et sautent les jours désactivés, PageUp et PageDown avancent d'un mois, et Maj étend une plage. Dans les sélecteurs, F4 ou Alt+Bas ouvre la liste déroulante et Échap restaure la valeur. Le champ numérique avance avec Haut, Bas, PageUp et PageDown.

  • F4 ou Alt+Bas ouvre chaque liste déroulante
  • Ctrl+Haut fait passer le calendrier aux années et aux décennies
  • Increment et LargeIncrement pour le champ numérique
  • Les champs natifs gardent les lecteurs d'écran fonctionnels
Lire la rubrique d'aide
Clair et sombre avec une seule propriété

Clavier, DPI et thèmes

Clair et sombre avec une seule propriété

Les fiches paraissent abouties quand chaque champ suit le même thème. Chaque contrôle a un Theme, un AccentColor et un TextStyle, et les couleurs du cadre, du survol, de l'état appuyé, de la sélection et de l'état désactivé en sont dérivées, donc une seule propriété change tout l'aspect. Les jetons sont ceux de tous les produits sgcUI, donc des éditeurs placés dans une tuile sgcDashboard ou sous un sgcToolbar s'accordent sans travail supplémentaire. Un contrôle désactivé se fond de lui-même dans l'arrière-plan. Change le thème à l'exécution et chaque éditeur se redessine, prêt pour un réglage de mode sombre.

  • Theme : utDefault (par défaut, suit le thème de l'application), utLight ou utDark
  • AccentColor pour la sélection, les poignées, le remplissage et l'anneau de focus
  • TextStyle pour la taille, le gras et la couleur
  • Les mêmes jetons de thème que toute la suite sgcUI
Lire la rubrique d'aide

Découvre sgcEditors en action

sgcEditors dans les démos de la suite sgcUI : des applications complètes qui fonctionnent hors ligne avec des données simulées intégrées.

Qui construit avec sgcEditors

Formulaires de réservation

Un formulaire de réservation a besoin d'une plage de séjour qui respecte les jours de fermeture, d'un nombre de personnes, d'une heure d'arrivée et peut-être d'une note pour la dernière visite. Le calendrier mensuel applique MinDate, MaxRangeDays et les jours désactivés, le champ numérique compte les personnes, le sélecteur d'heure accepte les heures saisies et la notation recueille l'avis, le tout dans un seul thème. La démo BookingForm construit une réservation d'hôtel avec sept éditeurs et un récapitulatif en direct.

  • Plages du calendrier
  • Champ numérique
  • Notation
Lance la démo BookingForm

Saisie de données sur TDataSet

Les applications métier modifient des enregistrements toute la journée. Les dix éditeurs liés aux données se lient à un champ de TDataSet via DataSource et DataField, le curseur à plage lie les deux extrémités et les champs nuls s'affichent vides. Associés à une vraie saisie au clavier et à l'analyse tolérante, les opérateurs saisissent vite les valeurs et le jeu de données reçoit des données propres. La démo DataAware place les dix éditeurs sur un TClientDataSet à côté d'un TDBGrid et d'un TDBNavigator.

  • Éditeurs liés aux données
  • Saisie de texte
  • Clavier
Lance la démo DataAware

Applications de planification internationales

Les outils de planification utilisés dans plusieurs pays doivent afficher le bon début de semaine, les bons numéros de semaine et les bons noms de mois à chaque utilisateur. Chaque contrôle porte ses propres FormatSettings, donc une même fiche peut afficher un calendrier allemand à côté d'un anglais, et FirstDayOfWeek et WeekNumbering suivent les paramètres régionaux ou ta règle. La démo Calendar bascule entre anglais, allemand, espagnol, français et italien avec une plage limitée à 14 jours.

  • Localisation
  • Numéros de semaine
  • Jours désactivés
Lance la démo Calendar

Un formulaire d'avis en quelques lignes

La même API en Delphi, C++ Builder et C# : une notation, un curseur à plage et une saisie de jetons, qui signalent tous leurs changements via OnChange.

uses
  SysUtils, Classes, Controls, Forms, StdCtrls,
  sgcEditors_Types, sgcEditors_VCL_Value, sgcEditors_VCL_Token;

type
  TFeedbackForm = class(TComponent)
  public
    Stars: TsgcVCLRating;
    Budget: TsgcVCLRangeSlider;
    Tags: TsgcVCLTokenEdit;
    Summary: TLabel;
    procedure EditorChange(Sender: TObject);
  end;

procedure TFeedbackForm.EditorChange(Sender: TObject);
begin
  // OnChange fires for every new value: clicked, dragged or typed
  Summary.Caption := Format('%.1f stars, budget %.0f to %.0f, %d tags',
    [Stars.Value, Budget.Value, Budget.EndValue, Tags.Tokens.Count]);
end;

function CreateFeedbackForm(aForm: TForm): TFeedbackForm;
begin
  Result := TFeedbackForm.Create(aForm);
  Result.Stars := TsgcVCLRating.Create(aForm);
  Result.Stars.Parent := aForm;
  Result.Stars.SetBounds(16, 16, 200, 32);
  Result.Stars.Glyph := ergHeart;
  Result.Stars.Precision := erpHalf;
  Result.Stars.Value := 3.5;
  Result.Stars.OnChange := Result.EditorChange;
  Result.Budget := TsgcVCLRangeSlider.Create(aForm);
  Result.Budget.Parent := aForm;
  Result.Budget.SetBounds(16, 60, 320, 48);
  Result.Budget.Max := 500;
  Result.Budget.Step := 10;
  Result.Budget.RangeMode := True;
  Result.Budget.Value := 80;
  Result.Budget.EndValue := 240;
  Result.Budget.ShowLabels := True;
  Result.Budget.OnChange := Result.EditorChange;
  Result.Tags := TsgcVCLTokenEdit.Create(aForm);
  Result.Tags.Parent := aForm;
  Result.Tags.SetBounds(16, 120, 320, 64);
  Result.Tags.TextHint := 'Add a tag';
  Result.Tags.AutoCompleteItems.CommaText := 'Breakfast,Parking,Pool';
  Result.Tags.AddToken('Breakfast');
  Result.Tags.OnChange := Result.EditorChange;
  Result.Summary := TLabel.Create(aForm);
  Result.Summary.Parent := aForm;
  Result.Summary.SetBounds(16, 196, 320, 20);
  Result.EditorChange(nil);
end;
#include <vcl.h>
#include "sgcEditors_Types.hpp"
#include "sgcEditors_VCL_Value.hpp"
#include "sgcEditors_VCL_Token.hpp"

class TFeedbackHandler : public TObject
{
public:
  TsgcVCLRating *Stars;
  TsgcVCLRangeSlider *Budget;
  TsgcVCLTokenEdit *Tags;
  TLabel *Summary;
  void __fastcall EditorChange(TObject *Sender);
};

void __fastcall TFeedbackHandler::EditorChange(TObject *Sender)
{
  // OnChange fires for every new value: clicked, dragged or typed
  Summary->Caption = FormatFloat("0.0", Stars->Value) + " stars, budget " +
    FormatFloat("0", Budget->Value) + " to " + FormatFloat("0", Budget->EndValue) +
    ", " + IntToStr(Tags->Tokens->Count) + " tags";
}

TFeedbackHandler * __fastcall CreateFeedbackForm(TForm *Form)
{
  TFeedbackHandler *H = new TFeedbackHandler();
  H->Stars = new TsgcVCLRating(Form);
  H->Stars->Parent = Form;
  H->Stars->SetBounds(16, 16, 200, 32);
  H->Stars->Glyph = ergHeart;
  H->Stars->Precision = erpHalf;
  H->Stars->Value = 3.5;
  H->Stars->OnChange = H->EditorChange;
  H->Budget = new TsgcVCLRangeSlider(Form);
  H->Budget->Parent = Form;
  H->Budget->SetBounds(16, 60, 320, 48);
  H->Budget->Max = 500;
  H->Budget->Step = 10;
  H->Budget->RangeMode = true;
  H->Budget->Value = 80;
  H->Budget->EndValue = 240;
  H->Budget->ShowLabels = true;
  H->Budget->OnChange = H->EditorChange;
  H->Tags = new TsgcVCLTokenEdit(Form);
  H->Tags->Parent = Form;
  H->Tags->SetBounds(16, 120, 320, 64);
  H->Tags->TextHint = "Add a tag";
  H->Tags->AutoCompleteItems->CommaText = "Breakfast,Parking,Pool";
  H->Tags->AddToken("Breakfast");
  H->Tags->OnChange = H->EditorChange;
  H->Summary = new TLabel(Form);
  H->Summary->Parent = Form;
  H->Summary->SetBounds(16, 196, 320, 20);
  H->EditorChange(NULL);
  return H;
}
using System;
using System.Drawing;
using System.Windows.Forms;
using esegece.sgcUICore;
using esegece.sgcEditors;

public class FeedbackForm : Form
{
    private readonly TsgcWinFormsRating stars;
    private readonly TsgcWinFormsRangeSlider budget;
    private readonly TsgcWinFormsTokenEdit tags;
    private readonly Label summary = new Label { Location = new Point(12, 196), Size = new Size(320, 20) };

    public FeedbackForm()
    {
        ClientSize = new Size(360, 230);
        stars = new TsgcWinFormsRating { Location = new Point(12, 12), Size = new Size(200, 32) };
        stars.Glyph = TsgcEditorRatingGlyph.ergHeart;
        stars.Precision = TsgcEditorRatingPrecision.erpHalf;
        stars.Value = 3.5;

        budget = new TsgcWinFormsRangeSlider { Location = new Point(12, 56), Size = new Size(320, 48) };
        budget.BeginInit();
        budget.Max = 500;
        budget.Step = 10;
        budget.RangeMode = true;
        budget.Value = 80;
        budget.EndValue = 240;
        budget.EndInit();
        budget.ShowLabels = true;

        tags = new TsgcWinFormsTokenEdit { Location = new Point(12, 116), Size = new Size(320, 64) };
        tags.TextHint = "Add a tag";
        foreach (string s in new[] { "Breakfast", "Parking", "Pool" })
            tags.AutoCompleteItems.Add(s);
        tags.Tokens.Add("Breakfast");

        // OnChange fires for every new value: clicked, dragged or typed
        foreach (TsgcWinFormsCustomEditor e in new TsgcWinFormsCustomEditor[] { stars, budget, tags })
        {
            e.OnChange = s => ShowSummary();
            Controls.Add(e);
        }
        Controls.Add(summary);
        ShowSummary();
    }

    private void ShowSummary() =>
        summary.Text = $"{stars.Value:0.0} stars, budget {budget.Value:0} to {budget.EndValue:0}, {tags.Tokens.Count} tags";
}
dotnet add package esegece.sgcEditors.WinForms

Valider une fiche de commande

Un champ de liste de choix, un champ à masque et un champ monétaire contrôlés par le validateur de sgcUICore. Appelle Validate quand l'utilisateur enregistre : il affiche chaque erreur et place le focus sur le premier champ invalide.

function CreateOrderValidator(aForm: TForm; aCountry: TsgcVCLLookupEdit;
  aPhone: TsgcVCLMaskEdit; aPrice: TsgcVCLCurrencyEdit): TsgcVCLValidator;
var
  oRule: TsgcVCLValidationRule;
begin
  // cells: key | name, the edit shows the name and KeyValue keeps the code
  aCountry.Items.Add('ES|Spain');
  aCountry.Items.Add('FR|France');
  aCountry.Items.Add('DE|Germany');
  aCountry.KeyColumn := 0;
  aCountry.DisplayColumn := 1;
  // Delphi EditMask syntax: the user types the digits, the literals stay
  aPhone.EditMask := '(000) 000-0000;0;_';
  aPrice.CurrencyCode := 'EUR';

  Result := TsgcVCLValidator.Create(aForm);
  Result.Container := aForm;
  Result.Display := [uvdBorder, uvdIcon];
  oRule := TsgcVCLValidationRule(Result.Rules.Add);
  oRule.Control := aCountry;
  oRule.Kind := uvrRequired;
  oRule := TsgcVCLValidationRule(Result.Rules.Add);
  oRule.Control := aPrice;
  oRule.Kind := uvrRange;
  oRule.MinValue := '1';
  oRule.MaxValue := '10000';
end;
public class Country
{
    public string Code { get; set; }
    public string Name { get; set; }
}

public class OrderForm : Form
{
    private readonly TsgcWinFormsLookupEdit country = new TsgcWinFormsLookupEdit();
    private readonly TsgcWinFormsMaskEdit phone = new TsgcWinFormsMaskEdit();
    private readonly TsgcWinFormsCurrencyEdit price = new TsgcWinFormsCurrencyEdit();
    private readonly TsgcWinFormsValidator validator = new TsgcWinFormsValidator();

    public OrderForm()
    {
        country.SetBounds(16, 16, 240, 28);
        phone.SetBounds(16, 56, 240, 28);
        price.SetBounds(16, 96, 240, 28);
        Controls.AddRange(new Control[] { country, phone, price });

        // any list: the edit shows Name, SelectedValue returns Code
        country.ItemsSource = new List<Country>
        {
            new Country { Code = "ES", Name = "Spain" },
            new Country { Code = "FR", Name = "France" }
        };
        country.DisplayMember = "Name";
        country.ValueMember = "Code";
        phone.EditMask = "(000) 000-0000"; // MaskedTextBox syntax by default
        price.Decimals = 2;

        validator.Container = this;
        validator.Rules.Add(new TsgcWinFormsValidationRule
            { Control = country, Kind = TsgcUIValidationRuleKind.uvrRequired });
        validator.Rules.Add(new TsgcWinFormsValidationRule
            { Control = price, Kind = TsgcUIValidationRuleKind.uvrRange, MinValue = "1" });
    }

    public bool Save() => validator.Validate();

Génère un formulaire client à partir d'un jeu de données

Un TsgcVCLDataForm sur un jeu de données ouvert crée les éditeurs, les règles de validation et le navigateur. Définis le genre et le groupe d'un champ, reconstruis, et le bouton Smart Paste du navigateur remplit l'enregistrement depuis le presse-papiers.

uses
  Forms, Controls, DB,
  sgcUICore_AI, sgcEditors_DataForm, sgcEditors_VCL_DataForm;

function CreateCustomerForm(aOwner: TForm; aSource: TDataSource;
  aProvider: TsgcUIAIProvider): TsgcVCLDataForm;
var
  oField: TsgcDataFormField;
begin
  Result := TsgcVCLDataForm.Create(aOwner);
  Result.Parent := aOwner;
  Result.Align := alClient;
  // an open dataset: one field, one editor and one rule per TField
  Result.DataSource := aSource;
  oField := Result.Fields.FindField('EMAIL');
  oField.Kind := edfEmail;
  oField.Required := True;
  oField.Group := 'Contact';
  Result.Fields.FindField('PHONE').Group := 'Contact';
  Result.RebuildEditors;
  // the Smart Paste button of the navigator fills every field from the
  // clipboard; without a provider a local parser reads "Name: value" lines
  Result.Provider := aProvider;
end;

Lance les démos de sgcEditors

Gallery, Calendar, BookingForm, Validation et DataAware sont fournies pour VCL et C++ Builder, avec GalleryFMX et ValidationFMX pour FireMonkey ; l'édition .NET propose Gallery et Validation pour WinForms, WPF et Avalonia, ainsi que BookingForm, BindingWpf et DataAwareWinForms.

Calendar

Calendar

Une plage de 14 jours au plus, des numéros de semaine, des week-ends et des jours fériés désactivés, et un changement de langue entre anglais, allemand, espagnol, français et italien.

BookingForm

Une réservation d'hôtel avec un récapitulatif en direct du séjour, des personnes et de l'heure d'arrivée, une liste de pays, un numéro de téléphone masqué et un validateur qui contrôle les champs des clients avant la réservation. Elle montre comment les contrôles fonctionnent ensemble dans une vraie fiche.

DataAware

Enregistrée uniquement DataAware

Les dix éditeurs liés aux données sur un TClientDataSet avec un TDBGrid et un TDBNavigator, avec un champ de liste de choix alimenté par un second jeu de données et un validateur pour les champs obligatoires. Les contrôles liés aux données demandent l'édition Enregistrée ou l'essai.

GalleryFMX

La galerie construite avec les éditeurs FireMonkey, pour Windows et Android, avec les mêmes propriétés et événements que les contrôles VCL.

Validation

Chaque type de règle sur des contrôles standard et sgcEditors, les trois déclencheurs, l'affichage par cadre et icône et le récapitulatif. ValidationFMX fait de même en FireMonkey, et l'édition .NET propose Validation, ValidationWpf et ValidationAvalonia.

Démos compilées

Des exécutables prêts à lancer pour chaque produit sgcUI, rien à installer.

Télécharger sgcUI_bin.zip →

Guide Getting Started

Cinq démos QuickStart pour Delphi (VCL) sont livrées dans Demos\Editors\Delphi\00.QuickStart. Le guide PDF les parcourt pas à pas : les premiers éditeurs sur un formulaire, la lecture et l'écriture des valeurs, les thèmes, la validation, et une application de contacts bâtie sur un formulaire de données.

Télécharger le guide (PDF, en anglais) →

Où sgcEditors est inclus

sgcEditors est dans toutes les éditions sgcUI, et il est aussi vendu seul. sgcEditors est également inclus dans le pack All-Access.

sgcEditors, package seul

€199 / développeur, code source complet, 1 an de mises à jour.

Acheter sgcEditors → Voir les tarifs →

sgcUI Standard

sgcEditors, sgcGrid, sgcNavigation et sgcToolbar, à partir de €380.

Voir Standard →

sgcUI Professional

Standard plus sgcCharts, sgcDashboard et sgcGauges, à partir de €529.

Voir Professional →

sgcUI Enterprise

Les 17 produits sgcUI, à partir de €699.

Voir Enterprise →

L'édition Community gratuite (esegece.sgcEditors.Community sur NuGet) comprend les quinze contrôles, le contrôle de mise en page et le cadre de validation, mais le sélecteur de couleur n'a ni carré HSV ni barre alpha, la saisie de jetons n'a pas de liste de saisie semi-automatique, le curseur à plage n'a qu'une poignée, et il n'y a ni éditeurs liés aux données ni formulaire de données, ni liaison DataSource de WinForms.

FonctionnalitéCommunity (gratuite)Enregistrée
Les quinze contrôles pour VCL, FireMonkey et .NET✓✓
Validation : règles, affichage des erreurs, récapitulatif (sgcUICore)✓✓
Listes du champ de liste de choix depuis ItemsSource dans WinForms, WPF et Avalonia✓✓
Saisie de texte native, analyse tolérante, localisation✓✓
Plages du calendrier, limites et jours désactivés✓✓
Clavier, DPI, thèmes et rendu sans interface✓✓
NumPad pour panneaux tactiles✓✓
Clavier à l'écran avec dix dispositions✓✓
Interrupteur pour les réglages✓✓
Champ d'adresse IP pour IPv4 et IPv6✓✓
Champ de durée pour les intervalles de temps✓✓
Sélecteur de police avec aperçu de chaque famille✓✓
Liste à cases à cocher avec Tout sélectionner et un filtre✓✓
Liste double avec boutons de déplacement et de tri✓✓
Contrôle de mise en page avec mises en page enregistrées en JSON (créé en code dans Delphi Community)✓✓
Curseur à plage à deux poignées−✓
Carré HSV et barre alpha du sélecteur de couleur−✓
Liste de saisie semi-automatique de la saisie de jetons−✓
Éditeurs liés aux données (Delphi et C++ Builder)−✓
DataSource, DataMember et DataField de WinForms−✓
Formulaire de données à partir d'un TDataSet, d'une classe, d'une DataTable ou d'un objet, avec validation et Smart Paste−✓

Frameworks et plateformes pris en charge

Composants de sgcEditors

Chaque contrôle existe pour VCL, FireMonkey, WinForms, WPF et Avalonia avec les mêmes propriétés et événements.

ContrôleVCL et C++ BuilderFireMonkey.NET
Calendrier mensuelTsgcVCLMonthCalendarTsgcFMXMonthCalendarTsgcWinFormsMonthCalendar
Sélecteur de dateTsgcVCLDatePickerTsgcFMXDatePickerTsgcWinFormsDatePicker
Sélecteur d'heureTsgcVCLTimePickerTsgcFMXTimePickerTsgcWinFormsTimePicker
Sélecteur de date et heureTsgcVCLDateTimePickerTsgcFMXDateTimePickerTsgcWinFormsDateTimePicker
Curseur à plageTsgcVCLRangeSliderTsgcFMXRangeSliderTsgcWinFormsRangeSlider
Sélecteur de couleurTsgcVCLColorPickerTsgcFMXColorPickerTsgcWinFormsColorPicker
Saisie de jetonsTsgcVCLTokenEditTsgcFMXTokenEditTsgcWinFormsTokenEdit
NotationTsgcVCLRatingTsgcFMXRatingTsgcWinFormsRating
Champ numériqueTsgcVCLSpinEditTsgcFMXSpinEditTsgcWinFormsSpinEdit
Champ à boutonsTsgcVCLButtonEditTsgcFMXButtonEditTsgcWinFormsButtonEdit
Champ de rechercheTsgcVCLSearchEditTsgcFMXSearchEditTsgcWinFormsSearchEdit
Champ à masqueTsgcVCLMaskEditTsgcFMXMaskEditTsgcWinFormsMaskEdit
Champ monétaireTsgcVCLCurrencyEditTsgcFMXCurrencyEditTsgcWinFormsCurrencyEdit
Champ de liste de choixTsgcVCLLookupEditTsgcFMXLookupEditTsgcWinFormsLookupEdit
MémoTsgcVCLMemoTsgcFMXMemoTsgcWinFormsMemo
InterrupteurTsgcVCLToggleSwitchTsgcFMXToggleSwitchTsgcWinFormsToggleSwitch
Champ d'adresse IPTsgcVCLIPAddressEditTsgcFMXIPAddressEditTsgcWinFormsIPAddressEdit
Champ de duréeTsgcVCLTimeSpanEditTsgcFMXTimeSpanEditTsgcWinFormsTimeSpanEdit
Sélecteur de policeTsgcVCLFontPickerTsgcFMXFontPickerTsgcWinFormsFontPicker
Liste à cases à cocherTsgcVCLCheckListBoxTsgcFMXCheckListBoxTsgcWinFormsCheckListBox
Liste doubleTsgcVCLDualListBoxTsgcFMXDualListBoxTsgcWinFormsDualListBox
NumPadTsgcVCLNumPad, TsgcVCLNumPadPopupTsgcFMXNumPad, TsgcFMXNumPadPopupTsgcWinFormsNumPad, TsgcWinFormsNumPadPopup
Clavier à l'écranTsgcVCLKeyboard, TsgcVCLKeyboardPopupTsgcFMXKeyboard, TsgcFMXKeyboardPopupTsgcWinFormsKeyboard, TsgcWinFormsKeyboardPopup
Contrôle de mise en pageTsgcVCLLayoutControlTsgcFMXLayoutControlTsgcWinFormsLayoutControl
Formulaire de donnéesTsgcVCLDataFormTsgcFMXDataFormTsgcWinFormsDataForm

La colonne .NET montre les noms WinForms, les mêmes contrôles existent pour WPF et Avalonia avec les préfixes TsgcWpf et TsgcAvalonia. Assistants non visuels : TsgcEditorModel, TsgcEditorLocale et TsgcEditorFieldLink. Les dix éditeurs liés aux données (TsgcVCLDBDatePicker, TsgcVCLDBTimePicker, TsgcVCLDBSpinEdit, TsgcVCLDBRating, TsgcVCLDBRangeSlider, TsgcVCLDBButtonEdit, TsgcVCLDBMaskEdit, TsgcVCLDBCurrencyEdit, TsgcVCLDBMemo et TsgcVCLDBLookupEdit, plus leurs jumeaux FireMonkey) sont réservés à l'édition Enregistrée et existent pour Delphi et C++ Builder ; en .NET, les éditeurs WinForms de l'édition Enregistrée se lient via DataSource, DataMember et DataField. Le contrôle de mise en page est dans toutes les éditions, et le formulaire de données n'est que dans l'édition Enregistrée. Le validateur et le récapitulatif de validation font partie de sgcUICore : TsgcVCLValidator, TsgcFMXValidator, TsgcWinFormsValidator, TsgcWpfValidator et TsgcAvaloniaValidator.

CibleComposantPlateformes
Delphi 7 à 13, VCLÉditeurs TsgcVCLWin32, et Win64 à partir de XE2
Delphi XE6 à 13, FireMonkeyÉditeurs TsgcFMXWindows, macOS, iOS et Android
C++ Builder 2007 à 13Éditeurs TsgcVCL et TsgcFMXEn-têtes .hpp générés et bibliothèques statiques
Delphi 10.2 à 13, indépendant du frameworkModèles, le modèle de mise en page et son JSON, rendu PNG et SVG sans interfaceLinux64 (pas de contrôles Linux)
.NET Framework 4.7.2, .NET 8, 9 et 10Éditeurs WinForms, WPF et AvaloniaBureau Windows et cibles Avalonia

Foire aux questions

Oui. Chaque champ de texte est un vrai contrôle d'édition de la plateforme, un TEdit sans bordure en VCL et un TEdit FMX en FireMonkey, donc la composition IME pour le japonais, le chinois et le coréen, le presse-papiers, l'annulation, le menu contextuel et les lecteurs d'écran fonctionnent sans code spécial. Voir Saisie de texte et IME.

Oui. MinDate et MaxDate fixent les limites, DisabledDates liste les jours fériés, DisabledWeekDays bloque les week-ends et OnIsDateDisabled décide de toute autre règle. Les jours désactivés sont barrés, sautés par le clavier et refusés quand on les saisit dans un sélecteur. La démo Calendar bloque les week-ends et deux jours fériés pour montrer les règles à l'œuvre.

Dix, en Delphi et C++ Builder : le sélecteur de date, le sélecteur d'heure, le champ numérique, la notation, le curseur à plage, le champ à boutons, le champ à masque, le champ monétaire, le mémo et le champ de liste de choix, chacun en contrôle VCL et FireMonkey. Ils demandent l'édition Enregistrée ou l'essai. En .NET, les éditeurs WinForms de l'édition Enregistrée lient un champ via DataSource, DataMember et DataField, et dans les deux éditions les contrôles se lient avec la liaison de données de WinForms, WPF et Avalonia, et le champ de liste de choix reçoit ses lignes depuis ItemsSource.

Les quinze contrôles et le cadre de validation sont inclus. Community laisse de côté le carré HSV et la barre alpha du sélecteur de couleur, la liste de saisie semi-automatique de la saisie de jetons, la seconde poignée du curseur à plage et les membres DataSource, DataMember et DataField des éditeurs WinForms. Les éditeurs Delphi liés aux données sont réservés à l'édition Enregistrée. Voir Éditions.

Oui. Dépose le validateur de sgcUICore sur la fiche, renseigne son Container et ajoute des règles : obligatoire, plage, longueur, expression régulière, e-mail, comparaison et personnalisée. Il contrôle les contrôles sgcEditors ainsi que les champs, mémos, listes déroulantes, cases à cocher et sélecteurs standard, affiche un cadre, une icône et un récapitulatif facultatif, et les lecteurs d'écran annoncent les messages. Appelle Validate avant d'enregistrer. Il est présent dans toutes les éditions, pour VCL, FireMonkey, WinForms, WPF et Avalonia. Voir Validation.

Oui. Chaque contrôle garde sa propre copie de FormatSettings, donc les noms de jours et de mois, les formats, les séparateurs et le premier jour de la semaine peuvent différer d'un contrôle à l'autre. La démo Calendar bascule entre anglais, allemand, espagnol, français et italien à l'exécution, et les numéros de semaine suivent ISO 8601 sauf choix contraire.

Pour les dates et les heures, oui : TsgcVCLDatePicker, TsgcVCLTimePicker et TsgcVCLDateTimePicker sont des champs typés avec un calendrier ou une liste d'heures déroulants. En plus, ils analysent les noms de mois de façon tolérante, respectent les limites et les jours désactivés, suivent le thème sgcUI et sont dessinés au DPI de chaque moniteur.

Oui. C++ Builder 2007 et 2010 à 13 utilisent les mêmes contrôles VCL et FireMonkey via des en-têtes et des bibliothèques générés, et chaque démo Delphi, DataAware comprise, est aussi fournie comme projet C++ Builder. L'onglet de code de cette page montre la même fiche en Delphi, C++ Builder et C#, et chaque exemple a été compilé avant d'être publié.

Aide de sgcEditors

3,000+Développeurs
20+Ans
761+Composants
30+Intégrations d'API
5Plateformes
Garantie satisfait ou remboursé de 30 joursPas satisfait ? Demandez un remboursement intégral dans les 30 jours suivant l'achat. Voir la politique de remboursement

Essaie sgcEditors dès aujourd'hui

L'essai sgcUI inclut sgcEditors et tous les autres produits sgcUI.