Création de son Propre Contrôle :
Ou comment créer un contrôle à partir d'un formulaire existant :Prenons appui sur un exemple existant dans la forge :
Calculatrice++Dans un nouveau projet que vous nommerez comme vous l'entendez importez dans les sources, le formulaire de la Calculatrice++.
Sur le répertoire sources, clique droit puis Importer et naviguer jusqu'à l'endroit de rangement du projet Calculatrice++.
Après votre importation, donnez lui un nom significatif genre frmCalcul ou autre.
Ceci fait, cliquer droit sur le répertoire sources, nouveau, Classe.
Dans la fenêtre Changer le nom proposé puis cocher la case Exportée.
Une nouvelle classe portant le nom choisi s'est ouverte dans l'IDE, ne contenant que le mot Export.
Pour pouvoir récupérer ce contrôle nous devons ajouter d'où il provient, ajouter juste cette ligne : Inherits UserControl
Maintenant, avant d'aller plus loin, nous devons compiler ce projet pour faire apparaître ce contrôle dans la liste de ceux existants. (Alt+F7)
Vérifiez que vous avez bien celui-ci dans la liste (en bas à droite de l'IDE) en vous plaçant sur le formulaire précédemment importé.
Nous allons, l'alimenter pour utiliser ce nouveau contrôle. (pensez à changer FrmCalcul par le nom donné à votre importation)
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
| EXPORT INHERITS UserControl '<--------------------------------------------- héritage des propriétés de UserControl
PRIVATE $hCalculatrice AS FrmCalcul '<------------------------------ à partir du contrôle FrmCalcul PRIVATE $Obs AS Observer '<--------------------------------------- déclaration d'un observer
PROPERTY ResultCalc AS STRING '<---------------------------------- propriété pour récupérer le résultat de frmCalcul
PUBLIC SUB _New() '<------------------------------------------------ instanciation
$hCalculatrice = NEW FrmCalcul(ME) '<-------------------------- instanciation de l'objet à partir de FrmCalcul $Obs = NEW Observer(ME) AS "Obs" '<------------------------------ instanciation observer pour récupérer les évènements
END
PRIVATE FUNCTION ResultCalc_Read() AS STRING '<--------------------- définition de la propriété ResultCalc
RETURN $hCalculatrice.Resultat
END
PRIVATE SUB ResultCalc_Write(Value AS STRING) '<--------------------- définition de la propriété ResultCalc
$hCalculatrice.Resultat = Value
END
|
Le $hCalculatrice.Resultat est bien sûr déclaré et alimenté dans Calculatrice++ ou plus exactement, ici frmCalcul.
1
2
3
| IF NOT IsNull($fValeur[$i - 2]) OR NOT IsNull($fValeur[$i - 1]) THEN '<---- pour impression quelconque Résultat $sTransfText = Str($fValeur[$i - 2]) & " " & $signe & " " & Str($fValeur[$i - 1]) & " " & "=" & " " & Str($fValeur[$i]) & gb.CrLf '<-le résultat ENDIF
|
Voilà notre nouveau contrôle est prêt à l'emploi et nous allons de ce pas créer un nouveau formulaire qui pourra le recevoir.
Je propose de choisir un nom bateau car il ne s'agit que de tester notre contrôle, genre frmTest (frm pour formulaire).
Si vous le voulez, vous pouvez ajouter un bouton pour quitter (btnQuitter).
Si vous voulez attribuer une icône à ce nouveau contrôle, dans le répertoire Projet, ajouter un nouveau répertoire nommé "control" et glisser dedans une icône désirée que vous renommez du nom de la nouvelle Class (en PNG), ici, par exemple Class1.png
Lancer votre projet, la calculatrice apparaît bien à l'écran comme si vous aviez lancé le projet Calculatrice++ mais là c'est votre contrôle.
L'intérêt, aucun, sauf celui pédagogique et celui de montrer qu'il est possible de réutiliser un vieux programme en l'insérant dans un nouveau comme contrôle.
On peut, aussi, ajouter une Class2 qui hériterait de la Class1 :
1
2
| EXPORT INHERITS Class1
|
et placer cette nouvelle Class2 dans notre formulaire.
Contrôle par Contrôle====================
Navigation :
<-- Liens du Wiki : <--<-- Accueil du WIKI : <-- <-- Créer une Interface : <--====================
Documentation :
==================