Dessiner des lignes

Rédigé par spheris Aucun commentaire
Classé dans : apprentisssage, Drawarea, gambas 2, Tutoriel, Widget Mots clés : aucun
GBLINE


gbline.png
portage sous GB d'un petit programme en qbasic.

TELECHARGER LE FICHIER

Voici le code entier de l'aplication en gambas 2 :

' Gambas class file

PUBLIC SUB _new()
END

PUBLIC SUB Form_Open()
ME.Center
END

PUBLIC SUB Form_Resize()
DrawingArea1.Width = ME.Width
DrawingArea1.Height = ME.Height
END

PUBLIC SUB Timer1_Timer()
DIM w AS Integer
DIM x AS Integer
DIM y AS Integer
DIM z AS Integer
DIM col AS Integer
RANDOMIZE
w = Int(Rnd * 600)
x = Int(Rnd * 600)
y = Int(Rnd * 600)
z = Int(Rnd * 600)
col = Int(Rnd * 10)
Draw.Begin(DrawingArea1)
Draw.Line(w, x, y, z)
Draw.End
END

GBgenealogie

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
GBGENEALOGIE

gbgenealogie.png
J 'avais commencé il y a quelque temps de cela un logiciel de genealogie pour gb avec base sqlite3.
Je ne l 'ai pas terminé faute de temps.
Si quelqu 'un veut bien le continuer, voici les sources à dispo.
TELECHARGER LE FICHIER
);

Le port parallele

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
UTILISER LE PORT PARALLELE SOUS GAMBAS



portparallele.gif

Pour utiliser le port parallèle sous gambas linux,nous pouvons le piloter de deux manières différentes.

1- PILOTAGE PAR LA COMMANDE TERMINAL LPR

Il faut donc utiliser une astuce décrite ci dessous.

Il faut passer par une commande depuis le terminal , la commande LPR qui imprime un fichier
ce qui nous donne :

PUBLIC SUB imprimer()
DIM hProcess AS Process
hProcess = SHELL lpr & /repertoire_dufichier/monfichier.txt & &
END


Pour informations, voici le détail de la commande lpr :

NOM

lpr - Imprime des fichiers  

SYNOPSIS

lpr [ -E ] [ -P destination ] [ -# nombre de copies [ -l ] [ -o option ] [ -p] [ -r ] [ -C/J/T titre ] [ fichier(s) ]  

DESCRIPTION

lpr demande l 'impression de fichiers. Si des fichiers sont donnés dans la ligne de commande, ceux-ci sont envoyés à la destination donnée (ou la destination par défaut si aucune n 'est fournie). Si aucun fichier n 'est donné dans la ligne de commande, lpr lit les fichiers sur l 'entrée standard.  

OPTIONS

Les options suivantes sont reconnues par lpr :
-E

Force le cryptage lors de la connexion au serveur.
-P destination

Imprime les fichiers vers l 'imprimante donnée.
-# nombre de copies

Définit le nombre de copies (de 1 à 100).
-C nom

Définit le nom du travail d 'impression.
-J nom

Définit le nom du travail d 'impression.
-T nom

Définit le nom du travail d 'impression.
-l

Spécifie que le fichier est déjà formaté pour la destination, et qu 'aucun filtre n 'a besoin d 'être appliqué. Cette option est équivalente à « -oraw ».
-o option

Définit une option pour le travail d 'impression.
-p

Spécifie que chaque page du fichier à imprimer doit avoir un en-tête ombré, contenant la date, l 'heure, le nom du travail d 'impression et le numéro de page. Cette option est équivalente à « -oprettyprint » et n 'est utile que dans le cas de fichiers texte.
-r

Spécifie que les fichiers doivent être effacés après impression.

2- PILOTAGE PAR LA COMMANDE SEEK DE GAMBAS

moniteuretaportparallele.png

Lapenduledargent, fidele utilisateur de GB nous montre avec cet exemple qu 'il est possible de piloter le port parallele au meme titre que le port série par la commande SEEK

TELECHARGER L 'EXEMPLE
);

L electricien

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
L 'ELECTRICIEN

electricien.png
...il y a de quoi péter les plombs !... disais je lorsque j 'ai ouvert le tableau électrique wink
Dans ce jeu il vous faut cliquer sur les fenêtres pour les éteindre, mais attention !
L 'installation est faite avec de multitudes de télérupteurs et de va et viens, impossible de s 'y retrouver. Aidez ce pauvre électricien !
Alors...A vos souris !
TELECHARGER LE JEU
);

K8055 VM110 sous gambas

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
PILOTER LA CARTE K8055/VM110 SOUS GAMBAS LINUX

k8055.jpg

Aujourd 'hui nous allons voir comment piloter par l 'USB le module VELLEMAN K8055 (a monter soi même) ou VM110 (tout prêt).
Nous utiliserons une interface écrite en GB pour piloter notre carte.
D 'abord, il vous faudra installer l 'executable K8055 que vous pourrez compiler ICI :
http://libk8055.sourceforge.net/#download
Une fois cela etant fait.
Passons maintenant a l 'interface:

CONFIGURATION DE LA CARTE
un petit lsusb en ligne de commande vous prouvera que la carte est bien détectée.


INTERFACAGE AVEC GAMBAS
Le principe est simple. nous allons nous servir de la commande EXEC qui execute un binaire depuis le terminal.
Le binaire à exécuter sera k8055 suivi de parametres.
les paramètres sont décrits dans la documentation du pilote développé pour linux, mais rappelons les.

PILOTAGE VOIES ANALOGIQUES
nous utiliserons un SLIDER avec l 'evènement change

Public slider1_change()
dim mavaleur as integer
mavaleur = slide1.Value * 100
EXEC [ k8055 , -p:1 , -a1: , mavaleur ]

la voie 1 est a1 et la voie 2 est a2 valeur de 0 a 255 soit 0 a 5 volts
-p:1 est le port de la carte (4 ports de 0 à 3) configurable par des cavaliers sur la carte.

PILOTAGE SORTIE NUMERQUE
nous utiliserons des checkbox avec l evenement clic

Public checkbox_clic()
DIM le_nbre_decimal as INTEGER
EXEC [ k8055 , -p:1 , -d: , le_nbre_decimal ]

Le nombre decimal est un nombre entre 0 et 255
ainsi pour piloter l 'entree 1 il faut envoyer d:1
pour l 'entree 4 (soit 00001000 en binaire) il faut envoyer 8, etc...

ACQUISITION DES ENTREES
pour l 'acquisition des entrees, il faut utiliser le parametre -num:
cela nous retournera une chaine de valeur séparés par le signe ;
il sufira de traiter cette chaine comme dans l 'exemple ICI pour  en extraire les données.

Public button1_clic()
EXEC [ k8055 , -p:1 , -num: ] TO textarea1
END

Un petit fichier texte livré avec le pilote K8055 vous aidera à comprendre et a détailler la chaine de caractères recu ( TELECHARGER ICI la notice)

L 'interface d 'exemple  est en cours de finition.
Je le mettrai  en ligne très bientôt
A bientôt

 


);

Mon journal intime

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
MON JOURNAL INTIME

monagenda.png
Mon journal intime est une petite application fonctionnant avec une base sqlite3.
Il permet de saisir l 'humeur du jour, ce que vous avez fait ou ce que vous ressentez.
Un journal intime quoi !
TELECHARGER LE FICHIER
);

Transparence de la Form

Rédigé par spheris Aucun commentaire
Classé dans : apprentisssage, Form, gambas 2, Tutoriel Mots clés : aucun
TRANSPARENCE D'UN FORM

fenetreronde.png
Aujourd'hui nous allons utiliser la propriété de transparence de la fenêtre.
Cette propriété est bien pratique lorsque vous voulez ne pas créer une fenêtre rectangulaire mais de forme alléatoire.
Il y a deux étapes essentielles :
Mettre en fond de notre form une image gérant la transparence (xpm,png) par la propriété :
ME.PICTURE
puis passer la propriété MASK à TRUE
Exécutez le code et vous vous trouvez en présence de l'iamge seule.
Ajoutez lui les évènement mouse_down et mouse_move et vous pourrez bouger votre fenêtre.
L'exemple ci dessous vous montrera que les possiblités sont multiples.

Macaisse

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
MACAISSE

macaisse.png
Macaisse est un logiciel de caisse pour restaurant.
Il fonctionne avec une base de données sqlite3 intégrée aux sources.
La partie impression du ticket de caisse n 'est pas encore achevée...
Il peut fonctionner avec un écran tactile ou un souris.
TELECHARGER LE FICHIER
);

Raccourcis clavier de l IDE

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
Raccourcis clavier avec l 'IDE Gambas



Il existe des raccourcis clavier bien pratiques à utiliser.
Lorsque vous en aurez appris certains, vous ne pourrez plus vous en passer et vous gagnerez en rapidité et efficacité .
voici par thématique les raccourcis disponibles.

Action sur le projet :

Nouveau projet : CTRL + N
Ouvrir un projet : CTRL + O
Enregistrer le projet courant : CTRL + ALT + S
Enregistrer le projet sous un autre nom : CTRL + ALT + SHIFT + S
Compiler le projet : F7
Compiler tout le projet : ALT + F7
Traduire le projet : CTRL + T
Générer un exécutable : CTRL + ALT + M
Générer une archive des sources : CTRL + ALT + A
Générer un paquetage d 'installation : CTRL + ALT + I
Propriété du projet : CTRL + P

Exécution du programme :

Lancer l 'exécution du programme : F5
Mode Pas à pas : F8
Avancer d 'un pas : SHIFT + F8
Exécuter jusqu 'à la ligne courante : SHIFT + F5
Basculer un point d 'arrêt : F9

Affichage de l 'IDE :

Affichage de la fenêtre Projet : F10
Affichage de la fenêtre propriétés : F4
Affichage de la fenêtre Boite à outils : F6
Affichage de la fenêtre Console : F11
Fermer toutes les fenêtres : CTRL + ALT + W

Outils de l 'IDE :

Rechercher et remplacer : CTRL + F
Préférences de l 'IDE : CTRL + ALT + P
Aide : F1

Voilà pour aujourd 'hui


);

selectionner le tabstrip

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
SELECTIONNER LE TABSTRIP

selecttab.png

Aujourd 'hui nous allons voir comment selectionner le tabstrip que l 'on veut.
En effet, il n 'y a pas de commande du style :
tabstrip.select = 2

ERRATUM :
en fait si il en existe une (merci Gambixwink) qui est :


tabstrip1.index = 2



on peut aussi utiliser une astuce simple qui consiste a desactiver les tabstrips precedent a celui que l 'on veut puis les reactiver comme dans cet exemple :

je veux activer le 3eme tabstrip qui correspond au numero 2 (car on compte 0,1,2)
donc j 'ecris dans l 'evenement button1_click le code suivant :

PUBLIC SUB Button1_Click()
TabStrip1[0].Enabled = 0
TabStrip1[1].Enabled = FALSE
TabStrip1[0].Enabled = 1
TabStrip1[1].Enabled = TRUE
END

Remarque :
Une donnée booléenne 0 ou 1 ou une expression TRUE ou FALSE marchent aussi bien l 'une que l 'autre après le signe egal

Voila pour aujourd 'hui, simple non ?

);

Les mots melanges

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
LES MOTS MELANGES

motmelange.png

L 'ordinateur propose dans ce jeu des lettres dans le désordre. Remettez les dans l 'ordre pour former le mot, et c 'est gagné !
Merci à Jacques pour cette excellente contribution.wink
);

La commande SYSTEM

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
La commande systeme

userinfo.png
Aujourd 'hui nous allons voir la commande SYSTEME de Gambas.
Il vous fournit une multitude de renseignements précieux sur votre ordinateur.
Ce petit exemple très simple se passe decommentaire tellement il est simple.
Agrementons cependant le code de commentaires :

' Gambas class file

PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()
ME.Center
END

donne la version de gb
PUBLIC SUB Button1_Click()
Message.Info( Vous êtes à la version: & System.Version)
END

donne le répertoire courant
PUBLIC SUB Button2_Click()
Message.Info( Répertoire courant du système: & System.Path)
END

donne la langue du systeme utilisée
PUBLIC SUB Button4_Click()
Message.Info( Langue du système utilisée: & System.Language)
END

Donne le nom de l 'hote reseau de votre ordinateur
PUBLIC SUB Button3_Click()
Message.Info( Nom de l 'ordinateur Hôte: & System.Host)
END

Donne le nomde domaine
PUBLIC SUB Button6_Click()
Message.Info( Nom du domaine: & System.Domain)
END

Donne le codage de caractères utilisé
PUBLIC SUB Button5_Click()
Message.Info( Système de Caractères utilisés: & System.Charset)
END

Ferme la fenêtre
PUBLIC SUB Button7_Click()
ME.Close
END

Remarque : toujours utiliser Me.close et non pas QUIT

);

Notdefrais

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
NOTDEFRAIS

notdefrais.png

Ce logiciel vous aidera dans la gestion de vos notes de frais.
Il est un outil simple et idéal pour tous les gens qui font des déplacements.
Vos remarques sont les bienvenues.
TELECHARGER LE FICHIER
);

Executer un programme

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
EXECUTER UN PROGRAMME GAMBAS


Il y a plein de programme gambas sur le site, très bien mais que dois faire pour les utiliser ?
Et bien c 'est ce que nous allons voir aujourd 'hui.

Lorsque vous téléchargez un programme gambas, il peut être de trois formes différentes.

  • 1- soit vous téléchargez un fichier du type toto.tar.gz, il s 'agit du répertoire des sources GAMBAS compréssé avec l 'application déjà compilée (sinon voir cas 3), au quel cas il vous faut le décompresser dans le répertoire de l 'utilisateur et lancer l 'exécutable du type toto.gambas.
Il apparaitra un dossier avec son qui est le début de l 'archive  soit toto

  • 2- Soit vous téléchargez un fichier toto.deb, toto.rpm, qui est un package d 'installation de l 'application gambas.

  • 3- Soit vous téléchargez un fichier du type toto.tar.gz, il s 'agit du répertoire des sources GAMBAS compréssé, au quel cas il vous faut le décompresser dans le répertoire de l 'utilisateur et le compiler s 'il n 'y a pas d 'exécutable.
voici donc la procédure à suivre pour compiler un exécutable Gambas à partir des sources :

décompressez le répertoire avec ses sources dans le dossier de l 'utilisateur.
Vous avez maintenant un répertoire qui a le nom du projet (exemple de toto ) : /home/utilisateur/toto

maintenant ouvrez Gambas par le menu ou par le terminal par la commande gambas2

ouvrez un projet et parcourez votre ordinateur pour chercher le projet toto

projet01.jpg

ouvrez le.

Maintenant cliquez sur compiler (le petit engrenage ci dessous)


projet02.jpg

la compilation terminée,  vous pouvez fermer gambas

maintenant allez dans le répertoire de l 'application /home/utilisateur/toto
et lancez l 'application avec l 'icone de la crevette toto.gambas

projet03.jpg

ici nous avons le projet apparition.gambas

bonne journée
smile
);

cacher un tabstrip

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
Cacher un tabstrip

pour cacher un tabstrip, rien de plus simple, il vous suffit de taper le code suivant :

TabsStrip1[2].visible = false

2 étant l 'index du tabstrip c 'est à dire celui que vous voulez cacher.

ATTENTION : l 'index du tabstrip commence à 0



Boite de dialogue ouvrir

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
selectionner un fichier png

Nous allons ouvrir une boite de dialogue par un bouton pourselectionner un ficher PNG uniquement.
Le nom et le chemin nous seront retouné dans une textbox.
Voici le code :

PUBLIC SUB Png_Click()
  Dialog.Filter = FileFilter(TRUE)
  Dialog.Path = User.home
  Dialog.Title = S?lection du fichier png
  IF Dialog.OpenFile() THEN RETURN
  Fpng.Text = Dialog.Path
CATCH
  Message.Warning(ERROR.Text)
END

PRIVATE FUNCTION FileFilter(OPTIONAL All AS Boolean = FALSE) AS String[]
  DIM filter AS NEW String[]
  filter.Add( *.png )
  filter.Add( Fichiers png )

  RETURN filter
END


);

importer un fichier csv dans une gridview

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
IMPORTER UN FICHIER CSV DANS GB

csvtogb.png
Aujourd 'hui nous allons essayer d 'importer un fichier CSV (Fichier texte expoté de open office qui a des champs séparés par un symbole  point virugle, virgule ou autre...) dans une columnview de GB.
CREATION du FICHIER CSV
ouvrez open office tableur ou gnumeric puis saisissez des valeurs dans les cellulles.
enregistrez votre fichier au format CSV séparé par des points virgules.
nommez le monfichier.csv.

CREATION DU PROGRAMME.
Maintenant ouvrez votre IDE GAMBAS préférée et créez un  projet :
nommez le csvtogb.
ajouter au formulaire Fmain un bouton puis une columnview.
Saisissez ce code :

PUBLIC key AS Integer
PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()
ME.Center
END
PUBLIC SUB Button1_Click()
'clic sur bouton des contacts
DIM hFile AS File
DIM sLine AS String
DIM numclient AS Integer
DIM Car AS String
DIM bal AS Integer
DIM Pos AS Integer
DIM a AS Integer
ColumnView1.Columns.Count = 10 'nombre de colonne de votre fichier CSV exemple a 10
ColumnView1.Columns[0].Width = 150
'ouvre le fichier CSV dont les champs sont separés par des points virgules
hFile = OPEN Application.Path & /monfichier.csv FOR INPUT
'Ajouter les donnees dans la columnview
bal = 1
Car = ;

Utiliser le Workspace

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
WORKSPACE OU FENETRE MDI

Ce widget  bien pratique permet de faire une application multi fenêtre.
nous allons réaliser un petit exemple avec trois Form ,un principal nommé Fmain et deux autres Form1 et Form2 qui seront inclu dans Fmain.

CREATION PROJET
creer le projet nommé myworkspace et trois Form comme ceci :

workspace1.png

inserez trois menus
-un menu formulaire
un  sous menu Form1
-un sous menu Form2
comme ceci :

workspace2.png

maintenant allons dans propriété pour cocher le composant workspace soit GB.FORM.MDI



workspace3.png

retournons dans notre projet et maintenant dans la boite de widget l 'onglet special, nous voyon maintenant le widget WORKSPACE. choisissez le et dessinez en un :

workspace4.png

Voila notre interface créée, il nous faut passer au code :

workspace5.png

lors d 'un clic sur le menu Form1, nous allons inserer la fenetre form1 dans le workspace (ou espace de travail en francais) par la commande :

'clic sur sous menu Form1
PUBLIC SUB Menu2_Click()
Workspace1.Add(Form1)
END

puis faisons de même avec form2

PUBLIC SUB Menu3_Click()
Workspace1.Add(Form2)
END

Notre application etant terminée nous pourrons réaliser de grand projets tongue

A bientôt






);

wiki espagnol

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
Pages pour découverte de Gambas (En espagnol) avec création d 'un projet :
http://www.wikilearning.com/tutorial/curso_de_gambas/6835
);

Utiliser la drawarea

Rédigé par spheris Aucun commentaire
Classé dans : apprentisssage, Drawarea, gambas 2, Tutoriel, Widget Mots clés : aucun
UTILISER LA DRAWAREA

La drawarea comme son nom l'indique est une aire de dessin dans la quelle vous pouvez dessiner des formes géométriques.
Elle accepte des points, des lignes, des courbes, des bargraphes et même des images.

L'utilisation est relativement simple.
Lorsque vous voulez dessiner dans la drawarea, il vous suffit d'ouvrir une "connexion" (au sens literral) par la commande :

draw.begin(drawingarea1)

puis inserez maintenant ce que vous voulez faire a savoir :

pour une ligne :
draw.LINE(0,0,10,10)

pour un cercle :
draw.circle(0,0,10,10)

pour une elipse :
draw.elypse(0,0,10,10)

pour du texte :
draw.text("bonjour",10,10)

pour une image :
draw.picture(picture["monfichier.png"],10,10)

une fois fini, n'oubliez pas de fermer la "connexion par la commande :

draw.END

Pour enregistrer le contenu de la drawarea dans un fichier image, il vous suffit d'utiliser la méthode GRAB comme ceci :

PUBLIC SUB menuenregistre_click()
DIM monfichier AS File
DIM monimage AS new picture
monimage = drawingarea1.grab()
dialog.path = $­spath
IF dialog.saveFile() THEN return
$­spath = dialog.path
monfichier = OPEN $­spath FOR create
monimage.save($­spath)
END

enfin pour ne pas qu'une fenetre devant vienne effacer le contenu de la drawarea, il vous suffit de mettre la propriété CACHED a true et la drawarea devient non editable !
Bonne soirée à tous
wink

Transparence du label

Rédigé par spheris Aucun commentaire
Classé dans : apprentisssage, gambas 2, Label, Tutoriel, Widget Mots clés : aucun
TRANSPARENCE D'UN LABEL

Il faut savoir que GB gere mal la transparence des widgets. (C'était peut être vrai à l'époque mais gambas 3 est passé par là) Et il n'est pas possible pour certaine applications de faire bouger les widgets sans un carré autour.
Il existe cependant une astuce ( merci a jacques pour sa piste !) qui permet de jouer avec le parametre TRANSPARENCE. Le voici détaillé pour vous aujourd'hui :

Nous allons créer une application avec une image en fond et des que l'utilisateur cliquera sur la tete du personnage sur notre photo, un message d'information dira que l'on a cliqué sur la tête.

Créons un projet nommé transparent.

double click sur Fmain pour afficher le form.
ensuite dans la propriété PICTURE, mettre notre fond (image homm.jpg dans l'exmple)

ensuite ajoutons un label au niveau de la tête. Difficile me direz vous car nous ne voyons pas l'image de fond.
J'utilise donc gimp pour trouver les coordonnées de la tête.
posez le labelet redimensionnez le a la taille de la tête.

Maintenant, enlevez le texte en enlevant LABEL1 dans la propriété TEXT.


Mettez la proprieté TRANSPARENT a TRUE (voir photo ci dessous ) :


label.png

 et sur le label ajoutez l'evenement MOUSEDOWN.
dans cette nouvelle fonction ,ecrivez le code suivant :

PUBLIC SUB Label1_MouseDown()
Message.Info("you click on the head !!")
END

Executez votre application, ca marche !!
wink

TELECHARGER L'EXEMPLE ICI

Voici le code de l'application :

' Gambas class file

PUBLIC SUB _new()
END

PUBLIC SUB Form_Open()
ME.Width = 455
ME.Height = 367
ME.Center
END

PUBLIC SUB Label1_MouseDown()
Message.Info("you click on the head !!")
END

cours 3eme partie

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
COURS 3 :  Un BLOC NOTE EN GB


pour notre 3eme cours 'ou 4eme, je ne sais plus !!! eek ) nous allons réaliser un petit éditeur de texte en GAMBAS (que nous nommerons GB par la suite)

ouvrez gb et creons un projet graphique Qt ou GTK.
maintenant double cliquez sur Fmain pour faire apparaitre la fenetre
double cliquez sur lafenetre fmain pour ouvrir le code

1ERE PARTIE REALISATION DE L 'interface

dans la fonction

 fmain_open()
mettez : me.center

cela centrera la fenetre au lileu de l 'ecran quand nous lancerons notre appli
revenez maintenant par l 'onglet Fmain sur la fenetre
clic droit au milieu et  : editeur de menu
cliquez maintenant sur inserer
nous allons inserer les menus classiques a savoir:

fichier, quitter
edition, coller,copier,couper
Aide, apropos de...

les noms resteront Menu1,Menu2 etc...,  et les captions (etiquettes ) seront fichier, edition, coller...
inserez menu1 avec caption fichier
inserez menu2 (un sous menu) caption Quitter
pour faire un sous menu cliquez sur la fleche vers la droite
inserez menu3 caption Edition (menu prinicpal)
pour faire un menu principal cliquez sur la fleche vers la gauche
inserez sous menu menu4 caption copier
inserez menu5 caption couper
inserez menu6 caption coller
inserez menu7 caption aide en menu principal
inserez menu8 caption a propos de...



la gestion du texte va se faire par une Textarea
posez en une sur le Fmain.form n 'importe ou et de la taille que vous voulez
Remarque :  il semblerait qu 'il y ait une difference entre gtk et qt pour la gestion des coordonnées de l 'interface. les coordonnées ne reagissent pas de la meme  maniere, C 'est pour cette raison que j 'ai pris pour habitude de mettre la mise ne forme de mes widgets dans le code.

je met en forme mon code par la fonction resize
cliquez droit sur fmain.form
evenement, resize, ajoutez maintenant ce code :

TextArea1.X = 0
TextArea1.y = 0
TextArea1.Width = ME.Width
TextArea1.Height = ME.Height

cela etant, executez votre application et admirez le résultat
essayez meme de redimensionner la fenetre
que se passe t il ?
fenetre = textearea
maintenant arretez votre appli, nous allons nous concentrer sur le menu
dans la fenetre fmain.form cliquez sur fichier puis sur quitter, le code du menu2 s 'ouvre

PUBLIC SUB Menu2_Click()

par le menu quitter nous allons quitter l 'application par la commande .........?

Quit

eh bien NON !

Fmain qu 'elle doit se fermer par :

Me.close

ce qui donne :

PUBLIC SUB Menu2_Click()
ME.close
END

Maintenant je vais m 'occuper du menu a propos de...
retournez dans fmain.form, cliquez sur aide puis a propos de ... saisissez ceci :

PUBLIC SUB Menu8_Click()
Message.Info( petit blocnote en gambas )
END

vous l 'aurez deviné il s 'agit d 'une fenetre de message, avec un bouton ok, pour informer l 'utilisateur

maintenant nous allons nous occuper de la gestion du texte proprement dit, l 'appli lancé, l 'utilisateur saisi du texte
et il veut copier.. il selectionne son texte avec la souris puis clique sur le menu edition puis copier. Nous allons donc inserer dans le menu edition  ,copier le code suivant :

PUBLIC SUB Menu4_Click()
TextArea1.Copy
END

dans le menu couper on met:

TextArea1.Cut

et dans coller :

TexteArea.Paste

ce qui nous donne comme code :

PUBLIC SUB Menu5_Click()
TextArea1.Cut
END

PUBLIC SUB Menu6_Click()
TextArea1.Paste
END

voila pour la textarea, mais il manque un truc important a notre blocnote :

ouvrir ,modifier des fichiers.
retournons dans l 'editeur de menu, et ajoutons apres fichier, plutot entre fichier et quitter, le menu caption ouvrir, le menu enregistrer, le menu enregsitrer sous...

Maintenant cliquez sur fichier enregistrer pour ouvrir le code. Lorsque l 'utilisateur cliquera sur fichier ouvrir, il verra une boite de dialogue pour choisir le fichier.

entrez ce code :
DIM $­­­sPath AS String
'ouverture fenetre dialogue pour image
Dialog.Path = $­­­sPath
IF Dialog.OpenFile() THEN RETURN
$­­­sPath = Dialog.Path

excutez votre appli et ouvrez un fichier, une boite de dialogue s 'ouvre.Et pourtant rien dans la textarea. Il faut lier spath et textarea. $­­­sPath est une chaine de caratere qui a recu le nom complet du fichier avec l 'arborecence avec l 'extention aussi, maintenant il suffit d 'ouvrir le fichier avec la l 'instruction OPEN, de lire ligne par ligne et d 'inserer le contenu dans la texxtarea par textarea1.insert.

Ajoutez ce code :

DIM monfichier AS File
DIM maligne AS String
dans la fonction menu9, puis avant END mettez :
monfichier = OPEN $­­­sPath FOR INPUT
WHILE NOT Eof(monfichier)
LINE INPUT #monfichier, maligne
TextArea1.Insert(maligne)
WEND

explication de cette fonction :
while not tant que le fichier n 'est pas EOF (fini)
lit la ligne n+1 et sotcke dans maligne
ensuite insere dans la textarea
et reboucle par wend

executez votre code et il y a un gros probleme, il ajoute sur la meme ligne...
retounez dans fmain.form et passez la propriété wrap a TRUE .
maintenant nous allons enregistrer notre fichier modifié

REMARQUE : lorsqu 'on ouvre un nouveau fichier, il faut d 'abord effacer l 'interieur de la textarea

par

textarea1.clear


ensuite on ouvre le fichier puis a la fin de l 'ouverture, on raffraichi la textarea par

textarea.refresh

maintenant le menu enregistrer :

il suffit de reprendre la variable $­­­sPath
$­­­sPath n 'est valable que dans la fonction Menu9_Click()
en fait soit nous la sortons de la fonction menu9, soit nous en creons une autre en public
pour les cours d 'avant si on sort une variable d 'une fonction, le DIM devient PUBLIC
donc enlevons DIM $­­­sPath AS String de menu9_click() et ecrivons tout en haut avant PUBLIC SUB _new()

Private $­­­sPath AS String

maintenant dans le menu enregistrer soit PUBLIC SUB Menu10_Click()
entrons ce code :

DIM monfichier AS File
monfichier = OPEN $­­­sPath FOR CREATE
PRINT #monfichier, TextArea1.Text

on ouvre le fichier avec nom sPath pour le creer sinon ecraser celui qui existe, puis on imprime dedans le contenu texte de textarea

ASTUCE : en GB, difference avec VB, on a ps besoin de ferner le fichier par CLOSE

maintenant on s 'occupe de enregistrer sous...

la doc gb nous met meme un petit exemple a ce sujet :

Dialog.Filter = [ *.txt , Text Files ]
IF Dialog.SaveFile() THEN RETURN
File.Save(Dialog.Path, TextAreaEdit.Text)

voici donc le code pour le menu enregistrer sous :

PUBLIC SUB Menu11_Click()
Dialog.Filter = [ *.txt , Text Files ]
IF Dialog.SaveFile() THEN RETURN
File.Save(Dialog.Path, TextArea1.Text)
END

notre blocnote est vraiment bien
il lu manque encore un petit truc pour etre une vrai application pro, la commande REMPLACER bien sur !

editons notre menu et ajoutons la commande remplacer apres coller, remplacer du texte dans un textearea ?
gb nous offre un panel d 'instruction impressionnant et une simple commande REPLACE fera l 'affaire
on copie la chaine a remplacer dans le presse papier, par un textarea.copy.

mais avant il faut creer un autre formulaire avec deux texbox et deux bouton OK et annuler
clic droit sur formulaire puis creer un formulaire, nommez le fremplace

n 'oubliez pas le

PUBLIC SUB Form_Open()
ME.Center
END

puis dans le clic du bouton annuler evrivez me.close, dans le clic du bouton ok idem.

comment passer le texte copié de ma textarea a la textbox1
nous allons creer une fonction bidon dans le form fremplace avec un parametre string
exemple :

public sub jerecoiletexte(marecherche as string)
end
 
c 'est une fonction associée a aucun widget qui a un parametre(ou variable locale) de type string
allez y ecrivez ce code :

PUBLIC SUB jerecoiletexte(marecherche AS String)
TextBox1.Text = marecherche
END

maintenant que j 'ai traité la réception de ma chaine, je vais m 'occuper de l 'envoi je retourne dans fmain.form dans le menu remplacer
et dans le code je vais envoyer ma chaine avec ceci :

PUBLIC SUB Menu12_Click()
DIM machaine AS String
machaine = TextArea1.Copy
fremplace.jerecoiletexte(machaine)
END

mais la si tu executes le code il y a une enorme erreur
machaine = textarea.copy est faux car  on stocke une fonction dans une chaine
bien sur dans Menu12_Click()
il faut avant le END afficher notre fenetre fremplace par :

  fremplace.Show

puis :

machaine = TextArea1.Selection.Text
textarea1.insert


mais comme on ne peut pas faire une insertion directement dans la fmain.textarea, il faut donc passer par une nouvelle fonction bidon dans fmain
genre :

public sub jeremplace(nouveautexte as string)
end

voila pour cette fin un peu rapide, mais si vous voulez compléter ou améliorer ce bloc note, vous pouvez télécharger les sources ICI :

Bonne semaine à tous.

);

Utiliser les modules

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
PARAMETRE AU MODULE


01.jpg
Bonjour,
Aujourd 'hui nous allons passer une variable d 'une fonction à une autre

lors d 'un clic sur un bouton nous allons passer le texte saisi dans une textbox dans une autre fonction qui affichera ce texte pour etre sur qu 'il est passé.

Nous creeons une interface comme ci dessous avec un bouton button1, une textbox textbox1 et un label1.

creons maintenant un module et laissons le nom par defaut Module1
dans le module ajoutons une fonction créée de toute pièce par le code suivant :

PUBLIC SUB monarcenciel(couleur AS String)
Message.Info(couleur & est peut être une couleur de l 'arc en ciel ! )  
END


02.jpg

nous creon une fonction monarcenciel et dont couleur sera un parametre de type chaine de caractere ou en anglais String

maintenant
revenons a notre Fmain.
clic droit  sur le bouton button1 et evenement et click
maintenant ecrivons ce code :


04.jpg
PUBLIC SUB Form_Open()

END

PUBLIC SUB Button1_Click()
Module1.monarcenciel(TextBox1.Text)
END

par le button1_click, nous appelons la fonction monarcenciel se trouvant dans le module Module1 et nous precison un parametre de type chaine de caractere String. cliquons sur executer et..cela marche!


voila pour le petit exemple .
TELECHARGER LA SOURCE
);

Tutoriel anglais

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
DEUX TUTORIELS ANGLAIS

 tutoeng.png tutogambas2.png
 Ce tutoriel présente GAMBAS et les possiblités offertes par ce langage de programmation
TELECHARGER LE PDF
Ce Tutoriel présente GAMBAS 2 avec une multitude d 'exemple de code. N 'oubliez pas d 'envoyer un petit mail à l 'auteur pour le remercier
TELECHARGER LE PDF

);

bon salaire

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
LE BON SALAIRE

bonsalaire.png

CE petit outils vous montrera en temps réel le salaire que vous gagnez 'ou ce que vous pourriez gagner.
Il n 'est en aucun cas un outil qui sert au calcul.
Utilisez à vos risques et périls.
Aucune responsablilité de l 'auteur.
TELECHARGER LE FICHIER
);

cours 1ere partie

Rédigé par spheris Aucun commentaire
Classé dans : apprentisssage, gambas 1, gambas 2, gambas 3, Tutoriel, poo Mots clés : aucun

COURS 1 : PREMIÈRE APPROCHE DE LA PROGRAMMATION




A) INTRODUCTION


Dans ce cours nous allons voir la différence entre la programmation structuré et la programmation orientée objet. Ce cours a été improvisé  par un amateur alors soyez indulgent quant à la rédaction et au tournures de phrases.

B) LA PROGRAMMATION STRUCTURÉE

Pour expliquer  rapidement ce qu'est la programmation structuré, prenons un petit exemple de la vie courante.

Posons un problème simple:

je vais de la gare à chez moi, plusieurs chemin s 'offrent a moi, pourtant un seul but, c 'est un raisonnement structuré.


Je pourrais écrire un simple programme qui dirait:

-Va tout droit
-Tourne a gauche deux fois
-Si rue barrée fais demi tour.
-Va deux fois a gauche et voila tu es arrivé !


cette méthode là était valable à l’époque. on partait d 'un point a un autre en suivant bêtement la structure du programme.

Aujourd'hui avec l 'apparition des interfaces et de la programmation orientée objet (poo) le langage a évolué.

Un programme ne va plus d 'un point a un autre mais réagit a des évènements. Reprenons notre exemple en poo cette fois ci, nous pourrions écrire:


-je marche, je marche
Quelqu'un m 'interpelle et me dit à gauche
je vais a gauche et... je marche, je marche
un avion passe, je m'arrête et le regarde..
je marche..je marche
quelqu'un me pousse et... je suis arrivé !


Cette philosophie de programmation est géniale ! pourquoi ? car elle permet une souplesse de programmation exceptionnelle. Autrefois le programme était une fonction figée du début a la fin. Aujourd'hui le programme est constitué d 'une multitude de fonctions(petits bouts de codes).
Dans notre exemple :

je marche, je marche peut être comparé à la fonction principale
on la nomme MAIN (qui veut dire 'principale' en Anglais)

Quelqu'un m 'interpelle et me dit 'à gauche' est la fonction vaagauche
a la fin de vaagauche il y a  je marche, je marche curieux c 'est la fonction MAIN

et oui ! on a sauté d 'une fonction a l 'autre
Nous pouvons donc décomposer un programme en une multitude de petites fonctions appelé :OBJETS !!!!!


Petit rappel historique à titre d 'information :

Un microprocesseur, partie centrale de notre matériel,  traite des informations qui rentrent et qui sortent
par exemple, je rentre 000001010111011 j 'effectue une addition et je sors 11101110
a l 'époque des informaticiens ont inventé le langage assembleur , langage assez difficile a maîtriser qui traduit ces 000111 en code du style :
MOV 3H,CS
CALL INT3
ce qui est un peu plus compréhensible par l 'homme mais qui reste difficile à assimiler pour le commun des mortels.
le langage assembleur étant trop compliqué et les ordinateurs devenant de plus en plus performant il a fallut  changer de langage
Notre bon vieux bilou gatsou nous a sorti son BASIC (qu’il a pompé je ne sais où bien entendu)
qui est en fait une surcouche de l 'assembleur.
c 'est a dire, par exemple,


PRINT ‘’bonjour’’

 équivaudra en assembleur a :

MOV 32,CH DS 23 , CALL INT45

le basic interprétait les écritures de code compréhensibles par tous les programmeurs contenues dans un fichier .BAS.
Seulement , le code était exécuté du début jusqu'à la fin , on dit qu'il est STRUCTURE.
Avec la puissante de calcul toujours grandissante de nos machine, et la gestion multitâches, Il a fallut améliorer cela.
La notion de POO arrivait a grand pas avec le langage C.

LA PROGRAMMATION ORIENTEE OBJET OU POO
Nous ne pouvons pas parler de poo sans parler du langage précurseur, à savoir le langage C, de ce nouveau mode de programmation.

En C on utilise ce principe de bout de fonction(appelé objet) qui sont stocké dans des bibliothèques
ainsi pour prendre un exemple, je veux écrire bonjour a l 'écran avec le basic:

PRINT « bonjour »


En C , j 'importe la bibliothèque stdio.c (entree sortie affichage ecran)
puis j 'ai maintenant accès à l 'affichage écran et un printf bonjour et ca marche
Pourquoi faire plein de petites bibliotheques pour le c me direz-vous?
tu n’inclus à ton programme que ce que tu as besoin.


mais ATTENTION !
la différence fondamentale entre le c et le basic est énorme.
avec le c tu inclus tes librairies (petits bouts de code) puis tu COMPILES !
La compilation est le fait de transformer ton code pour créer un fichier exécutable autonome.
C 'est a dire qu'il marche sous toute plateforme du même type.
en basic c 'est different !
 c 'est du code Interprété !
c 'est a dire que ta machine lit ton prog au debut et raisonne comme ceci

Je lis PRINT alors je dois ecrire une chose a l ecran. ensuite bonjour donc positionne le curseur pour ecrire bonjour, ensuite...
pas de compilation en basic alors ?
non pas de compilation !

mais gambas alors ? Que fait-il exactement?
c 'est plutôt l 'interprétation de ton code a travers un petit exécutable codé en c++ !

(Sans rentrer dans le détail, ce n’est plus trop vrai avec la compilation à la volée, mais nous resterons simple pour ce tuto)
pour vérifier mes dires ouvrez cette page et lisez le début ..http://gambasbasic.fr
Gambas est un environnement de développem....
C 'est pour cette raison qu'un logiciel en gambas ne pourra tourner que sur une machine qui possède ce fameux petit executable appeléé RUNTIMES !
 y a t 'il un runtime independant de l 'ide de gambas?
Oui pas obliger d 'installer gambas mais les runtimes uniquement !A ne pas confondre les runtimes de win$ qui sont tout autre chose.

La difference entre runtime win$ / gambas ?


les runtimes windaube sont plutot des librairies graphiques en plus . Pourquoi ne peut pas inclure ces Runtimes dans les éxécutables des prog en Gambas ? parce que... ce n 'est pas un exécutable tout simplement. c 'est un langage interprété qui demande a être lu par l 'exécutable gambas nommé gbr3 que vous trouverez dans usrbin/gbr3



Concept de creation de programme
gambas est composé d 'une IDE (elle même codée en gambas) qui permet de définir l 'interface graphique.
Pour programmer il faut DEFINIR le besoin..


Prenons un exemple : la gestion d 'entretien d 'une voiture,
il faut clairement expliquer le projet
et décomposer en plein de petits bouts  notre problème
sous forme d 'arborescence

exemple :
tout en haut la voiture
ensuite en dessous les pneus
dessous les pneu, changement tous les
a coté passage en pneus neige le...
ensuite on remonte
huile
en dessous vidange le
a coté contrôle le...
J 'oubliais la vidange le
en dessous
je rentre dans la FONCTION vidange et commence a décrire la FONCTION :
ouvrir bouchon
vider huile
remettre bouchon
remplir huile

Remarque : mais dans la fonction VIDANGE cela ressemble a de la programmation structurée
et oui !
on part du début et on va a la fin de la fonction en suivant une structure
la METHODOLOGIE pour definir  notre besoin
en général j 'écris les grandes lignes sur un papier en réfléchissant un peu au contenu des fonctions
ce qui fait que mon prog pourra etre repris jour après jour en ajoutant une fonction
et puis une autre
etc...
en résumé, on DEFINI le besoin
on recense les fonctions dans une arborescence

2 eme partie l 'interface graphique
Là on s 'amuse
exemple ma fonction vidange dans l 'exemple :
une textbox pour saisir la quantite d 'huile
un bouton pour faire la vidange
un timer pour décompter les gouttes d 'huiles
etc...
l 'inspiration quoi !



3eme partie : LE CODE
l 'ide gambas est tres bien faite
et il m 'est impossible de me rappeler toutes les instructions du gambas basic
alors je bosse en multi écran
a gauche l 'ide
et a droite l 'aide gambas
voila je débute le programme par la fonction que j 'ai envie
je commence par la fonction vidange
elle me plaît celle là.
par définition et si vous lisez comment écrire le code gambas dans la doc il est dit
une fonction commence par

PUBLIC SUB nomdelafonction_evenement()
et fini par
 END

donc j 'ai tous les outils pour réaliser ma fonction :

PUBLIC SUB vidange()
END

une autre fonction allez !

la fonction attentionmanquedhuile

PUBLIC SUB attentionmanquedhuile()
END

voila pour le concept POO.
Merci de votre attention.
A bientôt