gambaslinux

Aides aux utilisateurs de gambas linux

Accueil  /  Archives 2020

La première réponse qui me viens à l'idée et d'adapter son logiciel à la résolution de son écran.


En effet, prenons un exemple.
Je veux créer un petit bloc note avec un menu simple à bouton et une partie saisie de texte.

myhbox.jpg

A) Sans Hbox/Vbox
 création de l'interface sans hbox/Vbox
Je dimensionne une nouvelle form en 500x500
Je place 5 boutons, et en dessous je place une textarea.

Je place mon code et voilà.
Je compile mon application et je mets l'appli dispo sur la forge.
Mais lorsqu'un autre utilisateur va la télécharger et l'exécuter sur son ordinateur, l'appli sera horrible à utiliser car non adapté à la résolution de l'écran.

Une astuce consiste à utiliser les widget Hbox et Vbox.
Comment procéder?
myhbox1.jpg

B) Avec Hbox/Vbox
Je vais découper mon interface comme ceci :
une barre contenant les 5 boutons alignés horizontalement. Un Hbox conviendra parfaitement (H pour Horizontal représenté en violet dans notre exemple).
Pour que les boutons remplissent l'intégralité de ma Hbox, je mets la propriété EXPAND de chaque bouton à TRUE.
LA barre de menu sera en haut et en dessous une boite de saisie de texte textarea.
J'utilise pour cela un conteneur Vbox pour aligner verticalement mes widgets.(en vers sur l'exemple).
La textarea doit remplir tout l'espace restant de ma Vbox. Je mets donc la propriété EXPAND à TRUE.

et dans le code de ma form, à l'évènement Resize je saisi ceci :

Public Sub Form_Resize()
VBox1.x = 0
VBox1.Y = 0
VBox1.Width = Me.Width
VBox1.Height = Me.Height
End


Détaillons ce code :
En premier j'aligne la vbox1 aux coordonées 0,0
ensuite je l'agrandis à la taille de ma form.

Le résultat?
si je redimensionne ma fenêtre, la totalité de mon interface sera redimensionnée. Toutes les résolutions d'écrans pourront l'utiliser sans aucun souci.
Merci pour votre attention.


Bonjour,Aujourd'hui une astuce bien pratique pour convertir automatiquement des secondes en Heures/minutes/secondes

Exemple :
Je veux convertir 5000 secondes en heures/minutes/secondes.
Voici le code :

PUBLIC SUB Main()
DIM myseconds AS INTEGER = 5000
PRINT Format$(Date(0, 0, 0, 0, 0, 0, myseconds * 1000), "hh nmin ssec")
END



Petite explication :
La date ci dessus est écrite sous ce format :

Date(year,month,day,hour,minute,second, millisecond)
C'est pour cela que nous avons multiplié par 1000

Si nous voulions convertir des minutes il aurait fallut écrire :
PRINT Format$(Date(0, 0, 0, 0, 0, 0, Myminutes * 600000), "hh nmin ssec")

Merci pour votre attention.




3264bits.jpg
Bonjour,


Certains programmes propriétaires sous linux ne sont plus utilisable sur les nouvelles plateformes 64 bits car ce sont des programmes en 32 bits.
Nous allons voir la possibilité de continuer à les utiliser sur votre machine 64bits.

Tout d 'abord, il vous faudra installer les anciennes librairies 32 bits ci dessous:

libgtk2.0-0:i386 libcairo2:i386 libpango1.0-0:i386 libgdk-pixbuf2.0-0:i386 libstdc++6:i386

N 'oubliez pas aussi d 'installer lib32stdc++6.
Suite à l 'installation, votre application devrait maintenant fonctionner.

Merci pour votre attention



scaledgb3.jpg

Fenêtres identique quelque soit le gestionnaire de fenêtres


Il y  a quelques temps j'ai réalisé une petite application en gambas3 sur xfce. Voulant l'essayer sur un autre ordinateur, j'ai vu que toutes les fenêtres n'ont pas la même taille, les polices sont plus grosses. Mais pourquoi cela?


J'ai donc testé cette petite application sur différentes gestionnaires de fenêtres et voici le résultat:

sous openbox :
x= 474
y= 417
width= 83
Height= 125


sous icewm:
x= 474
y= 417
width= 83
Height= 125


sous xfce : (celui là est le bon)
x= 406
y= 357
width= 71
Height= 107

sous enligthment :
x= 474
y= 417
width= 83
Height= 125


sous lxde :
x= 474
y= 417
width= 83
Height= 125


sous JWD :
x= 474
y= 417
width= 83
Height= 125


Poursuivant mon investigation, je suis allé dans les fichiers sources de mon fmain.form et là chose surprenante, les coordonnées de l'image sont des nombres à décimales:

{ Mypicture PictureBox
MoveScaled(67.6667,59.5,11.8333,17.8333)
Picture = Picture["monimage.png"]
Stretch = True
}



Chaque Form du projet a une propriété SCALED à true par défaut. (l'équivalent de la vectorisation pour les polices true type)
En le mettant à False, quelque soit le gestionnaire de fenêtre, la form a maintenant la même taille.

Pour les polices en revanche, il faut sélectionner le widget et dans la propriétéé FONT, il faut décocher la checkbox Relatif et la notion de vecteur disparait comme ceci :

scaled2gb3.jpg
Voilà pour aujourd'hui.



Aujourd'hui nous allons essayer d'éclaircir ensemble plusieurs points fondamentaux sur les variables en Gambas 3.

A) introduction
Une variable est utilisée pour faire certaines actions en fonction de son type.
Exemple :
Une variable de type integer ou float pourra être utilisée pour des opérations mathématiques.
Une variable text pourra être utilisée pour manipuler des chaines de caractères.

B) Déclaration d'une variable.
Pour déclarer une variable, il est important de se poser la question pourquoi elle et surtout pour qui elle va être utilisée.3 cas s'offrent à nous :

Pour déclarer une variable qui sera utilisable par toute la Form, écrivez ceci tout en haut de la Form en dehors de toutes vos méthodes, juste en dessous le texte 'Gambas class comme ci-dessous:

'Gambas class
Private mavariable as integer


Pour déclarer une variable qui sera utilisée par tout le logiciel et consultable ou éditable dans toutes les Form, rendez la déclaration Publique comme ceci:

Public mavariable as integer

Enfin,  pour déclarer une variable à l'intérieur d'une méthode (Public monbouton_click() par exemple), utilisez la commande Dim comme ceci :

Public monbouton_click()
Dim mavariable as integer
End Sub


Cette variable ne sera visible qu'à l'intérieur de cette méthode.

Par souci de clarté et surtout pour une optimisation de votre programme, il est très important de n'utiliser au maximum que des variables utilisables en Private et/ou à l'intérieur des méthodes.

Je vous vois immédiatement poser la question:
Mais comment fait-on si on veut interchanger des données entre méthodes?
Il suffit de passer en paramètre la variable et de récupérer le résultat par la commande RETURN

Un exemple concret:

J'envoi à une méthode une variable integer, et je veux récupérer un texte.
Si j'envois 0, alors je veux avoir "Bonjour"
Si j'envois 1, alors je veux avoir "Au revoir"

J'écris ma méthode comme ceci:

Private Sub Quandca(mavariable as integer) as string
select case mavariable
case 0
Return "Bonjour"
Case 1
Return "Au revoir"
End Select


Décortiquons ce bout de code:
Private Sub Quandca est une déclaration en privé uniquement visible dans ma form en cours.
(mavariable as integer) je déclare une variable qui sera reçue par l'appel de cette méthode.
As String informe que la commande Return renverra une variable de type String.

Enfin, j'appelle cette méthode ailleurs dans mon programme de cette façon:
Dim montexte as string
montexte = Quandca(0)

Attention: Si vous ne mettez rien entre parenthèse, Gambas renverra une erreur en disant qu'il manque un paramètre.

Une dernière chose, Si vous souhaitez utiliser une variable dans tout le programme, déclarez votre variable de type Public et mettez la dans un Module comme ceci :

Dans le module monmodule, ecrivez ceci:
Public mavariable as string

Ainsi dans tout les programme, vous pourrez lire/écrire cette variable comme ceci :

monmodule.mavariable = "J'ai modifié la variable"

Merci pour votre attention.





PhotoManager v3

0
photomanager.jpg

PHOTOMANAGER




Valaquarus nous livre ici un excellent logiciel pour visualiser ses photos sur son ordinateur.

En plus, il dispose de nombreuses options comme:
- Lancer un editeur externe (Gimp)
- Redimensionner les photos
- Cadrer, imprimer,zoom etc...

Basé sur g-foto-mahager de Bespalov Alexey (FreeArcher), bespalov.alexey@yandex.ru

PhotoManager Version avec cache
Développement Pil Valaquarus

CopyRight 2020 Pil Valaquarus


Intégralement traduit en Russe par respect.