[Gambas-user] form control need help pleas...

Benoit Minisini gambas at ...1...
Sat Nov 15 11:21:40 CET 2003


Le Samedi 15 Novembre 2003 08:52, Olivier Coquet a écrit :
> i have a class named F1 which is my main form containing a button1 control
> named B1 and a TextBox control named TB1
>
> I have a class named C which contain some sub to act on F1 controls
>
> I instanciate C in F1 constructor correcly
>
> I Call a sub routine in C when I click on B1
>
> I get the handler of F1 in C constructor
>
> sub in C is:
>
> PUBLIC fen AS F1
>
> PUBLIC SUB _new(hwnd AS F1)
>
>   fen = hwnd
>
> END
>
> public sub test()
>
> 	fen.Text = "toto"  '<=========this work perfectly
>
> 	fen.TB1.Text = "toto" '<======this say me than no TB symbol exist in class
> F1
>
> end
>
> some body to help me????????
>
> regards
> olivier
> Strat&Co
> http://stratoria.dynu.net:85/
>
>

This is by design. Contrary to VB, form controls are not public, because the 
less public variables you have in a class, the better is your program.

You should really read carefully all the gambas documentation, especially the 
"Differences from VB" page if you plan to make a big program.

If yo don't want to hurt your VB-infected mind :-), there is a project option 
name "all form controls are public". If you check it, your program will 
behave like you wanted.

But I suggest you keeping controls private, and improve your program design.

For example, if your class C has a method that modifies the form F1, you 
should better put this method directly in F1. This is a general 
object-oriented programming practice. Don't think that F1 is only a form. It 
is a class too. It is a class that can display a form too. You don't need to 
separate the class part of F1 and keep in it only the GUI related methods. Am 
I clear ?

Many gambas designs try to prevent the horrible design I am compelled to do 
when I program in VB. I don't know if it will be a success, but please help 
me by trying to forgot how you programmed in VB !

Regards,

-- 
Benoit Minisini
mailto:gambas at ...1...

----[ FRENCH VERSION / VERSION FRANÇAISE ]----

Tout est normal. Gambas a été conçu ainsi. Contrairement à VB, les controles 
des formulaires ne sont pas publics, car moins il y a de variables publiques 
dans une classe, et mieux c'est.

Tu devrais lire sérieusement la documentation de Gambas, et surtout ce qui 
concerne les différences entre VB et Gambas, si tu comptes faire un gros 
programme.

Si tu ne veux pas chambouler ton esprit infecté par VB :-), il y a une option 
de projet qui permet de rendre les contrôles des formulaires publics. Si tu 
la coches, ton programme se comportera comme tu le veux.

Mais je te suggère de garder tes contrôles privés, et d'améliorer la 
conception de ton programme.

Par exemple, si ta classe C a une méthode qui modifie le formulaire F1, il 
vaut mieux mettre cette méthode directement dans F1. C'est un principe de 
base en programmation orienté-objet. Ne vois pas seulement F1 comme un 
formulaire. C'est aussi une classe. C'est une classe qui peut aussi afficher 
un formulaire. Il n'est pas nécessaire de sépararer de F1 les méthodes de 
classe pour n'y conserver que les méthodes relatives à l'interface 
utilisateur. Est-ce que je suis clair ?

Beaucoup d'éléments de conception de Gambas tentent d'empêcher les horribles 
choses que l'on est obligé de faire lorsqu'on programme en VB. Je ne sais pas 
si ça marchera, mais, s'il-vous-plait, aidez-moi en essayant d'oublier 
comment vous programmiez en VB !

Amicalement,

-- 
Benoit Minisini
mailto:gambas at ...1...





More information about the User mailing list