Creation composant - Diode( Temps de lecture estimé à 2 min 50 sec )
Pour créer un composant il faut déja bien comprendre la Programation Orientée Objet (POO) : public private, create, etc... enfin tout ce qui à trait à la programmation objet et à la notion d 'héritage.
A) Petits rappels de POO
'Class Quadrupede
Property NbrePate
Property Longueurqueue
'Class chien
Inherit quadrupede
Property race
property couleur
Donc au final la classe chien
chien.Nbrepate
chien.LongueurQueue
chien.race
chien.couleur
C 'est comme pour les conteneurs, tu crée un projet console et dedans tu y met deux ou trois classes et tu vois comment elle
réagissent entre elles. Tu peux avoir une classe héritière qui surcharge une propriété du parent ... simplement en utilisant le même nom :
par exemple si je fait
'Class monlabel
Inherit Label
Property Text as string
Private Sub Text_Read() as String
return SUPER.Text & toto
end
Private Function Text_Write(Value as string)
SUPER.Text = Value
end
en gros j 'ai détourné la propriété texte de label ... Super permet d 'appeller une proprété de la classe parente.
Donc quand je fait label.text = titi
print label.text
donne
tititoto
mdr
ça sert a rien mais j 'explique :
Parfois on veut pouvoir appeler une classe sans l 'instancier :
j 'instancie avec New
hmyClass = new Myclass
en mettant Create Static en entête, on peut faire comme avec report
report.mafonction
car en fait, Gambas instancie un report et le réaffecte a la variable report. donc report passe de classe a variable instanciée.
c 'est quoi une instance ? C 'est une copie de travail en mémoire. On peu avoir autant d 'instances d 'une classe qu 'on veut. Un module est une classe dont tout les éléments sont static... donc non instanciable et accessible depuis maclass.mafonctionstatique
je l 'utilise dans gb.report pour par exemple pour stocker les références de tout les objets dans une collection
ainsi j 'appelle report._collection[valeur]
ou _collection est déclarée static.public
le _ sert a dire que je veut que cette fonction soit cachée dans l 'ide... et oui il y a plein de truc caché ... utilisable mais simplement masqué car risqué pour une utilisation directe. ou simplement pour ne pas charger l 'interface...
Enfin tout ça pour dire qu 'il faut tester toute les variantes et voir comment ça s 'articule.
B)Premier Composant :
Bien voici la première démo de composant entièrement commentée : Diodes
il manque juste deux ou trois points
-1- Pour indiquer au projet que c 'est un composant il faut lui dire dans les propriétés générale du projet ctrl+p. Ensuite il faut lui dire qu 'il à besoin des composants graphiques (gb.gui ou gb.qt4 ou gb.gtk)
(tout ceci est déjà fait dans l 'exemple)
-2- Ensuite pour pouvoir pleinement testé le composant et même l 'utiliser dans d 'autres projet : faire générer l 'exécutable (ne pas le générer dans le dossier du projet !) et cocher la case installer le composant...
faire ok et la miracle le contrôle apparait dans la barre des outils .
Il ne reste plus qu 'a s 'en servir.
Attention : le composant est installé en local. (donc dans le dossier /home/user...)
voila ...
C) Différence entre un composant et un contrôle.
Un contrôle est un type de classe... dans cet exemple j 'ai expliqué comment faire un composant graphique... ce qui n 'est pas le cas pour gb.chart ou gb.report car ils dessinent sur le device fournit par la classe paint.
Un composant est un ensemble de classes ou de contrôles.
gb.qt est un composant qui contient par ex :, button ou listbox sont des controles, timer est une classe utilisable comme controle, paint est une classe.);