Gambas France BETA


Pas de compte ? Incription

La gridview....

Ce sujet est résolu.

1
AuteurMessages
Foromus#1 Posté le 8/10/2012 à 17:50:06
Bon, la forge est rallumée...

Bonjour,

Utiliser Gridview me semble une bonne idée.
Pour une initiation, je suis allé voir sur le site (http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=442).
Impeccable : rien ne marche ! Vu que le tuto est de 2009, il doit être obsolète.

Première chose : comment on détermine le nombre de colonnes ?
Après, pour renseigner les en-têtes, on fait comment ? Je veux mettre "Outils" pour la première colonne, "Prix" pour la seconde.
Faut-il renseigner le nombre de lignes au départ, ou est-ce à l'avenant, comme dans une listbox ?
Dans ma liste d'outils, je voudrais insérer "Pince", entre la ligne "Marteau" et la ligne "Enclume" qui lui fait immédiatement suite.
Après ça, j'ai un remord de conscience, et je me dis que "Pince" est très mal placé et je supprime la ligne...

Bon, une fois que je saurai déjà faire ça, je pourrai m'exercer et chercher autre chose. Mais pour l'instant, je ne suis toujours pas arrivé à faire un seul truc !

Merci de votre attention et de votre aide.
jibi#2 Posté le 9/10/2012 à 14:41:35
codergambas.jimdofree.comBonjour

tu peux voir cet exemple d'utilisation de gridview : girdview

sinon par exemple :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'10 colonnes
GridView1.Columns.count = 10
'nbre de lignes correspondant à un tableau de données
GridView1.Rows.Count = tableauDeDonnees.count
'fond de la cellule colonne 4, ligne 8 en orange
GridView1[4, 9].Background = Color.Orange
'toutes les colonnes de tailles égales
GridView1.Columns.Width = GridView1.W / GridView1.Columns.Count
'entêtes :
GridView1.Columns[5].Title = "entête4"

'remplir le gridview
PUBLIC SUB GridView1_Data(lignes AS INTEGER, colonnes AS INTEGER)
'avec tableau de données en Public
GridView1.Data.Text = tableauDeDonnees[lignes][colonnes]
END

pour ton histoire de rajouter ou supprimer une ligne ou déplacer, personnellement je travail à partir de mon tableau de données, le remplissage du gridview se faisant automatiquement
Bonne journée
Jibi
Debian GNU/Linux 11 64-bit

manu#3 Posté le 9/10/2012 à 17:48:52
Avec Gambas ca roule !Un autre exemple dans la forge expliquant comment remplir un Gridview à partir d'un tableau de données. Très simple et très bien expliqué.

http://www.gambasforge.org/code-5-exemple-du-gridview.html
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
Foromus#4 Posté le 9/10/2012 à 22:08:00
Bonsoir à tous,

Après moult essais et nombre de bidouillages, j'étais +/- arrivé à faire 5 lignes et deux colonnes et mieux encore, à remplir les 10 cellules !

Bon, je vais essayer de voir ce que vous m'offrez.
Concrètement, je pensais utiliser ce contrôle pour modifier un fichier text, lequel enregistre successivement un outil et un prix.
Certes, les puristes me diront qu'il est bien plus facile et bien plus simple de prendre un simple éditeur de texte et de faire ce que j'ai à faire ! D'accord mais on programme d'abord pour se faire plaisir, non ?...

Merci déjà, même si je n'ai pas tout vu pour l'instant.

A l'attention du tenancier :
Ce n'est peut-être pas un problème, mais j'ai remarqué, plusieurs fois déjà, que je ne suis pas toujours averti des réponses. Je passe ici par hasard, je trouve deux réponses, mais je n'ai toujours pas reçu de mail d'avertissement à 22H
jibi#5 Posté le 9/10/2012 à 22:38:22
codergambas.jimdofree.com
j'ai remarqué, plusieurs fois déjà, que je ne suis pas toujours averti des réponses


effectivement moi aussi!
Debian GNU/Linux 11 64-bit

gambix#6 Posté le 12/10/2012 à 14:12:18
Faire simple !hum faut voir
Moins de texte dans une signature c'est agrandir son espace.
gambix#7 Posté le 12/10/2012 à 14:45:41
Faire simple !Utilise TableView. Il permet l'edition semi automatique du contenu des cellules

Tucharge ton fichier dans un ensemble


CLASS Tarifs
Public Article as String
Public Prix as Float




Dans ton programme ensuite


Private $Tarifs as New Tarifs[]



Publis Sub LoadTarif()

Dim ars as new String[]
dim sLigne As string
dim oTarif as tarifs
For each sLigne in SPlit(File.Load(MionFichier"), "\n")

ars = scan(sLigne,"* *")
oTarif = New Tarifs
oTarif.Article = ars[0]
oTarif.Prix = ars[1]
$Tarifs.add(oTarif)
next
GridView1.Rows.Count = $Tarifs.Count
end


Bon ensuite tu as bien sur définit grid view a 2 colonnes (gridview1.Columns.count =2)


Public sub GridView1_Data(row,column)

if column = 0 then
$Tarifs[row].Articles
else
$Tarifs[row].Prix
endif

end

Remplace tout ça par tableview c'est idem

pour l'edition ... chercheun peu... on se revoit demain

pour a sauvegarde ... ben c'est l'inverse du chargement.


sinon t'a xml aussi qui est pas mal pour la sauvegarde en fichier ou setting.

Gambas c'est dix ans de dev ... des outils ... yen a ;-)
Moins de texte dans une signature c'est agrandir son espace.
Foromus#8 Posté le 5/11/2012 à 18:53:21
Bonsoir tout le monde,

Un petit retour sur l'étude de ma gridview...

J'ai trouvé comment remplir, j'ai vu qu'on pouvait fixer le nombre de lignes par une variable : intéressant.
Effectivement : remplir à partir d'un tableau ma parait une bonne idée.
Donc sur ce point, je vais voir.

Un petit détail en passant : j'ai remarqué "Sort" dans ce contrôle : je me suis dit que, après tout, si ça pouvait aussi me mettre ma liste 1 par ordre alphabétique, tiens, ça ne serait pas mal du tout.
Le souci : j'ai beau cliquer sur l'en-tête, la flèche change bien de sens (vers le haut, ou vers le bas), par contre, ma liste, elle, ne bouge pas.

Voici mon code :

gdOutillage[0, 0].Text = "Marteau" ' Chargement de la grille
gdOutillage[1, 0].Text = "Enclume"
gdOutillage[2, 0].Text = "Pince"
gdOutillage[3, 0].Text = "Clé à molette"
gdOutillage[4, 0].Text = "Clé plate"
gdOutillage[5, 0].Text = "Tournevis plat"
gdOutillage[6, 0].Text = "Tournevis cruciforme"

gdOutillage[0, 1].Text = "500"
gdOutillage[1, 1].Text = "900"
gdOutillage[2, 1].Text = "350"
gdOutillage[3, 1].Text = "270"
gdOutillage[4, 1].Text = "50"
gdOutillage[5, 1].Text = "150"
gdOutillage[6, 1].Text = "180"

Bien entendu, si la liste outil était classée, il faudrait que les prix attenants soient aussi déplacés.
(Au passage, je me souviens d'avoir eu déjà pas mal de déconvenues avec la fonction tri, dans les tableurs par exemple).
Bon, mais pour revenir à cette ordre de classement,je pense que ça pourrait être utile dans la mesure où on rajoute un article. Il y aurait alors une mise en ordre, après rechargement de la liste je suppose, parce que, si on rajoute un article, ce ne peut qu'être à la dernière ligne. On peut s'arranger pour toujours laisser une ligne vide en bas, en cas de besoin. Maintenant, si on rajoute, dans le fichier ou dans le tableau, ça n'a plus de raison d'être.
Bon, pour l'instant, ma question est de savoir pourquoi ça ne classe pas.

Merci pour votre aide.
gambix#9 Posté le 5/11/2012 à 19:04:23
Faire simple !Sort permet de générer l'évènement sort...

D'ou :

1
2
3
4
5
PUBLIC SUB MyGridView_Sort()

MyArray.Sort(IIf(MyGridView.Columns.Ascending, TRUE, FALSE))

END
Moins de texte dans une signature c'est agrandir son espace.
gambix#10 Posté le 5/11/2012 à 19:15:05
Faire simple !POur cela tu doit utiliser un tableau de classe qui fournit le contenus de ton tableau.

Les objet classes représentes une ligne.

Public Article as string
Public Prix as Float

Public sub _Compare(Other as MyArticle) as integer

Return Compare(Me.Acticle, Other.Article)

end

dans dan le formulaire principale

Public Sub MyGridView_Sort()

MyArray.Sort(iif(MyGridView.Columns.Ascending, true, false))

End

Public sub GridView_Data(Row as integer, Column as integer)

select case Column
Case 0
Last.Data.Text = MyArray[Row].Article
Case 1
Last.Data.Text = Format(MyArray[Row].Prix, "#.## €")
if MyArray[Row].Prix > 100 then
Last.Data.Forground=color.red
Last.Data.Font.Bold=True
endif

endif


end



Mais ce n'est la qu'un aperçu dece que peut faire cette classe ... en modeavancé par exemple on a pu faire le treeview avec :-). C'est la deuxième classe la plus dingue après Drawingarea.
Moins de texte dans une signature c'est agrandir son espace.
Foromus#11 Posté le 19/11/2012 à 09:08:22
Bonjour,

Pour l'instant, je suis arrivé à utiliser à peu près ce contrôle, tout au moins, pour ce que j'ai à en faire.
Pour ce qui est du classement, je verrai peut-être par la suite. La réponse ci-dessus est probablement la plus adéquate, pas certain que j'en maîtrise toute l'étendue. A la limite, je pourrais adopter une procédure dichotomique, à savoir, lire chaque ligne, à partir du bas, et inverser si la ligne au-dessus est inférieure alphabétiquement, tout ça dans un boucle loop, on en sort quand il n'y a plus d'inversion.
Dans ma logique élémentaire qui me sert au quotidien, je ne comprends pas bien le "sort" de la gridview, dès lors qu'il n'agit pas spécifiquement sur le moment, je le considère comme ne pouvant guère m'être utile.
Cela dit, je suis très heureux d'avoir découvert ce contrôle, il est simple, finalement, on peut renseigner le nombre de lignes en cours de programme, c'est une particularité intéressante par rapport au tableau qui, lui, devient figé à partir du moment où il a été déclaré.

Merci pour l'aide que j'apprécie beaucoup !
gambix#12 Posté le 19/11/2012 à 21:30:09
Faire simple !un tableau n'est pas figé !!

montableau.resize

de plus en interne tout est tableau :)

il ne faut pas utiliser des tableau dit embarqué mais des tableau dynamiques

montableau = new montype[]

montableau.add(maval)


Moins de texte dans une signature c'est agrandir son espace.
1