Gambas France BETA


Pas de compte ? Incription

Problème de représentation d'un UserControl dans l'IDE

1
AuteurMessages
oldchap#1 Posté le 23/12/2013 à 21:49:35
L'information ne vaut que si elle est partagéeBonsoir à tous,
Avant de poser ma question, je me présente rapidement car c'est mon premier post.
Voila je suis tout jeune (55 ans ;-) j'ai commencé dans les années 80 avec un Zx80, puis Oric1, Oric Atmos, la série des Apple II, des Macs et des PCs...
A cette époque il n'y avait quasiment que le Basic sur ces petites bébêtes et pas du tout orienté objets... mais on s'amusait bien déjà.
Je bosse dans l'informatique, plutôt dans la partie commerciale, mais depuis toutes ces années la passion de la programmation ne m'a jamais quittée et surtout celle du basic.
Avec une petite préférence , il est vrai pour VBNet sur Windows qui arrive aujourd'hui à une grande maturité, mais depuis quelques mois je me suis mis à Linux, Ubuntu sur mon PC en dual boot.
Je commence à regarder QT avec du C++ car je voudrai aussi arriver à programmer une petite Raspberry Pi pour créer des petits produits embarqués, l'apprentissage est un peu "chaud" mais j'avance.
Et puis l'idée m'est venue de taper "Basic Linux" dans mon ami Google et oh miracle je suis arrivé sur Gambas et je dois dire que j'ai été très agréablement surpris, j'en profite pour féliciter Benoît MINISINI et toute l'équipe de développeurs car le produit n'a pas à rougir par rapport à d'autres environnements pour ne pas les citer, un petit regret quand même le portage sous windows mais la.... je ne pense pas que cela ne verra pas le jour!
J'ai même réussi à compiler ganmbas3 sur ma petite Raspberry et trop cool ça tourne... bon allez ma question sinon je ne la poserai jamais.
Voila j'ai commencé à créer un UserControl "bidon" c'est pour comprendre la philosophie de Gambas.
Globalement il fait ce que je lui demande en execution, mais j'ai juste un problème de représentation sur l'éditeur de formulaire, la représentation graphique reste le tristounet carré avec le nom du control.
J'ai regardé les sources du ColorChooser pour voir comment ça se passait mais sans succès, j'ai aussi lu le lien sur "Comment programmer des composants en Gambas"
Ma classe hérite de UserControl qui est un membre du composant gb.qt4 et d'après ce que j'ai lu, qui est instancié sur le designer avec la propriété Design à true.
Donc ma question est la suivante à quel endroit faut il définir la représentation du contrôle pour le mode "conception" du formulaire dans _Draw() ? et tester la propriété Design ? mais ca ne marche pas... j'ai du passer à côté de quelque chose.
Merci pour votre aide et bravo encore pour Gambas et pour le forum
OldChap
--
VMWare Mint 16
Gambas 3.51
gambix#2 Posté le 24/12/2013 à 14:06:39
Faire simple !Yen a marre des jeunes ;-)... Mdr je ne voudrais pas faire la moyenne d'age des utilisateurs de Gambas mais elle doit être élevée.

Regarde comment sont fait les composants dans le dossier /comp de Gambas. TU doit aussi instancier les constantes masquée :

Public Const _Properties As String = "*,Border=True,ShowAlpha,ShowColorMap=True"
Public Const _DefaultEvent As String = "Change"
Public Const _DefaultSize As String = "36,36"
Public Const _Group As String = "Chooser"

De plus je pense que le color chooser est basé sur un formulaire et que le faite que ce soit un control natif en bg y soit pour quelque chose.

J'ai le même problème avec gb.map :-). Je ne me suis pas encore penché dessus car il ne sagit la que d'un problème esthétique en mode création, vu que le composant n'est pas dynamiquement modifiable. Enfin pas encore.

HA et tu doit ajouter aussi le mot clé Export en tête de classe.

Moins de texte dans une signature c'est agrandir son espace.
oldchap#3 Posté le 25/12/2013 à 11:22:28
L'information ne vaut que si elle est partagéeHello hello et joyeux noël à tous les jeunes développeurs ;-)
Gambix, merci pour ton aide.
J'ai bien parcouru les exemples concernant les composants dans /comp mais je n'en ai vu aucun dont la représentation est complètement dessinée.
En général il y a une "inclusion" d'autres contrôles existants.
Le problème c'est que je ne vois pas ou aller pour dessiner le contrôle quand il est en mode "Design"
Je mets mon code (sans prétention) ci-dessous c'est une petite LED juste pour tester.

Merci pour vos aides
OldChap

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
' Gambas class file

EXPORT
INHERITS UserControl

' Constantes pour le Designer
PUBLIC CONST _IsControl AS BOOLEAN = TRUE
PUBLIC CONST _Properties AS STRING = "*,Etat,Couleur{Color}=255"
PUBLIC CONST _DefaultSize AS STRING = "15,15"
PUBLIC CONST _Group AS STRING = "Philippe"


' Privées
PRIVATE _Etat AS BOOLEAN
PRIVATE _Couleur AS INTEGER
PRIVATE _da AS DrawingArea = NEW DrawingArea(ME) AS "DrawingArea"

' Propriétés
'' Définit ou retourne l'état de la LED
PROPERTY Etat AS BOOLEAN
PRIVATE FUNCTION Etat_Read() AS BOOLEAN
RETURN _Etat
END
PRIVATE SUB Etat_Write(Value AS BOOLEAN)
_Etat = value
IF _Etat THEN
ME.Couleur = &HFF0000
ELSE
ME.Couleur = &H00FF00
ENDIF
END

'' Définit ou retourne la couleur de la LED
PROPERTY Couleur AS INTEGER
PRIVATE FUNCTION Couleur_Read() AS INTEGER
RETURN _Couleur
END
PRIVATE SUB Couleur_Write(Value AS INTEGER)
_Couleur = Value
_da.Refresh
END

'' Constructeur de la classe LED
PUBLIC SUB _new()
_da.Width = 10
_da.Height = 10
ME.Couleur = &H00FF00
END

'' Dessine le controle
PUBLIC SUB DrawingArea_Draw()
Draw.FillColor = ME.Couleur
Draw.FillStyle = Fill.Solid
Draw.Circle(10, 10, 10)
END
--
VMWare Mint 16
Gambas 3.51
oldchap#4 Posté le 27/12/2013 à 17:47:05
L'information ne vaut que si elle est partagéeSalut les copains
Bon je m'arrache le peu de cheveux qu'il me reste :bounce: concernant mon controle que je souhaiterai voir apparaitre dans mes autres projets
En gros voila ou j'en suis et j'ai lu et relu "Comment programmer des composants en Gambas"
- Creation d'un projet Composant
- Ajout dans l'onglet "nécessite" des propriétés du composant, les composants nécessaires
- Insertion d'une classe -> EXPORT -> Heritage UserControl
- Insertion d'un fichier icone dans -> Projet -> Control du même nom que la classe
- Déclaration des constantes _Properties, _IsControl, _Group
- Je fais un petit formulaire de test que je déclare comme classe de démarrage
- Je "run" tout ça
- Rien dans la form c'est normal
- Mon onglet est créé et mon petit icône apparait
- Je le transfert sur ma form (bon il ne se dessine pas mais on verra plus tard pour le reste, j'ai juste le rectangle avec l'icone mis plus haut et le nom de l'objet)
- Run -> Super mon objet est bien dessiné sur ma forme

En suite c'est la que je dois certainement "merdouiller"

- Création d'un nouveau projet Gambas Standard
- Propriété du projet
- Onglet Bibliothèques
- Ajout et je vais chercher l’exécutable compilé plus haut
- Super il me met la version et tout et tout
- Je ferme et la snif pas de nouveau onglet (avec le groupe crée) qui apparaît dans l'IDE
- Par contre, je peux sans problème instancier ma classe, mon objet a toutes les propriétés dont certaines sont aussi des classes

Voila pour conclure côté code c'est nickel chrome, par contre côté IDE je n'y arrive pas et cela me ferait plaisir d'avoir de l'aide la dessus.
Je suis aussi parti dans un délire de transférer le binaire compilé plus haut dans /usr/lib/gambas3, j'ai aussi transféré un fichier de description component, ainsi que l'icone de la classe mais rien de rien, nada...

Allez je vous ai tout dit et pour la peine je vais aller manger un petit chocolat na !!!!!!

Mais toute aide est la bien venue

Bonne soirée à tous
OldChap

Ah j'oublié : Gambas 3.51 -> Linux Mint 16
--
VMWare Mint 16
Gambas 3.51
gambix#5 Posté le 3/1/2014 à 10:32:24
Faire simple !Bon je croit que le seul spé de composant gb ici c'est moi :-/ et Prok ... Mais il va falloir être plus explicit et moins verbeux. Tu veux quoi exactement ? as tu du code a m'envoyer ? Je veux aider mais j'ai besoin de matière.
Moins de texte dans une signature c'est agrandir son espace.
1