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;
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.