Créer son contrôle à partir de l'héritage d'un autre
Pourquoi créer son propre contrôle ?
Dans notre exemple, l'utilisateur doit saisir une somme dans un champ pour que le programme fasse son travail.
Problème :Le champ doit être numérique sinon une erreur sera levée donc un simple ValueBox de type numeric peut faire l'affaire.
Avec les expressions régulières je peux contrôler le nombre de décimales mais l'affichage se fera sans format facilitant la lecture (surtout sur les grands nombres).
Je veux afficher selon un format correspondant à l'expression régulière choisie.
La Solution :Le ValueBox est un textBox étendu mais qui ne convient pas ici, je vais donc créer mon propre contrôle étendu à partir du textBox en ajoutant, dans un premier temps, les deux propriétés dont j'ai besoin : Value et Format et dans un deuxième temps j'ajouterai une troisième propriété : TextReg pour récupérer le texte de l'expression régulière sélectionnée.
Où l'on voit que le champ est affiché avec le format voulu.
L'exemple à télécharger ici : premier temps
howmuch4 ou deuxième temps :
howmuch5 À vous de mesurer les différences.
Les étapes de création :
- Créons un projet d'application graphique, dans l'IDE
- dans les sources, nous avons déjà une Fmain, un formulaire vide
- cliquons droit sur les sources, nouveau et Classe
- renseignons le nom ou gardons celui proposé par l'IDE
- sélectionnons Exportée, validons
- la nouvelle classe est ouverte avec un seul mot "magique" : "Export"
- rentrons maintenant de quel contrôle le notre va hérité, dans notre exemple : "Inherits TextBox", pour hériter de la TextBox, juste après ou avant le mot magique Export
- nous compilons notre projet, oui, vide
- ouvrons le formulaire principal Fmain.Form
- regardons, en bas à droite de l'IDE dans l'onglet Formulaire, un nouveau contrôle est apparu, nommé tel que vous l'avez fait, ici Class1
- vous pouvez l'intégrer dans votre formulaire principal, comme n'importe quel autre contrôle
- nous listons,maintenant l'ensemble des variables dont nous aurons besoin
- nous ajoutons les propriétés nouvelles dont nous voulons disposer dans notre contrôle hérité
Le code de notre exemple :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| ' Gambas class file
INHERITS TextBox '<--------------------------------------------------------- Tout l'héritage du composant TextBox '<----------------------------------------------------------------------------- (Export) pour créer la class dans l'IDE EXPORT '<------------------------------- remarquez les doubles '' pour faire apparaître les commentaires en explication des objets dans l'IDE PRIVATE $value AS FLOAT ''Contient la valeur numérique PRIVATE $regPat AS STRING ''Pattern des expressions réguliéres PRIVATE $format AS STRING ''Contient le formatage de la variable PRIVATE $regex AS NEW RegExp ''Contrôle l'entrée, il faut activer gb.pcre PRIVATE $bFocus AS BOOLEAN ''Boolean du focus
'<------------------- Début propriétés ajoutées à TextBox --------------------- PROPERTY Value AS FLOAT ''Valeur float de la textbox PROPERTY Format AS STRING ''On passe le format que l'on souhaite voir en sortie
PRIVATE SUB Value_Write(Value AS FLOAT) '<------------------------------------- la propriété Value de notre TextBox
$value = Value '<--------------------------------------------------------- récupération de la valeur et transmision à la variable locale
END
PRIVATE FUNCTION Value_Read() AS FLOAT '<------------------------------------- la propriété Value de notre TextBox
RETURN $value '<---------------------------------------------------------- renvoi de la propriété
END
PRIVATE SUB Format_Write(sFormat AS STRING) '<------------------------------- la propriété Format de notre TextBox
$format = sFormat '<------------------------------------------------------ récupération de la valeur et transmision à la variable locale
END
PRIVATE FUNCTION Format_Read() AS STRING '<--------------------------------- la propriété Format de notre TextBox
RETURN $format '<--------------------------------------------------------- renvoi de la propriété
END '<-------------------- Fin propriétés ajoutées à TextBox ----------------------
|
Dans le code, repérer les procédures _Read et _Write qui servent à définir nos propriétés.
L'une _Read retourne la valeur de notre propriété (c'est une fonction).
L'autre _Write inscrit la valeur de notre propriété.
Les deux ont, bien sûr le même type de données.
Bien sûr, dans l'IDE, quand nous installons notre nouveau contrôle dans le formulaire, en cliquant dessus nous avons accès à toutes ses propriétés héritées de l'autre contrôle, plus celles que nous avons ajoutées.
Les propriétés n'apparaîtront pas dans la liste des propriétés affichées du contrôle, dans l'IDE, mais sont bien là et accessibles dans le code.
Dans le code du formulaire il suffit de rentrer : "
Class1LeNomChoisi." pour avoir accès à nos deux nouvelles propriétés dans la liste déroulante avec les informations que nous avons ajoutées après les deux apostrophes ''.
====================
Les commandes utilisées :
====================
Remerciements
Un grand merci à Patrick MAGUER pour sa patience et son aide.
Le PGI Laurus est un PGI français gérant la comptabilité, les points de ventes et une gestion complète. Le site de Laurus :
https://www.laurux.fr/====================
Navigation :
<-- Liens du Wiki : <--<-- Accueil du WIKI : <-- ====================
Documentation :
====================