Bonjour,
Philippe nous livre ici un excellent programme pour apprendre à manipuler les bases de données sqlite en Gambas.
Ce logiciel vous permettra de comprendre:
- Comment créer une base de données
- Comment ajouter, supprimer, modifier une occurence.
- Comment faire une copie d 'écran
- Comment imprimer l 'intégralité de la base.
- Comment gérer une interface multilangue.
Merci à philippe pour son excellent travail.
(renommez le fichier en gestbase.tar.gz pour l 'ouvrir)
Bonjour,
Une petite astuce aujourd 'hui qui consiste à compiler un projet en gambas 3 en ligne de commande.
Il vous suffit d 'ouvrir un terminal et de taper la commande suivante:
gba3 ledossierprojetgambas
Ainsi dans votre dossier de l 'application, l 'exécutable sera généré.
Merci pour votre attention.
bonjour,
Aujourd'hui je vous propose un exemple du composant gb.scanner pour scanner un document.
Le resultat sera chargé dans une picturebox.
A)detection de votre scanner
Pour les possesseurs d'un scanner ouvrez un terminal et tapez en ligne de commande :
vous devriez lire le nom de votre scanner comme ceci (pour mon appareil connecté) :
device 'brother4:bus3;dev3'
B) créer un nouveau projet
créez maintenant un nouveau projet graphique Gambas 3 ou ouvrez les sources présentes en bas de page.
Je choisi gtk2 par souci de compatibilité.
C) Voici le code de mon application:
Private monscan As Scanner
Public Sub Button1_Click()
Dim myimg As Image
myimg = monscan.Scan()
PictureBox1.Image = myimg
End
Public Sub Form_Open()
Me.Center()
monscan = New Scanner("brother4:bus3;dev3")
End
Public Sub binfo_Click()
If monscan.IsAvailable() Then 'Test if scanner is online and available return one boolean
Label1.Text = "scanner connected"
Else
Label1.Text = "Scanner not connected"
Endif
lname.Text = monscan.Name 'return our brother4:bus3;dev3 text
lmodel.Text = monscan.Model 'return string model of your scanner
lvendor.Text = monscan.Vendor 'return string vendor of your scanner
ltype.Text = monscan.Type 'return string connection type of your scanner
End
Public Sub CheckBox1_Click()
PictureBox1.Stretch = CheckBox1.Value
End
une petite remarque cependant:
pour créer un nouveau scanner "monscan" dans Form_open, je dois dire quel DEVICE (matériel) je possède entre les parenthèses.
C'est pour cette raison que je dois d'abord lancer le terminal pour le détecter.
le déclenchement d'un scan est tout simplement déclenché par la commande monscan.scan()
l'image est ensuite affichée dans la picturebox1.
Merci pour votre attention.
Bonjour,
Une petite astuce aujourd'hui pour capturer votre écran et le sauvegarder dans un fichier PNG ou jpg.
Il vous suffit d'écrire :
Desktop.Screenshot(votrewidget.ScreenX, votrewidget.ScreenY, votrewidget.Width, votrewidget.Height).Save(System.User.Home & "/maphoto.png", 500)
500 est la qualité de compression pour votre format PNG
Bien sur dans les composants cochez gb.desktop.
Merci pour votre attention
Bonjour, aujourd 'hui nous allons voir une petite astuce bien sympa, l 'instruction ENUM.
Vous pouvez donner des noms à vos variables de type integer avec la commande ENUM comme ceci:
Private ENUM bleu, jaune,vert,rouge,gris
qui seront respectivement égal à bleu = 0, jaune=1,vert=2, rouge=3 et gris = 4.
Cette instruction est très pratique lorsque vous manipulez les tableaux, ou tout composant à base de tableau (gridview, tableview, etc...)
Le code s 'en trouve plus facilement compréhensible.
Pour reprendre l 'exemple précédent nous pourrions écrire :
montableau[gris] = Hello
ou
Dim macouleur As integer
macouleur = vert 'macouleur prendra la valeur 2
Ainsi, il vous sera plus facile de comprendre le code.
Merci à valaquarus pour cette astuce.
Documentation Hors ligne
Bonjour,
Vous êtes à la campagne, pas de réseau mobile, et vous vous sentez l'inspiration du programmeur.
Vous démarrez votre ordinateur et exécutez Gambas.
Seulement, vous ne vous rappelez plus comment utiliser telle ou telle instruction/fonction.
Et....catastrophe! la documentation de gambas n'est pas consultable. Comment faire?
Prenez les devants. Téléchargez la avant de partir.
dans le menu OUTILS, PREFERENCES, une fenêtre s'ouvre et procédez de cette façon:
A) Cochez Documentation Hors ligne
B) téléchargez la documentation et patientez une ou deux minutes.
Aucun message ne vous le dira, mais votre documentation est maintenant sur votre ordinateur.
Essayez de poser un bouton sur une form et dans le code écrivez ceci :
Button1.T
et la doc s'affichera dans un popup vous proposant les propriétés du Bouton.
Merci pour votre attention.
Bonjour,
J'ai trouvé en glanant dans le code source d'une application bien connue un moyen d'afficher une form derriere toutes les fenetres dans la surcouche Xwindow.
C'est très pratique si vous voulez afficher votre application sur l'ecran principal si vous utilisez openbox, fluxbox, ou icewm.
Pour cela, dans votre projet gambas graphique, il vous suffit de créer une classe nommée Atom et y ajouter le code ci dessous:
Static Private $cAtom As New Collection
Static Public Sub _get(sAtom As String) As Integer
Dim iAtom As Integer
Try iAtom = $cAtom[sAtom]
If Error Then
iAtom = X11.InternAtom(sAtom, True)
$cAtom[sAtom] = iAtom
Endif
Return iAtom
End
ensuite, vous appelez simplement cette classe dans le Form_open() de votre fenêtre principale comme ceci :
X11.SetWindowProperty(Fmain.Id, Atom["_NET_WM_WINDOW_TYPE"], Atom["ATOM"], Atom["_NET_WM_WINDOW_TYPE_DESKTOP"])
De cette façon, vous pouvez créer une application type Bureau à la lxde,xfce ou autre.
Merci pour votre attention.
Bonjour,
pour envoyer des données ASCII au port série en gambas 3, rien de plus simple.
Il vous suffit de définir les propriétés du port, de l'ouvrir pour lancer la communication et envoyer les données comme ceci :
'propriétés du port
If scmd.Status = Net.Inactive Then scmd.portname = "/dev/ttyUSB0"
scmd.Speed = 4800
scmd.Parity = 0
scmd.StopBits = 1
scmd.DataBits = 8
scmd.FlowControl = 0
scmd.Open() 'ouverture du port
Endif
l'envoi des données se fait par la commande :
If scmd.Status = Net.active Then
Print #scmd, mytext;
EndIf
avec mytext une chaine de caractères.
Mais si vous voulez envoyer autre chose que du texte, une variable de type byte, integer, short, long ou autre, il vous suffit d'utiliser la commande WRITE comme ceci en spécifiant le type de données envoyées :
Write #scmd,myvariable as byte
merci pour votre attention.
Bonjour,
Aujourd'hui nous allons voir une petite routine pour convertir des secondes en jour, heure minutes et secondes au format :
1j50h30m20s.
Il suffit d'utiliser l'instruction WHILE WEND.
Voici le code :
Private Sub cvjhms(mysecond As Integer) As String ' conversion en jour heure mlinute secondes des secondes
Dim myresult As String
Dim myday As Integer
Dim myhour As Integer
Dim myminutes As Integer
While mysecond >= 86400
Inc myday
mysecond = mysecond - 86400
Wend
While mysecond >= 3600
Inc myhour
mysecond = mysecond - 3600
Wend
While mysecond >= 60
Inc myminutes
mysecond = mysecond - 60
Wend
myresult = Str(myday) & "j" & Str(myhour) & "h" & Str(myminutes) & "m" & Str(mysecond) & "s"
Return myresult
End
Appelez simplement cette méthode comme ceci :
dim monresultat as string
monresultat = cvjhms(456789)
merci pour votre attention.
(si l'ouverture du fichier ne fonctionne pas renommez le fichier en modbus.tar.gz)
Bonsoir,
Une astuce super pratique dans gambas 3.xx
Si vous codez un gros projet, vous avez une liste de méthodes à réaliser,
vous pouvez écrire des commentaires .
Commencez vos ligne de commentaire par une apostrophe puis par les 3 mots clefs :
TODO:
FIXME:
NOTE:
tous vos commentaires seront regroupés dans une liste de tâche à faire en bas à coté de la console. Génial non?
Merci à Benoit pour cette superbe option.
Décalage de l'interface, erreur de compilation, que faire?
Bonjour,
Aujourd'hui nous allons évoquer un problème qui revient assez souvent avec notre gambas version 3.x.
Certains projets gambas téléchargés en code source sur internet ne sont pas conformes à ce que le codeur principal a fait.
Des polices de cractère beaucoup trop grandes ou trop petites, des widgets (éléments de l'interface) complètement décalés, ou pire une erreur lors de la compilation en indiquant que des composants ne sont pas installés.
A) Problème de polices de caractères.
1- Solution sans toucher au code : Si votre application gambas se compile mais a une police qui est trop grande ou trop petite, essayez de changer la taille de la police par défaut dans les paramètres de votre bureau.
En effet, lorsque on code en gambas, par défaut les éléments de l'interface ont une police dite 'proportionnelle' (checkbox nommée 'relatif' dans les propriétés Font de chaque widget) ce qui ajuste automatiquement la taille en fonction de votre environnement linux.
2- Solution en touchant le code : Modifiez la propriété FONT de tous les éléments dans toutes les form et décochez 'RELATIF'
B) Problème de widget décalés.
Si vous vous retrouvez avec plein de widgets décalés par rapport au programme original, c'est surement que le codeur de l'application n'a pas le même environnement linux que le votre. Les form s'adaptent avec votre environnement à la manière de vecteurs proportionnels. Cette option est cochée par défaut dans toutes vos form, c'est la propriété SCALED =True.
Dans toutes les form passez la à False et vos form seront à la même dimension quelque soit le bureau.
Petite remarque : Cette propriété est par défaut car il semble judicieux d'adapter la taille du programme gambas en fonction de la résolution de votre écran pour le meilleur confort d'utilisation.
C) Du code source qui ne se compile pas avec des erreurs de composants non installés.
gb.qt4 non installé, ou autres erreurs de ce type?
1- La solution la plus simple est d'installer le composant manquant par votre gestionnaire de paquet habituel.
2- Dans le répertoire de votre application gambas, il y a un fichier caché nommé '.Project'.
Ce fichier rassemble diverses informations comme les composants utilisés, si le projet est traduisible ou autre...
Vous voyez la liste des composants de cette manière :
# Gambas Project File 3.0
Title=Myproject
Startup=FMain
Version=0.0.83
Component=gb.image
Component=gb.qt4
Component=gb.form
Component=gb.db
Component=gb.db.form
Component=gb.db.sqlite3
Component=gb.desktop
Component=gb.desktop.x11
Component=gb.settings
Component=gb.net
Component=gb.net.curl
Component=gb.net.smtp
Component=gb.web
TabSize=2
Translate=1
Language=po
KeepDebugInfo=0
Packager=1
Pour mon exemple, il me suffit simplement de changer gb.qt4 par gb.gtk, sauvegarder, et relancer gambas et ouvrir le projet.
Mais des erreurs peuvent apparaitre pour des widgets qui n'existent pas (LCDNumber par exemple en gtk).
Il suffit dans le fichier FORM où se situe le LCDNumber de remplacer ce fameux widget par un autre qui hérite des mêmes propriétés. Un exemple :
Remplacer un LCDNumber par une ValueBox :
{ mylcd LCDNumber
MoveScaled(66,84,24,10)
Background = &H000000&
}
Modifié par :
{ lcdco2 ValueBox
MoveScaled(66,84,24,10)
Background = &H000000&
}
Je vous renvoi sur ce tuto pour plus de détail pour les fenêtres proportionnelles et les polices :
http://gambaslinux.fr/articles.php?lng=fr&pg=2220
Merci de votre attention
Pour les nostalgiques ou pour ceux qui ont découvert le PC1512 d 'amstrad, l 'amiga, avec l 'interface de digital research à l 'époque, ce logiciel leur plaira.
Voici le bureau du GEM reconstitué en Gambas 3.
Ce projet est en développement et je vous poste la première version béta. D 'autre suivront ces prochains jours.
Petite application pour les nostalgiques de windaube.
GBentrepreneur est un logiciel pour gérer sa micro-entreprise en temps qu 'auto-entrepreneur.
Il remplace le fameux cahier achats/recettes et vous donne en temps réel la taxe à payer, le chiffre d 'affaire et la TVA non récupérable.
A l 'origine ce logiciel était en GB2, maintenant il est porté sous GB3 avec quelques améliorations.
Si vous souhaitez l 'utiliser, apporter des modifications, ou autre, vous pouvez télécharger les sources ICI:
J 'avais commencé ce projet il y a quelques temps, je n 'ai malheureusement pas le temps de le finir. Si quelqu 'un est intéressé,