Gambas France BETA


Pas de compte ? Incription

Tiens, un nouveau....

1
AuteurMessages
Foromus#1 Posté le 27/12/2009 à 22:19:00
Bonjour tout le monde !

Eh oui, un nouveau, ça arrive. Bon, pas un "p'tit jeune", non, bientôt 70 ans, je percute de moins en moins vite et de plus en plus lentement...

Donc, j'ai fait pas mal de Visual Basic et j'aimais bien. Mon "gros programme" doit avoir une quinzaine de "Forms" et des centaines (milliers ?) lignes de code.
Il y a un peu plus d'an an, je me suis assemblé une nouvelle machine, et comme Win faisait la tête, j'en ai profité pour satisfaire une envie qui me tenait à cœur depuis longtemps : installer Linux !
Et finalement, Linux, j'aime bien ! Quand j'ai découvert Gambas, je me suis dit que c'était le pied, voire la jambe et le bras tout à la fois. Hélas, les choses se sont vite montrées moins favorables...
Naturellement, je ne me suis pas imaginé quand même que mes codes VB allaient tourner derechef sous Gambas. J'ai un peu tenté (dans une précédente vie) de coder sous Delphi, j'ai un peu l'impression que Gambas, ça y ressemble.
Quand je suis passé à la version 9.10 de Ubuntu, j'ai retrouvé Gambas en version 2. J'ai aussi l'impression que les choses bougent. Cela dit, parmi les gens qui utilisent un ordinateur, bien peu programment (pourquoi programmer vu la foison de logiciels...), et par ailleurs, très peu utilisent Linux. Donc, "guère" que multiplie "peu" égale "pas beaucoup de monde" !

Pour les tutoriels, c'est assez restreint. Pour ma part, je ne vois pas trop comment m'en sortir sans aide. Première chose énervante au(x) premier(s) lancement(s) de GB : il y a de nombreux exemples, mais pas un seul ne fonctionne ! Je dis bien : pas un seul ! Je pense que ce serait bien de donner des exemples qui tournent, et d'autre part, la possibilité de les virer du disque une fois qu'on les a vu, pas la peine de perdre de l'espace disque. Seulement voilà, moi, Linux, je ne suis pas un expert, et quand je ne sais pas faire, j'évite d'entreprendre et de m'engager dans la casse...
Bon, ça, c'est une chose.
Je pars du principe qu'il doit quand même y avoir des gens comme moi, qui viennent de VB et qui voudraient du GB. Si vous voulez, la présentation de GB, elle m'apparaît parfaitement compréhensible et facile à appréhender, à quelques détails près. Je remarque d'ailleurs que sur cette nouvelle version, il y a même un bouton pour créer un exécutable, ce qu'il n'y avait pas sur l'ancienne, si je me souviens bien. Par contre, c'est un autre histoire pour utiliser les contrôles. Par exemple, j'ai fait une feuille avec une "picturebox", malheuresement, si je peux bien mettre un image dedans via la fenêtre des propriétés, je suis incapable de la coller via le code ! La formule ""PictureBox1.Picture = "ArtDeco012.jpg"" me renvoie une erreur. Donc, et déjà là, je coince....

Ceci m'a amené à envisager l'idée suivante :
Partant de ce constat, il est clair que je vais devoir trouver les réponses les unes après les autres, soit par des recherches, soit par aide sur ce forum. Dans ces conditions, il serait peut-être utile que je consigne mes recherches dans un fichier (texte) et avec un peu de mise en page, je pourrais peut-être faire quelque chose d'un peu présentable, et qui pourrait servir aux autres. En fait, je suis retraité, donc, j'ai un peu de temps. Par ce que, là, je ne vois franchement rien ! Si je peux mettre un contrôle sur une Form, je ne suis pas certain de pouvoir l'exploiter ! Tenez, un bouton d'arrêt : tout simple, n'est-ce pas ? Intuitivement, j'ai mis dans la sub, la fonction "Quit". A première vue, ça a fonctionné, j'ai enregistré, est quand j'ai rechargé le programme, j'ai eu un message d'erreur ! Donc, je ne sais même pas comment arrếter mon programme par un bouton ! J'ai réussi à voir, par ailleurs, le code "Me.Close". Fort bien. Mais quand je vais avoir 15 feuilles, comment je fais ? Comme en VB, je fais un boucle qui va fermer les 15 ?

Comme vous pouvez le constater, je suis quand même un peu dans le cirage....
Bien je voudrais pas abuser de votre temps - surtout pour ceux d'entre-vous qui sont encore au labeur, aussi, je m'arrête ici. A la rigueur, dites-moi ce que vous en pensez...

En tous les cas et quoiqu'il arrive, meilleurs vœux pour 2010 !

Foromus_____
spheris#2 Posté le 27/12/2009 à 22:33:00
Foromorus,
Bonjour, et bienvenue sur le forum Gambas.
Tout d'abord, je tiens à t'informer qu'il existe un site internet nommé http://gambaslinux.eg2.fr qui traite divers exemple des composants de tes applications appelés Widget.
bien sur, je ne peux que te conseiller la documentation officielle en francais d'une excellente qualité :

http://gambasdoc.org/help?fr
ensuite, pour ton exemple picturebox1.picture, cette fonction attend une picture donc il faut la lui donné par :

picturebox1.picture = picture["/home/monrep/monappli/monimage.jpg"]

pour info tu as des exemples concrets ici :

http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=120

sinon pour fermer une fenêtre tu fais

dans la fonction

public sub form_close()
Me.close
end sub

Meilleurs vœux à toi aussi et bienvenue dans le monde communautaire de Gambas Linux.
;) ;)
Foromus#3 Posté le 28/12/2009 à 11:46:00
Bonjour,

Merci pour ces réponses.
Bien, je suis allé voir les liens. A part le dessin de la maison, je connaissais, par contre, il y a d'autres exemples qu'il me reste à découvrir.

Maintenant, je sais (presque) afficher une picturebox avec le code. Je dis "presque" parce que, si ça fonctionne bien quand mes images sont dans le même dossier (.../Gambas/Essai03) que le code, tout va bien. Or, je viens de créer un sous-dossier pour mes images (.../Gambas/Essai03/Images), et là, rien ne va plus ! Alors, si je dois mettre tout mon code, toutes mes feuilles, toutes mes images, tous mes sons, en un mot, toutes mes données dans un seul et unique dossier, là, je crains le pire. Mon sens de l'ordre étant un peu différent, je me sens nettement dépaysé.
Autre chose : je veux enlever l'image par le code, j'ai donc mis : PictureBox1.Picture = Picture[""]. Là encore, c'est refusé ! Il doit bien y avoir une fonction associée, genre "Close ou Kill" qui t doit effacer l'image.

Autre chose : je veux afficher un image suivant un ordre défini : 1,2,3,4 etc donc
Je déclare : Dim A as integer, ensuite
If A = 1 then PictureBox1.Picture = Picture["Image1"]
If A = 2 then PictureBox1.Picture = Picture["Image2"]
etc.
Très bien, mais mon Dim A, je le mets où ?...
Moi, j'aurais bien aimé le mettre en début de code de manière qu'il soit accessible par toute les sub qui en auraient besoin... A première vue, personne n'en veut de ma déclaration !

Pour la fermeture, je n'ai pas trop compris. la sub BoutonQuitter_Click ne suffit pas ? En fait, je suis dérouté par la Sub Form_Close. Mais s'il n'y a que ça... Puis, en mettant une Sub, ça permet de l'appeler de n'importe où.

Bien, une fois ces quelques détails éclaircis, je pourrai avancer !
spheris#4 Posté le 28/12/2009 à 12:14:00
Très bien, mais mon Dim A, je le mets où ?...


ton DIM tu le met dans ta fonction que tu crees pour l'occasion.
Exemple :

PRIVATE SUB mafonction()
Dim mavariable as integer
if mavariable = 1 then ....
END SUB

si ça fonctionne bien quand mes images sont dans le même dossier


tu peux mettre tes fichiers ou tu veux par la commande :

picturebox1.picture = picture[Application.path & "/mondossier"] ca c'est le rep de l'application
picturebox1.picture = picture[home.path & "/mondossier"] ca c'est ton rep perso dans le /home

If A = 1 then PictureBox1.Picture = Picture["Image1"]
If A = 2 then PictureBox1.Picture = Picture["Image2"]


moi je ne coderai pas comme cela mais plutôt :
SELECT CASE A
CASE 1
PictureBox1.Picture = Picture["Image1"]
CASE2
PictureBox1.Picture = Picture["Image2"]
END SELECT

pour approfondir gambas je te conseille un petit tutoriel qui dégrossi pas mal :
http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=134

bonne journée
;)
Foromus#5 Posté le 28/12/2009 à 13:03:00
Très bien, mais mon Dim A, je le mets où ?...
IM tu le met dans ta fonction que tu crees pour l'occasion.
Exemple :

PRIVATE SUB mafonction()
Dim mavariable as integer
if mavariable = 1 then ....
END SUB
.[/Quote]
Voilà qui m'étonne... Si je mets ma déclaration dans la même sub, c'est clair qu'à chaque appel, ma variable va être réinitialisée : il faut donc que je la mette ailleurs. D'où ma question...
.

si ça fonctionne bien quand mes images sont dans le même dossier
ux mettre tes fichiers ou tu veux par la commande :

picturebox1.picture = picture[Application.path & "/mondossier"] ca c'est le rep de l'application
picturebox1.picture = picture[home.path & "/mondossier"] ca c'est ton rep perso dans le /home

If A = 1 then PictureBox1.Picture = Picture["Image1"]
If A = 2 then PictureBox1.Picture = Picture["Image2"]


moi je ne coderai pas comme cela mais plutôt :
SELECT CASE A
CASE 1
PictureBox1.Picture = Picture["Image1"]
CASE2
PictureBox1.Picture = Picture["Image2"]
END SELECT
;)[/Quote]

Bien, je note le chemin.path

Les "If then" étaient juste pour l'exemple, moi aussi je choisirais plutôt "select case" !

Bien, j'arrête ici, puisque dans le mauvais fil, je poserai mes prochaines questions dans un autre !

Merci beaucoup pour tous ces renseignements.
spheris#6 Posté le 28/12/2009 à 13:38:00
foromus,
le dim declare une variable locale (c'est a dire a l'interieur de la fonction)
si tu veux l'utiliser dans tout le programme, declare la en debut de formulaire non avec dim mais avec public ou private comme ceci :

' Gambas class file
PRIVATE mavariable AS Integer

PUBLIC SUB Form_Resize()
....
END


puis initialise la a la valeur voulu lors de l'ouverture de ton form

PUBLIC SUB Form_Open()
mavariable = 3
END SUB

et le tour est joué !
:D

Remarque :
par contre étant donné la puissance du langage gambas et son approche objet, il vaut mieux utiliser des variables locales plutôt que globale.
mais bon ,comme tu viens du monde VB, tu peux les utiliser sans soucis !
;) ;)
1