25.3 - Utilisation des variables :25.31 - Variables non liées aux donnéesIci, on va ajouter à notre exemple, des variables non liées aux données. Elles vont permettre par exemple d'afficher un libellé différent en fonction du contexte.
Pour cela, lancez l'éditeur d'états puis sélectionnez le menu "Fichier/Liste des variables".Ajoutez une catégorie "Variables non liées" et la variable "Test" comme expliqué au chapitre 23 . La seule différence est que vous n'allez pas sélectioner un champ de valeur mais laisser "[Aucun]" (valeur par défaut).
Editez un de vos objets et ajoutez la variable "Test" comme on l'a vu dans les précédents chapitres.Revenez sous DELPHI (N'oubliez pas d'enregistrer votre état ... ::o) ) puis éditez l'évènement OnGetValue du composant "FrReport1" et entrez le code suivant.
procedure TForm1.frReport1GetValue(const ParName: String;
var ParValue: Variant; var fld: TField); // Format valable avec le patch français
begin
// Ici on traite les cas de variables non liées
If UpperCase(ParName)='TEST' then
ParValue:='Réponse : Variable "test1"';
end;Note : le champ "fld" n'est pas utilisé à ce jour, il est utilisé pour permettre le formatage des données avec DisplayFormat.25.32 - Variables calculées25.4 - Utilisation des formatsIci, on va voir comment créer une variable calculée. Comme précédement, créez une nouvelle catégorie (facultatif) et une variable "Test calcul" .
Sélectionnez la nouvelle variable et sur le ComboBox valeur choisissez "Autre" puis "Expression". Cette sélection active la zone de saisie "Expression".
Entrez ceci : [Table1."SIZE"]+[Table1."WEIGHT"]
Vous obtenez ainsi la somme des champs de données "SIZE" et "WEIGHT". Vous auriez pu mettre aussi des noms de variables.Vous pouvez utilisez les opérateurs suivants :
Type Logique >,<, OR, AND, NOT , = , <>, >=, <= Mathématique -, *, +, MOD, / En plus, vous disposez en standard des fonctions suivantes :
Fonction Description Exemples SUM Somme de valeur SUM(Variable1) AVG Moyenne AVG(Variable1) MIN Minimum MIN(Variable1) MAX Maximum MAX(Variable1) FORMATDATETIME ? ? FORMATFLOAT ? ? LOWERCASE Minuscule NAMECASE ? ? STRTODATE Chaine vers date STRTOTIME Chaine vers heure UPPERCASE Majuscule Si cela ne vous suffit pas vous pouvez créer vos fonctions, mais ça c'est un autre chapitre (donc à suivre).
Ce chapitre va vous permettre de définir un format d'affichage (et édition) pour les variables d'une zone. Avant de commencer, vous devez savoir qu'un format est valable pour l'ensemble des variables d'une zone éditable.
Pour afficher l'éditeur de format, faites un clic droit sur une zone et "Format de variable...".
Le premier ComboBox indique le type de données (Texte, Nombre, Date, Heure, Logique). Le second permet de sélectionner un format prédéfini.
Le type "Texte" ne permet aucun formatage et le type "Nombre" vous demande en plus le nombre de décimale et le symnole virgule à utiliser.Hormis les types "Texte" et "Logique", vous pouvez entrer une chaine de formatage personalisée respectant le formatage de DELPHI.
Vous pouvez aussi inclure une notion de mise en évidence ("Surbrillance") ce qui est très utile pour faire ressortir des données sur un état. Vous pouvez préciser une condition pour appliquer cette mise en évidence. Pour cela, utilisez le mot clé "VALUE" pour indiquer la valeur de la variable. Ici, on demande une mise en évidence pour toutes les valeurs supérieures à 1000.
Par défaut, la mise en évidence est une simple mise en gras sur fond blanc. Vous pouvez définir ces paramètres pour une zone en cliquant sur le bouton
:
Vous pouvez ainsi définir la couleur du fond (de la zone entière), du style et de la couleur de la police à utiliser pour une mise en "Surbrillant" .Note concernant la propriété DisplayFormat des champs : Depuis la version 05/05/99 du patch français, cette propriété est prise en compte. Si elle est définie, elle sera automatiquement prise en compte.