IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ DelphiConsultez toutes les FAQ

Nombre d'auteurs : 124, nombre de questions : 929, dernière mise à jour : 31 décembre 2023  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).

Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.

L'équipe Delphi de Developpez.com.

SommaireLiveBindings (2)
précédent sommaire suivant
 

Il nous est à tous venu le besoin de cacher un libellé ou tout autre composant visuel sur une forme selon une valeur de champ.
Il est bien sûr possible de faire ceci par code dans un évènement comme l’OnChange (du champ ou de la source de données).
Les liaisons de champs via LiveBindings nous sont proposées depuis la version XE2, aussi bien pour VCL que FMX.
L'utilisation en est incontournable avec FMX pour les composants visuels d'affichage de données, sauf à écrire beaucoup de code, impliquant donc plus de risque d'erreurs de programmation.
S'il est très facile de lier visuellement une valeur de champ à une propriété Text d'un composant, il n'en est pas de même pour la propriété Visible.

Pour les besoins de la démonstration, j'utiliserai un TLabel et une source de données (ici un TFDQuery) contenant un champ alphanumérique.

Première étape  : lier la propriété text du TLabel avec le champ.

Pour cela, l'utilisation du Concepteur LiveBindings suffit. Cette utilisation va mettre sur la forme deux composants supplémentaires  : un TBindingList et un TBindSourceDB.



Deuxième étape : accéder à la propriété Visible du TLabel.

Cliquer sur les ... du cadre du composant et rechercher et cocher la propriété Visible dans la liste qui apparaît :



Troisième étape : établir le lien entre la propriété et le champ.



Visuellement, c'est simplissime, un simple mouvement de souris et la liaison est établie entre le champ et la propriété.
Cependant, le champ n'étant pas un booléen, cela ne peut fonctionner ; il nous faut alors faire quelque chose pour convertir la valeur du champ lié en valeur True ou False.
C'est à cela que va servir la propriété CustomFormat du lien. Nous utiliserons pour cela une des méthodes par défaut des LiveBindings : IfThen (attention, CustomFormat est sensible à la casse) :

Code : Sélectionner tout
1
2
 
IfThen(%s='0', False, True)
Il aurait été aussi possible d'utiliser les méthodes IfAny ou IfAll, qui retournent une valeur booléenne, moins explicite pour la démonstration :
Code : Sélectionner tout
1
2
3
 
IfAll(%s<>'0') 
IfAny(%s<>'0')
Les méthodes par défaut des livebindings peuvent se retrouver via le lien http://docwiki.embarcadero.com/RADSt...ndings_Methods mais aussi de manière plus simple en sélectionnant un TBindingList puis sur la liste de la propriété Methods de ce composant.

Mis à jour le 22 novembre 2015 SergioMaster

Il nous est tous venu le besoin d'avoir à faire apparaître une valeur numérique d'un champ selon un certain format  : nombre de zéros significatifs, nombre de décimales ou encore avec des signes.
La méthode classique : utiliser la propriété de formatage du champ ; cependant, pour cela il faut que les champs soient déclarés.
L'autre solution consiste à utiliser une des méthodes par défaut des LiveBindings dans la propriété CustomFormat du lien : Format.

Cette dernière a presque la même syntaxe que la fonction format de Delphi.

Le nom de cette méthode est sensible à la casse.

Pour une valeur flottante, on renseignera la propriété CustomFormat ainsi :

Code : Sélectionner tout
1
2
 
Format('%%.2f', value)
Notez bien le double % qui sera nécessaire. Il semblerait que cette méthode agisse en deux passes : la première pour détecter les variables telle que %s se référant à la valeur du champ en tant que string.

Pour un pourcentage, la façon la plus efficace sera de rentrer la propriété suivante :
Code : Sélectionner tout
1
2
 
Format('%%3.2f', value)+' %%'

Mis à jour le 25 novembre 2015 SergioMaster

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.