Gambas France BETA


Pas de compte ? Incription

Creer un composant : les bases

123
AuteurMessages
gambix#1 Posté le 14/1/2010 à 14:55:00
Faire simple !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.

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 appeller 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 faite, 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 references de tout les objets dans une collection

ainsi j'appelle report._collection[valeur]

ou _collection est déclaré static.public

le _ sert a dire que je veut que cette fonction soit cachée dans l'ide... et oui ya 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.



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 indiqué 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éja fait dans l'exemple)

-2- Ensuite pour pouvoir pleinement testé le composant et même l'utilisé dans d'autres projet : faire générer l'exécutable (nepas le générer dans le dossier du projet !) et cocher la case installer le composant...
faire ok et la miracle le controle aparait 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 ...

Difference entre un composant et un contrôle.trong>

Un controle 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 enssenble de classes ou de controles.

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.
Moins de texte dans une signature c'est agrandir son espace.
manu#2 Posté le 30/3/2010 à 22:09:00
Avec Gambas ca roule !Concernant les bases (théoriques) de la POO, consulte aussi cet article (tres bien ecrit ;)) sur le Wiki
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
spheris#3 Posté le 30/3/2010 à 22:12:00
Merci manu, je vais jeter un cil !
A+
;)
gambix#4 Posté le 30/3/2010 à 22:22:00
Faire simple !tu aurais pu aussi dire que le composant est en gb3 !
Moins de texte dans une signature c'est agrandir son espace.
jeanyvon#5 Posté le 31/3/2010 à 06:17:00
Gambas? Ma! Et gustoSalut tout le monde

Le composant Diode est une réponse à Sphéris qui voulait un progressbar à diodes. Grâce à gambix c'est chose faite.... :lol!:
A+
JY
J'édite pour vous donner une image du composant en action

Vieillir? On peut retarder mais pas y échapper!
spheris#6 Posté le 8/4/2010 à 19:00:00
Un tuto en francais et en anglais s'impose sur le site gambaslinux.eg2.fr.
Je m'y attèle de ce pas !
Merci encore
;) ;)
GarulfoUnix#7 Posté le 26/8/2010 à 13:48:00
By the wayNotre point faible est qu'on manque cruellement de "Developer Documentation".
Sur gambasdoc.org on possède l'API (ouf dirais-je elle est bien documenté ) mais des guides incomplets sur la création de composants en C/C++ par exemple.

Est-ce le fait qu'on a peu de contributeurs ? :cyclops:
gambix#8 Posté le 26/8/2010 à 15:05:00
Faire simple !oui
Moins de texte dans une signature c'est agrandir son espace.
GarulfoUnix#9 Posté le 26/8/2010 à 15:27:00
By the way
oui


Va donc falloir en faire une priorité ...
Prokopy#10 Posté le 26/8/2010 à 15:31:00
Kinder PinguiBah c'est pour ça que j'arrive moi. ;)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
jeanyvon#11 Posté le 26/8/2010 à 15:53:00
Gambas? Ma! Et gustoSalut à tous!
Voilà 15 jours, Gambix m'écrivais qu'il serait temps que j'ouvre les composants de Gambas.
j'ai eu le malheur de le faire.....
Voilà 15 jours que mes connaissance en basic sont remises en cause. Alors c'est ça du code gambas actuel bien fait...
Outre la difficulté de lire le code d'un autre, il me faut monter de deux ou trois niveaux pour suivre le fonctionnement du prog.
Désolé mais je ne pourrais pas être d'une grande aide pour gambas!
A moins qu'il n'y ait une place de grouillot
Allez va développer bien moi je vais continuer mes petits mikeys
A+ ...-
JY
Vieillir? On peut retarder mais pas y échapper!
gambix#12 Posté le 26/8/2010 à 16:04:00
Faire simple !un composant c'est juste un programme normal ... il partage ses fonction avec d'autre c'est tout
Moins de texte dans une signature c'est agrandir son espace.
jeanyvon#13 Posté le 26/8/2010 à 16:28:00
Gambas? Ma! Et gusto
un composant c'est juste un programme normal ... il partage ses fonction avec d'autre c'est tout


je suis bien d'accord avec ça.
Ce qui me trouble, c'est que tu as(que vous avez) une autre façon de résoudre un problème qui est à la fois plus simple, plus efficace, plus rationnelle mais surtout vraiment nouvelle pour moi.
Je n'ai jamais écrit de choses aussi élaborées.
Mon basic et donc mon Gambas se limite à une cinquantaine de mots, tu en utilise couramment plusieurs centaines.
Je m'aperçois que d'ouvrir le code des petites applications écrites par des auteurs comme moi ne m'aidait pas. La seule façon de sauter le pas et d'entrer dans le gambas actuel c'est de se jeter dedans et surtout de ne pas faire du passéisme en disant : "Ha le basic de bill, c'était le bon temps"
Aujourd'hui j'écris en gambas3 et c'est autre chose que mon VB6. Aujourd'hui je dois utiliser la totalité de ce langage que des copains écrivent gratuitement pour moi.
Ha on peut dire que tu m'as secoué (tant mieux)
...-
JY
Vieillir? On peut retarder mais pas y échapper!
GarulfoUnix#14 Posté le 26/8/2010 à 16:59:00
By the wayFaut prendre son temps pour apprendre et surtout que ça devient un plaisir
Prokopy#15 Posté le 26/8/2010 à 18:44:00
Kinder Pingui
Ce qui me trouble, c'est que tu as(que vous avez) une autre façon de résoudre un problème qui est à la fois plus simple, plus efficace, plus rationnelle mais surtout vraiment nouvelle pour moi.


C'est normal que ça paraisse différent pour toi. On a tous une façon différente de raisonner, de penser et de réagir. Le tout n'est pas d'avoir "la meilleure", mais d'être bien avec. Par exemple, gambix et moi on n'a pas du tout la même façon de penser nos programmes (y'a qu'à comparer son chart et le mien :lol: ), donc il arrive qu'on se chamaille un peu sur certaines choses. Mais au final on arrive à se comprendre et à retomber sur ce qu'on voulait au début.
Il ne faut pas se dire que notre façon de faire est la bonne parce que on a un plus haut niveau que toi. Il faut juste que tu trouves ta voie bien à toi, pas que tu suives (trop) celle d'un autre.

Je n'ai jamais écrit de choses aussi élaborées.


Tu sais, des choses sont élaborées seulement parce qu'on y va petit à petit. Au départ, tu commences avec une bête fonction qui dessine un camembert, puis tu ajoutes des couleurs, des étiquettes, des légendes. Tu te rends compte que ça commence à être le bordel, alors tu modifies ton organisation, tu ranges dans des fichiers, tu fais du ménage, et puis tu te rends compte que du as besoin de dessiner aussi des courbes, des histogrammes … et de fil en aiguille tu atterris sur la création d'un composant de dessin de diagrammes complet et puissant. Début de l'aventure : 20 lignes de Gambas. Fin de l'aventure : 500 lignes. Au début j'avais fait ces lignes juste pour "le fun", maintenant il tend vers le nouveau gb.chart. Comme quoi, petit à petit, tu pars d'un truc gnangnan, et tu aboutis sur un truc énorme. :D

Voilà 15 jours, Gambix m'écrivais qu'il serait temps que j'ouvre les composants de Gambas.
j'ai eu le malheur de le faire.....
Voilà 15 jours que mes connaissance en basic sont remises en cause.


Franchement là, je dis non.
Ce n'est pas parce que tu ne t'y retrouves pas dans le travail de quelqu'un d'autre que tu dois te dire que tu es mauvais.
Ça aussi je l'ai vécu il y a pas longtemps, le jour où gambix a dit : "J'aimerais bien que Prokopy me donne un coup de main pour gb.chart.". Ni une ni deux, j'ai foncé tête baissée sur les sources de gb.chart. Quand je les ai vues, je me suis dit : maiskeskessékeça ? :shock:
Moi aussi j'ai eu un coup de déprime, je me suis aussi dit que je n'étais certainement pas à la hauteur. Et puis un jour, je fais un peu de ménage sur mon disque, et je retrouve mes sources sous la poussière : Pk.Chart. En les regardant, je me suis dit : "il était sympa pour un début de Chart, pourquoi ne pas lui redonner un coup de jeune". Je me lance, je nettoie tout, j'y ajoute les nouvelles connaissances de mes derniers mois de Basic, et puis je l'envoie à Gambix en disant : "Voilà ma base, dis-moi ce que t'en penses. ". Depuis, on s'amuse comme des petits fous sur ce composant. C'est vrai que dessiner des diagrammes c'est rien à côté du mastodonte qu'est gb.qt, mais moi je m'en fous, je m'amuse et pis c'est tout. C'est ça l'esprit Gambas : Code & Fun. :joker:

A moins qu'il n'y ait une place de grouillot
Allez va développer bien moi je vais continuer mes petits mikeys

Aujourd'hui je dois utiliser la totalité de ce langage que des copains écrivent gratuitement pour moi.
Ha on peut dire que tu m'as secoué (tant mieux)


Au ton que tu mets dans tes phrases j'ai l'impression que tu t'en veux vraiment. Mais y'a vraiment pas de quoi, tu te biles pour rien. Il faut toujours que tu gardes en tête que la communauté Gambas, c'est qu'on s'amuse entre copains. Tu n'as pas de règlement, personne ne te pointe quand tu travailles, il faut juste que tu te sentes bien, que tu t'amuses et que tu rigoles.
Arrête de culpabiliser, franchement j'ai regardé tes programmes et je peux te dire que tu es loin d'être nul comme tu le prétends. Tu trouves des super idées et tu y mets en pratique tes connaissances dans des programmes très utiles et ergonomiques. Tu as vraiment bien compris Gambas, tu as des très bonnes bases de programmation et il ne faut pas que tu gâches tout ça. ;)

En bref, sors de cette morosité et reviens vraiment, on veut retrouver le vrai jean yvon. Celui qui est sympa, celui qu'on connaît bien, et pas ce type qui n'a rien d'autre à dire qu'il ne sait rien faire et que ça ne vaut pas la peine de continuer. :)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
123