Gambas France BETA


Pas de compte ? Incription

Exemple 18 :

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 :












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 :



====================