Voici divers tutoriels pour créer votre composant :
Une progressBar verticale
A l'heure actuelle où je vous écris ces quelques lignes, il n'existe pas pour GB3 une progressbar verticale.
J'ai donc réalisé à l'aide d'une nouvelle classe ainsi qu'à l'aide précieuse d'Eugéni, un contributeur non francophone, ce widget.
Analysez le code de cette progressBar et vous comprendrez assez facilement comment créer votre composant.
Le composant Diode
Voici un composant réalisé par Jean Yvon et actualisé en gb3.18
Il affiche une reglette de diodes vertes orange et rouge à la façon d'un player audio.
Vous pourrez faire varier les leds en utilisant le slider associé.
Tutoriel créer un composant (conversation tchat sur le net)
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ées un projet console et dedans tu y mets 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 fais:
'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 fais
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 peut 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..
Barre de défilement
Pour aller plus loin :
Documentation officielle
Vous trouverez ici la liste des composants de gambas. La liste est immense et vous pouvez faire énormément de choses.
Wiki gambas
Dans cet exemple très bien rédigé, vous comprendez facilement comment créer votre propre composant.