gambaslinux

Aides aux utilisateurs de gambas linux

Accueil  /  Archives août 2022

Bonjour,
Dans ce petit tutoriel, je vous propose de copier l'intégralité d'une gridview dans le presse papier pour pouvoir le coller dans un éditeur de texte pour créer un fichier CSV par exemple.


A) création de l'interface.

Posez une gridview et un bouton
renommez la gridview en 'grille' et le button1 en Bcopy.

B) Ecriture du code.

Dans l'évènement Bcopy_Click(), écrivez ce code :

Dim maliste As String
Dim a As Integer
maliste = Null
For a = 0 To (grille.Rows.Max - 1)
maliste = maliste & grille[a, 0].Text & ";" & grille[a, 1].Text & ";" & grille[a, 2].Text & ";" & grille[a, 3].Text & ";" & grille[a, 4].Text & ";" & grille[a, 5].Text & ";" & grille[a, 6].Text & ";" & grille[a, 7].Text & ";" & Chr$(10)
Next
Clipboard.Copy(maliste)
End Select


Le texte ainsi copié sera toutes les cellules des lignes séparées par un point virgule sur tout le tableau.
A votre convenance, vous pouvez coller ce texte dans une textarea par exemple avec la commande:

TextArea1.text = Clipboard.Paste()

ou dans une autre application (éditeur de texte) par un clic droit de la souris et 'Coller'

Merci pour votre attention.



Et bien oui , il est tout à fait possible de se passer du mot THEN dans une boucle IF ENDIF

If tdisplay.Text = "ho" Then
  Print "holala"
Else
  Print "mama mia"
Endif

et

If tdisplay.Text = "ho"
  Print "holala"
Else
  Print "mama mia"
Endif

produiront le même résultat.
Merci pour votre attention.




Bonjour,

Vous connaissez certainement la selection à choix multiples SELECT CASE  avec ce petit exemple ci dessous :

Dim mytext As String
Select Case mytext
Case "ho"
  Print "ho"
Case "ha"
  Print "ha"
End Select

Remarque : Cet exemple n'a pas grand intérêt au niveau code mais est juste là à but pédagogique.

Saviez-vous qu'il est possible de définir un choix par défaut si aucun cas n'est attribué à votre variable?

Il suffit d'utiliser l'instruction DEFAULT et dorrénavant, si aucun cas ne correspond, la valeur par défaut sera lue comme ceci :

Dim mytext As String
Select Case mytext
Case "ho"
  Print "ho"
Case "ha"
  Print "ha"
  Default
  Print "by default"
End Select

si mytext prend la valeur "georges" par exemple, après moulinette dans ce code, le résultat sera "by default"

Merci pour votre attention




Bonjour,
Valaquarus nous propose ici une calculatrice en gambas3.

La version téléchargeable originale fonctionne avec gambas 3.15 ou supérieur.
 
Pour utiliser cette application sous gambas 3.14.3 ou inférieur, téléchargez le fichier source ici .
Merci à Philippe pour cette appli.
Le code de l'application ici :

' Gambas class file

PRIVATE i AS INTEGER '<---------------------------------------------- indice du tableau de valeurs
PRIVATE fValeur AS NEW Float[] '<------------------------------------ tableau de float, de taille indéfinie
PRIVATE signe AS STRING  '<------------------------------------------ signe des opérations
PRIVATE iVirgule AS INTEGER   '<------------------------------------- pour suivre la virgule
PRIVATE bChiffre AS BOOLEAN   '<------------------------------------- drapeau boolean indiquant qu'un chiffre est rentré
PRIVATE iPosVirgule AS INTEGER   '<---------------------------------- position de la virgule dans le mot
PRIVATE iLongMot AS INTEGER   '<------------------------------------- longeur du mot
PRIVATE iNextCharPos AS INTEGER  '<---------------------------------- position du prochain caractère

'<------------------------------------------------------------------- création d'un Group pour les chiffres nommé Chiffres
'<------------------------------------------------------------------- création d'un Group pour les opérations nommé Signes

PUBLIC SUB btnClose_Click()

   ME.Close()

END

PUBLIC SUB Form_Open()

   i = 0 '<---------------------------------------------------------- initialisation diverse
   iVirgule = 0

END

PUBLIC SUB btnEffacer_Click()

   tbAffichage.Text = String.Mid(tbAffichage.Text, 1, -1)
   ' tbAffichage.Text = String.Left(tbAffichage.Text, -1)
   ' Print "-text-"; tbAffichage.Text
   iLongMot -= 1
   IF iLongMot > 0 THEN Insertion() ELSE RETURN
   IF iPosVirgule = iLongMot THEN iVirgule = 0

END

PUBLIC SUB Insertion()

   fValeur.Add(Val(tbAffichage.Text), i) '<------------------------ récupération de la valeur affichée
   posVirgule(tbAffichage) '<------------------------------------- position de la virgule dans le mot
   bChiffre = TRUE   '<------------------------------------------- drapeau levé
   ' Print i; "-insert- "; fValeur[i]

END

PUBLIC SUB Chiffres_Click()   '<------------------------------------- évènement _Click() pour le Group Chiffres

   IF LAST.text = "." OR LAST.text = "," THEN iVirgule += 1 '<------- une seule virgule possible
   IF iVirgule > 1 THEN
      RETURN
   ELSE
      tbAffichage.Text &= LAST.text '<------------------------------- concaténation dans textbox1
      Insertion() '<------------------------------------------------- insertion de la valeur dans tableau
      ' bChiffre = True   '<------------------------------------------- drapeau levé
   ENDIF

END

PUBLIC SUB Signes_Click()  '<---------------------------------------- évènement _Click() pour le Group Signes

   IF bChiffre = TRUE THEN INC i ELSE RETURN
   SELECT CASE LAST.Text   '<---------------------------------------- en fonction du dernier texte des signes
      CASE ELSE
         fValeur.Add(fValeur[i - 1], i) '<--------------------------- on récupère la deuxième valeur (inc i au début)
         signe = LAST.Text '<---------------------------------------- on récupère signe pour l'évènement btnEgal_Click()
         tbAffichage.Clear
         bChiffre = FALSE
   END SELECT

END

PUBLIC SUB btnEgal_Click() '<---------------------------------------- évènement _Click() lors de l'appui sur "="

   IF signe <> "" THEN INC i ELSE RETURN

   SELECT CASE signe '<---------------------------------------------- les opérations à faire en fonction du signe cliqué
      CASE "+"
         fValeur.Add(fValeur[i - 2] + fValeur[i - 1], i)
      CASE "-"
         fValeur.Add(fValeur[i - 2] - fValeur[i - 1], i)
      CASE "/"
         IF fValeur[i - 1] <> 0 THEN fValeur.Add(fValeur[i - 2] / fValeur[i - 1], i) ELSE RETURN  '<-- pas de division par zéro
      CASE "*"
         fValeur.Add(fValeur[i - 2] * fValeur[i - 1], i)
   END SELECT

   tbAffichage.text = Str$(fValeur[i])   '<-------------------------- localisation Europa
   Insertion() '<---------------------------------------------------- insertion de la valeur dans le tableau
   signe = ""  '<---------------------------------------------------- pour empêcher de revenir sans passer par un autre signe
   iVirgule = 0
   ' Print i; " -égal- "; fValeur[i]

END

PUBLIC SUB Form_KeyPress() '<---------------------------------------- saisie clavier

   DIM vText AS VARIANT
   DIM cChiffres AS String[] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ","]
   DIM cSignes AS String[] = ["+", "-", "*", "/"]

   vText = Key.Text  '<---------------------------------------------- touche pressée

   IF vText MATCH "." THEN vText = Replace(vText, ".", ",") '<------- localisation Europa

   IF cChiffres.Exist(vText) THEN
      LAST.text = vText
      Chiffres_Click()
   ENDIF

   IF cSignes.Exist(vText) THEN
      LAST.text = vText
      Signes_Click()
   ENDIF

   ME.Text = "Calculatrice ++"   '<---------------------------------- pour ne pas afficher vText dans le titre du formulaire

   IF key.Code = key.Return OR key.Code = key.Enter THEN btnEgal_Click()
   IF key.code = Key.Esc THEN btnCancel_Click()
   IF Key.Code = Key.Backspace OR Key.Code = Key.Delete THEN btnEffacer_Click()

END

PUBLIC SUB posVirgule(monObjet AS OBJECT)

   SELECT CASE System.Language
      CASE "en_US.UTF-8"
         iPosVirgule = String.RInStr(monObjet.Text, ".", 0)
         iNextCharPos = iPosVirgule + 1
         iLongMot = String.Len(monObjet.Text)
      CASE ELSE   '<----------------------------------------------------------- pour Europa
         iPosVirgule = String.RInStr(monObjet.Text, ",", 0) '<------------------ pour déterminer la position de la virgule
         iNextCharPos = iPosVirgule + 1   '<----------------------------------- position du prochain caractère
         iLongMot = String.Len(monObjet.Text)   '<----------------------------- longeur du mot
   END SELECT
   ' Print iPosVirgule; " ~ "; iLongMot

END

PUBLIC SUB btnCancel_Click()

   tbAffichage.Clear
   i = 0
   iVirgule = 0
   fValeur.Clear
   bChiffre = FALSE

END