GRIDVIEW - Imprimer le contenu

Rédigé par spheris Aucun commentaire
Classé dans : apprentisssage, gambas 2, gambas 3, Gridview, Tutoriel, Widget Mots clés : aucun
IMPRIMER LE CONTENU D'UNE GRIDVIEW

imprimgrid.png
Bonjour,
aujourd'hui, Bernard nous livre une fonction qui permet d'imprimer le contenu d'une Gridview et de le répartir sur une ou plusieurs pages.

Pour utiliser cette fonction, je met à disposition un exemple d'utilisation.
Mais, comme vous le constaterez , c'est simple.
Il suffit de créer une Gridview, de la remplir, de créer un bouton , et dans la fonction Click de ce bouton, faite appel à la fonction impression de Bernard par la commande :

imprimgrid(magridview)

magridview etant bien entendu la gridview que vous avez créé.

Voici le code au complet :


PUBLIC SUB ImprimGrid(grd AS Object)
DIM c, r, col, rang, largeur, hauteur, nl, np, i, j, MargeL, MargeB AS Integer
DIM page AS Integer[500]
DIM p$­ AS String
DIM coef AS Float
'Printer.resolution = 300

IF Printer.Setup() THEN RETURN
coef = CInt((Printer.Resolution / Desktop.Resolution) - 1)
MargeL = 16 * coef
MargeB = 20 * coef
IF Printer.Portrait = TRUE THEN SWAP MargeB, MargeL
col = MargeL
FOR c = 0 TO grd.Columns.Count - 1 'largeur de la grille
largeur += grd.Columns[c].Width
NEXT
np = 1
FOR r = 0 TO grd.Rows.Count - 1 'Hauteur de la grille et on defini le nombre de pages
hauteur += grd.Rows[r].Height
IF hauteur * coef > Printer.Height - (64 * coef) THEN
page[np] = nl
INC np
nl = 0
hauteur = 0
ENDIF
INC nl
NEXT
page[np] = nl ' nombre de ligne pour la derniere page( ou la première si il n'y en a qu'une)
IF largeur * coef > Printer.Width THEN
coef = coef * (Printer.Width / (largeur * (coef * 2)))
' ELSE
' coef = 5
ENDIF
FOR i = 1 TO np ' nombre pages
col = MargeL
rang = MargeB
Draw.Begin(Printer)
'Global.HeaderGrid(grd, coef, col, rang)
FOR c = 0 TO grd.Columns.Count - 1 'imprimer le header
Draw.FillStyle = 2
Draw.FillColor = Color.Gray
Draw.Rect(col, rang, grd.Columns[c].Width * coef, MargeB)
Draw.Text(grd.Columns[c].Text, col + (2 * coef), rang)
col += grd.Columns[c].Width * coef
NEXT
rang += grd.Rows.Height * coef
'for r=0 to page(i) 'nombre ligne par page
'FOR r = page[i - 1] TO grd.Rows.Count - 1
FOR r = page[i - 1] TO (page[i - 1] + page[i]) - 1
col = MargeL
FOR c = 0 TO grd.Columns.Count - 1 'On imprime les grilles
Draw.FillColor = grd[r, c].Background
IF grd[r, c].Background <> -1 THEN
Draw.FillStyle = Fill.Solid
ELSE
Draw.FillStyle = 0
ENDIF
Draw.Rect(col, rang, grd.Columns[c].Width * coef, grd.Rows.Height * coef)
col += grd.Columns[c].Width * coef
NEXT
col = MargeL
FOR c = 0 TO grd.Columns.Count - 1 'On imprime le text
Draw.Font = grd[r, c].Font
Draw.Foreground = grd[r, c].Foreground
p$­ = ""
IF Draw.TextWidth(grd[r, c].Text) > (grd.Columns[c].Width * coef) - (2 * coef) THEN
FOR j = 1 TO Len(grd[r, c].Text)
IF Draw.TextWidth(p$­) < (grd.Columns[c].Width * coef) - (12 * coef) THEN
p$­ &= Mid$­(grd[r, c].Text, j, 1)
ENDIF
NEXT
ELSE
p$­ = grd[r, c].Text
ENDIF
Draw.Text(p$­, col + (2 * coef), rang, (grd.Columns[c].Width * coef) - (2 * coef), grd.Rows.Height * coef, grd[r, c].Alignment)
col += grd.Columns[c].Width * coef
NEXT
rang += grd.Rows.Height * coef
NEXT
p$­ = "_ " & Trim(Str$­(i)) & " _"
Draw.Text(p$­, (Printer.Width - Draw.TextWidth(p$­)) / 2, Printer.Height - (48 * coef))
Draw.End
NEXT
END

Merci à Bernard pour sa contribution.


TELECHARGEZ L'EXEMPLE ICI

DRAWAREA - un composant extra

Rédigé par spheris Aucun commentaire
Classé dans : apprentisssage, Drawarea, gambas 2, Logiciels, Tutoriel, Widget Mots clés : aucun
La DRAWING AREA, UN COMPOSANT MULTI-USAGE


drawareataoteblue.png
Dans cette application sous forme de tutoriel, Taoteblue nous livre ici des principes de base mais aussi une utilisation particulière de la drawarea. De multiples utilisations sont possibles :
  • Création de nouveau composants,
  • Réaction aux clics de souris
  • création de tableaux.
Autant de choses à découvrir dans cette application.

TELECHARGER LE FICHIER ICI

LABEL - clignotement d 'une led

Rédigé par spheris Aucun commentaire
Classé dans : apprentisssage, gambas 2, gambas 3, Label, Tutoriel, Widget Mots clés : aucun
CLIGNOTEMENT D'UNE LED


changercouleur.png

Bonjour,
Aujourd'hui nous allonsvoir comment faire clignoter un Label vide de son texte . Il donnera l'apparence d'une LED, petit signal visuel très pratique pour votre application.

Créez un label , ajoutez lui une propriété BORDER = RAISED, une propriété BACKGROUD = &H000000& .
Créez maintenant 2 boutons, un pour allumer, un pour eteindre notre LED.
un timer est indispensable dans votre programme dès que vous avez besoin d'une fonction faisant intervenir le temps.
Le luxe est même d'ajouter un slider qui nous fera varier la vitesse de notre clignotement.

Vous pourrez télécharger plus bas l'application exemple.

Maintenant voici le code de notre application que je vais commenter en rouge:

' Gambas class file

PUBLIC SUB _new()
END

PUBLIC SUB Form_Open()
ME.Center 'centre la fenetre
END

PUBLIC SUB Timer1_Timer() 'cette fonction est le clignotement par lui meme
SELECT CASE lled.Background
CASE &h000000&
lled.Background = &h00FF00&
CASE &h00FF00&
lled.Background = &h000000&
END SELECT
END

PUBLIC SUB bon_Click() 'bouton de demarrage clignotement
Timer1.Enabled = TRUE
END

PUBLIC SUB boff_Click() 'bouton arret
Timer1.Enabled = FALSE
END

PUBLIC SUB Slider1_Change()'variation du slider entrainant variation de vitesse clignotement
Timer1.Delay = Slider1.Value
END

voila pour aujourd'hui.

TELECHARGER L'EXEMPLE ICI

Creer son logiciel - Gambas et ubuntu sur une clef USB

Rédigé par spheris Aucun commentaire
Classé dans : Logiciels Mots clés : aucun
GAMBAS ET UBUNTU SUR UNE CLEF USB

Jacques nous livre ici un excellent tutoriel pour installer ubuntu sur une clef USB.

                       

Faire une Clé USB avec Ubuntu comme OS



J ' ai un PC avec Athlon 64 Bits, une carte mère permettant le démarrage sur disque externe ou Clé USB …..avec XP .. Mandriva et Ubuntu


J ' ai acheté une Clé USB de 4 GB ( il y a plus grand )


Passons à la façon de faire ….. J ' ai dans Ubuntu un Menu :

      Créateur de disque de démarrage USB..

dans … Système / Administration …


J ' ai pris un CD d ' Ubuntu i386 ( pour que ça puisse marcher sur bien d ' autres machines )

J ' aurais pu prendre un CD d ' une autre distribution ( Kubuntu ou Mandriva etc .. ) Je l ' avais dèjà fait avec Kubuntu mais je n ' avais pas tout …


Le programme d ' Ubuntu marque qu ' il est possible de faire ça avec un Fichier .iso Mais là c 'est le programme qui s ' est planté !!!!!!


Alors on prépare comme suit .

-1)mettre la Clé USB . 2) Mettre le CD dans le lecteur ...3) Cliquer le Menu :

     Créateur de disque de démarrage USB..


Là, le programme doit mettre la Source ( le CD ) et la destination ( La Clé )


install.png


Quand il y a les deux bien placés c 'est au dessous ( en grisé ) que ça devient intéressant … Je recopie dessous …


Lors du démarrage depuis ce disque

les documents et les réglages seront :

  • Enregistrés      sur un espace supplémentaire

         

    Taille       :      ====............................................................3.1      GB

         
  • Supprimés      à la fermeture si vous ne les avez pas enregistrés ailleurs.

         

    Website moved

    Rédigé par spheris Aucun commentaire
    Classé dans : Logiciels Mots clés : aucun
    The Gambas website at forum.stormweb.no has been moved to www.gambasforum.com.

    LOGICIELS GAMBAS 2 - Pdfman

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

    pdfman.png
    Voici un utilitaire qui permet de pratiquement tout faire sur des fichiers PDF :
    • Couper un PDF
    • Joindre des PDF
    • Séparer des PDF en plusieurs pages
    • supprimer des pages d 'un PDF
    • convertir un PDF en HTML
    • etc....
    Un logiciel en gambas qui nous vient de la communuté espagnole Gambas et traduit en Francais par spheris.

    TELECHARGER LE FICHIER
     
    );

    LOGICIELS GAMBAS 2 - Manger-Bouger

    Rédigé par spheris Aucun commentaire
    Classé dans : Logiciels Mots clés : aucun
    logoconcours.png  
    MANGER BOUGER


    /
    Manger bouger est un programme réalisé par Jean Yvon pour le concours Gambas 2010.
    Il permet de voir des recettes des cuisine, et de calculer l 'effort sportif .
    Il fonctionne avec une base de données.

    'Manger Bouger ' est une application libre et gratuite sous réserve de ne pas être traduite en anglais.

    Elle peut être distribuée voir modifiée mais il serait dommage de remanier les recettes de cuisine.

    Les recettes, les photos contenues dans 'Manger Bouger ' sont libres et gratuites.

    Les recettes et certaines photos sont une production de l 'auteur.

    L 'auteur ne peut être tenu pour responsable :

    • Si le résultat escompté n 'est pas obtenu

    • Si vous vous intoxiquez........!

    • Et pour toutes autres conséquences.

    'Manger Bouger ' ne peut être vendu, en entier ou en partie, sans l 'accord préalable de l 'auteur.

    Certains composants du programme sont sous licence GNU.



    TELECHARGER LE FICHIER
    );

    LOGICIELS GAMBAS 2 - Gtweeter

    Rédigé par spheris Aucun commentaire
    Classé dans : Logiciels Mots clés : aucun
    GTWEETER, une interface en Gambas pour tweeter


    gtweeter.png
    Gtweeter est un logiciel qui vous permet de profiter du reseau tweet.
    Il a été réalisé par un contributeur actif de la communauté espagnole de Gambas.
    Maintenant traduit en français par spheris, vous pourrez apprécier la qualité de l 'interface.

    TELECHARGER LE FICHIER
    );

    Creation composant - Diode

    Rédigé par spheris Aucun commentaire
    Classé dans : Logiciels Mots clés : aucun
    CREATION D 'UN COMPOSANT POUR GAMBAS 3

    Pour créer un composant il faut déja bien comprendre la Programation Orientée Objet (POO) : public private, create, etc... enfin tout ce qui à trait à la programmation objet et à la notion d 'héritage.

    A) Petits rappels de POO

    'Class Quadrupede

    Property NbrePate
    Property Longueurqueue


    'Class chien
    Inherit quadrupede

    Property race
    property couleur

    Donc au final la classe chien

    chien.Nbrepate
    chien.LongueurQueue
    chien.race
    chien.couleur


    C 'est comme pour les conteneurs, tu crée un projet console et dedans tu y met deux ou trois classes et tu vois comment elle
    réagissent entre elles. Tu peux avoir une classe héritière qui surcharge une propriété du parent ... simplement en utilisant le même nom :

    par exemple si je fait

    'Class monlabel
    Inherit Label

    Property Text as string

    Private Sub Text_Read() as String

    return SUPER.Text & toto

    end

    Private Function Text_Write(Value as string)

    SUPER.Text = Value

    end

    en gros j 'ai détourné la propriété texte de label ... Super permet d 'appeller une proprété de la classe parente.

    Donc quand je fait label.text = titi

    print label.text
    donne
    tititoto

    mdr

    ça sert a rien mais j 'explique :



    Parfois on veut pouvoir appeler une classe sans l 'instancier :
    j 'instancie avec New

    hmyClass = new Myclass

    en mettant Create Static en entête, on peut faire comme avec report

    report.mafonction

    car en fait, Gambas instancie un report et le réaffecte a la variable report. donc report passe de classe a variable instanciée.

    c 'est quoi une instance ? C 'est une copie de travail en mémoire. On peu avoir autant d 'instances d 'une classe qu 'on veut. Un module est une classe dont tout les éléments sont static... donc non instanciable et accessible depuis maclass.mafonctionstatique

    je l 'utilise dans gb.report pour par exemple pour stocker les références de tout les objets dans une collection

    ainsi j 'appelle report._collection[valeur]

    ou _collection est déclarée static.public

    le _ sert a dire que je veut que cette fonction soit cachée dans l 'ide... et oui il y a plein de truc caché ... utilisable mais simplement masqué car risqué pour une utilisation directe. ou simplement pour ne pas charger l 'interface...

    Enfin tout ça pour dire qu 'il faut tester toute les variantes et voir comment ça s 'articule.



    B)Premier Composant :

    Bien voici la première démo de composant entièrement commentée : Diodes



    il manque juste deux ou trois points

    -1- Pour indiquer au projet que c 'est un composant il faut lui dire dans les propriétés générale du projet ctrl+p. Ensuite il faut lui dire qu 'il à besoin des composants graphiques (gb.gui ou gb.qt4 ou gb.gtk)

    (tout ceci est déjà fait dans l 'exemple)

    -2- Ensuite pour pouvoir pleinement testé le composant et même l 'utiliser dans d 'autres projet : faire générer l 'exécutable (ne pas le générer dans le dossier du projet !) et cocher la case installer le composant...
    faire ok et la miracle le contrôle apparait dans la barre des outils .
    Il ne reste plus qu 'a s 'en servir.


    Attention : le composant est installé en local. (donc dans le dossier /home/user...)

    voila ...

    C) Différence entre un composant et un contrôle.

    Un contrôle est un type de classe... dans cet exemple j 'ai expliqué comment faire un composant graphique... ce qui n 'est pas le cas pour gb.chart ou gb.report car ils dessinent sur le device fournit par la classe paint.

    Un composant est un ensemble de classes ou de contrôles.

    gb.qt est un composant qui contient par ex :, button ou listbox sont des controles, timer est une classe utilisable comme controle, paint est une classe.);

    Beau boulot

    Rédigé par spheris Aucun commentaire
    Classé dans : Logiciels Mots clés : aucun
    On peut pas dire mais qu 'est ce que tu bosses pour nous et pour Gambas!
    JY
    );

    J - 2 avant cloture du concours

    Rédigé par spheris Aucun commentaire
    Classé dans : Logiciels Mots clés : aucun
    Il vous reste 2 jours avant la cloture du concours de programmation Gambas. Ensuite vous aurez jusqu 'au 5 avril pour l 'envoyer à l 'adresse : gblinux4@yahoo.fr (enlever le 4)
    );

    STAT - La commande STAT

    Rédigé par spheris Aucun commentaire
    Classé dans : Logiciels Mots clés : aucun
    la Commande STAT



    bonjour,
    cet exemple tiré du forum francais sur gambas que nous a apporté Micio mérite des explications.
    La commande STAT permet de récupéré des informations sur les fichiers.  voici donc lecode commenté :


    'Affiche l 'appartenance aux groupe d 'utilisateurs:
    PRINT Stat( ~/Documents/box.ods ).Group

    Affiche si le fichier est un fichier caché:
    PRINT Stat( ~/Documents/box.ods ).Hidden

    Affiche la date du dernier accès au fichier:
    PRINT Stat( ~/Documents/box.ods ).LastAccess

    Affiche la date de la dernière modification:
    PRINT Stat( ~/Documents/box.ods ).LastChange

    Affiche la date de la dernière modification:
    PRINT Stat( ~/Documents/box.ods ).LastModified

    Affiche si loe fichier est un type lien symbolique:
    PRINT Stat( ~/Documents/box.ods ).Link

    Affiche si le fichier est un executable ou non:
    PRINT Stat( ~/Documents/box.ods ).Mode

    Affiche le chemin du fichier:
    PRINT Stat( ~/Documents/box.ods ).Path

    Affiche les permissions du fichier:
    PRINT Stat( ~/Documents/box.ods ).Perm

    Affiche le numero du groupe ou de l 'utilisateur (ID)
    PRINT Stat( ~/Documents/box.ods ).SetGID
    PRINT Stat( ~/Documents/box.ods ).SetUID

    Affiche la taille du fichier
    PRINT Stat( ~/Documents/box.ods ).Size

    Affiche le Sticky(???) :
    PRINT Stat( ~/Documents/box.ods ).Sticky

    Affiche l 'heure de creation du fichier:
    PRINT Stat( ~/Documents/box.ods ).Time

    Affiche le type de fichier:
    PRINT Stat( ~/Documents/box.ods ).Type

    Affiche le nom du propriétaire du fichier :
    PRINT Stat( ~/Documents/box.ods ).User

    Merci pour ton aide Micio ! wink
    A+);

    TEXTAREA - Draganddrop

    Rédigé par spheris Aucun commentaire
    Classé dans : Logiciels Mots clés : aucun
    LE GLISSE / DEPLACE DANS UNE TEXTAREA

    Bonjour,
    Aujourd 'hui nous allons expérimenter le Drag and drop (glisser déplacer) de texte entre deux applications, un binaire linux et une application graphique Gambas.
    Créons simplement une application avec un Form, une textarea et un bouton Quitter dont voici le code:


    ' Gambas class file

    PUBLIC SUB _new()

    END

    PUBLIC SUB Form_Open()
    ME.Center
    END

    PUBLIC SUB Button1_Click()
    ME.Close
    END

    PUBLIC SUB TextArea1_Drop()
    TextArea1.Insert(Drag.Text & Chr$­(10))
    END

    Maintenant, nous allons faire des essais avec Trois applications assez généralistes :
    -Gedit editeur de texte
    -Firefox
    -Nautilus de gnome

    A)GEDIT
    ouvrons un fichier texte  puis séléctionnons le texte entier et faisont le glisser dans notre application comme ci dessous :


    dragon1.png



    dragon2.png



    Nous pouvons constater deux choses :

    - devant notre texte il y a un numero.
    - les caracteres speciaux sont remplacés par un codage hexadecimal

    B)FIREFOX
    ouvrons au hasard un site internet. Par exemple http://gambaslinux.eg2.fr puis faisons glisser un texte dans notre application. Nous remaquons que le lien est ecrit dans notre aire de texte.


    dragon4.png

    C)Nautilus
    Faisons glisser une icone de notre bureau sur notre application.On remarque le chemin complet dans le texte copié.


    dragon3.png



    Voila pour aujourd 'hui




    );

    Creer son logiciel - Curseur personnalise

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

    curseur.png
    Bonjour,
    il est possible de modifier l 'apparence de votre curseur pour votre application. Il vous suffit d 'utiliser le code ci dessous :


    ' Gambas class file
    PUBLIC hcursor AS Picture

    PUBLIC SUB _new()
    END

    PUBLIC SUB Form_Open()
    ME.Center
    hcursor = Picture.Load( ./curseur.png )
    FMain.Cursor = NEW Cursor(hcursor)
    END

    );

    LOGICIELS GAMBAS 2 - GLLS

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

    GLLS.png
    Vous souvenez vous de vos années lycée où vous griffoniez avec votre collègue des carreaux sur votre feuille.
    Ce petit jeu est une version informatique de ce célèbre jeu. Il a été réalisé par morisio, un gambasien de la communauté espagnole de Gambas. Il a été traduit en Français par spheris.
    );

    LOGICIELS GAMBAS 2 - GbDJ

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

    gbdj.png
    GbDj est un front-end de mplayer avec l 'allure d 'une console de mixage de vinyles.Mplayer doit être installé sur votre ordinateur.

     D 'une simplicité d 'utilisation, il est capable de lire deux singles à la fois.

     Une partie effet speciaux vous permettra en maintenant les boutons appuyés avec la souris,

    d 'ajouter des effets pendant la lecture de votre musique. Ces effets peuvent être changés en changeant les fichiers sons dans le répertoire FX de l 'application.

    Vous pourrez même créer des skins en retravaillant l 'image dans le répertoire IMG .

    TELECHARGER LE FICHIER
     
    );

    DRAWAREA - courbe mathématique

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

    courbemath.png
    Dans cet exemple tiré d'une discussion sur le forum Gambas linux en francais, Jean Yvon nous explique en détail comment réaliser le tracé d'une fonction mathématique dans une Drawarea.

    Il faut dans votre application :
    - une listbox
    - une drawarea avec le nom : aire, la propriété CACHED à TRUE
    - un bouton QUITTER


    Voici le code de l'application :

    ' gambas class File
    PUBLIC SUB _new()
    END
    PUBLIC SUB form_OPEN()
    me.center
    dessin
    END
    PUBLIC SUB button1_click()
    me.CLOSE
    END
    PUBLIC SUB dessin()
    DIM incoy1 AS Float, incox1 AS Float, a AS Float = 2, b AS Float = 5, c AS Float = 3
    DIM incoy2 AS Float, incox2 AS Float
    DIM unit AS Float = aire.w / 100000 'pour faire varier la courbe entre x et y autrement on voit rien
    aire.clear
    draw.begin(aire)
    FOR incox1 = 0 TO 400 step 10
    incoy1 = (a * (incox1 ^ 2)) + (b * incox1) + c
    listbox1.add("y= " & incoy1 & " pour une valeur de x de " & incox1)
    ' incoy1 = incoy1 / 100
    print incoy1
    draw.forecolor = &hff0000&
    'draw.forecolor = color.red
    draw.LINE(incox1, incoy1 * unit, incox2, incoy2 * unit) 'y croit tellement vite que ce n'est pas sa valeur qui sert.....
    incox2 = incox1
    incoy2 = incoy1
    NEXT
    draw.END
    END

    Merci à Jean Yvon pour son travail.
    wink
     

    LOGICIELS GAMBAS 2 - Indenteur

    Rédigé par spheris Aucun commentaire
    Classé dans : Logiciels Mots clés : aucun
    INDENTEUR DE FICHIERS

    indenteur.png
    Indenter est l 'action d 'ajouter une tabulation au début de chaque fonction pour faciliter la lisibilité du code. C 'est une très bonne habitude à prendre.
    Mais pour ceux qui ne l 'on pas déjà fait, voici une contribution sympa qui indentera automatiquement votre code.

    TELECHARGER LE FICHIER

    nouvelle mise à jour au 01 mars 2010

    TELECHARGER LE FICHIER
    );

    avec plaisir toto

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

    envoi moi les sources par mail, je le mettrai a dispo pour la communauté !

    Merci pour ton travail

    Spheris

    );

    modbus TCP et protocole I2C

    Rédigé par spheris Aucun commentaire
    Classé dans : Logiciels Mots clés : aucun
    Pour les personnes interressées, j 'ai développé une application domotique qui communique en Modbus TCP avec un automate siemens, et en protocole I2C avec un capteur de température Dallas DS1621.
    l 'application gambas génère des pages web mise à dispo par l 'intermédiaire du serveur web apache.
    j 'utilise Ubuntu.
    je communique les sources et je peu donner toutes les infos nécessaires.
    A+

    );