[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