Multivars label avec libelle version d4 et +

Soyez le premier à donner votre avis sur cette source.

Vue 4 718 fois - Téléchargée 367 fois

Description

MultiVars Label avec Libelle

Ceci est un composent utile à tous ceux qui désirent afficher une suite de variables dans un label sans se préoccuper du « transtypage » (pour une mise au point d'un programme par Ex).

C'est un label avec un libelle indépendant et un séparateur et toujours un Caption

Il y a une propriété "Captions" non publiée qui accepte quasiment tous les types de variable unitairement et une Procédure MultiVars(Value: Array Of TVarRec; Const Sep: String = ''); qui converti les variables en une chaîne de type String avec un séparateur (Facultatif) entre elles.

Lab2.Captions := pt; // Variable string rien d'étonnant
Lab2.Captions := Time; // une Heure
Lab2.Captions := 22.5; // un Réel
Lab2.Captions := Date; // une Date
Lab2.Captions := 22555661;// un entier

Lab2.MultiVars([Lab2, 'est', 1, TLabel, 25.5, '*', 2, '=', 25.5*2, Lab2.Visible],' ');
Donne : "TcrLabel est 1 TLabel 25.5 * 2 = 51 Vrai"

La procédure accepte également les pointeurs sur variables
Si vous voulez passer une variable de type TDateTime à la procédure il faudra « transtyper » en un variant, si non elle sera évaluée comme une variable de type Extended voir la démo.

Le Libelle et le Caption ont des Fontes indépendantes et des effets sur le texte (Raised, Lowered)

Vous n'êtes pas obligé d'installer le composent pour le tester (avec la Démo)

Pas de bugs connus
Tenez moi au courent de vos impressions, suggestions, remarques, bugs, autres.

Source / Exemple :


// Cette fonction convertie un tableau de variables en un texte affichable

Function TCrLabel.MakeStr(Args: Array Of TVarRec; Sep: String): String;

  procedure AddVar(Value : String);
  Begin
    Result := Result + Value;
  End;

Const
  BoolChars         : Array[Boolean] Of String = ('Faux', 'Vrai');
Var
  I                 : Integer;
Begin
  Result := '';
  For I := Low(Args) To High(Args) Do
    With Args[I] Do
    Begin
      Case VType Of
        vtInteger    : AddVar(IntToStr(VInteger));
        vtBoolean    : AddVar(BoolChars[VBoolean]);
        vtChar       : AddVar(VChar);
        vtExtended   : AddVar(FloatToStr(VExtended^));
        vtString     : AddVar(VString^);
        vtPChar      : AddVar(VPChar);
        vtPointer    : AddVar(String(VPointer^));
        vtObject     : AddVar(VObject.ClassName);
        vtClass      : AddVar(VClass.ClassName) ;
        vtAnsiString : AddVar(String(VAnsiString));
        vtCurrency   : AddVar(CurrToStr(VCurrency^));
        vtInt64      : AddVar(IntToStr(VInt64^));
        vtVariant    : If VarType(VVariant^) And varTypeMask = varDate Then
                        Begin
                          If Trunc(VVariant^) <= 0 Then
                            AddVar(TimeToStr(VVariant^))
                          Else
                            AddVar(DateTimeToStr(VVariant^));
                        End
                       Else
                        AddVar(VVariant^);
      End; // Case
      If I < High(Args) Then  AddVar(Sep);
    End;
End;

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
43
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
25 février 2013

C'est super tout simplement génial :-)

Merci Cirec .

Idefix
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
petite remarque aux admins la notation ne fonctionne pas sous firefox
bon cirec-->le suis passé sous IE et cette la note doit être attribuée
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
38
Bonsoir Ioda19,
pourrais tu décoder s'il te plait
" Excellent ça fonction #1
Merci

C'set vraiment pas pire ton petit composant.. moi en tk j'trouve pas hot " ???
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
38
Jlen100 > Merci beaucoup pour ton aide et pour la note, j'espère qu'il vous sera utile.
J'ai rajouté un DoubleBuffered dans le constructeur ce qui évite le scintillement pendant un affichage rapide (Comme dans l'exemple de l'affichage de la position de la souris)
Messages postés
21
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
20 juin 2007

Excellent ça fonction #1
Merci

C'set vraiment pas pire ton petit composant.. moi en tk j'trouve pas hot
Afficher les 10 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.