Bonjour, après un événement click, je crée une nouvelle ligne sur un scrollview, (je me suis servi du tutoriel de Klaus, très pratique d'ailleurs) mais j'ai fait quelques modifications car mes labels-cellules ne font pas toutes la même taille. après un click sur bouton j'actionne un addROw et exécute l'action suivante :
Code:
Sub addRow(values() AsString) Dim lastROW AsInt' retourne le numero de ligne Dim lastCOL AsInt' retourne le numero de colonne lastCOL = 0 lastROW = nbrROW Dim rc As rowcol rc.Initialize rc.col = lastcol rc.row = lastrow table.addView(module1.lblCreatorTag("cell",rc, values(0), 16, blanc),00*Px,celH * lastROW, 20*Px -1dip, celH) lastCOL = lastCOL +1' augmente la valeur de colonne de 1 rc.col = lastCOL table.addView(module1.lblCreatorTag("cell",rc, values(1), 16, blanc),20*Px, celH * lastROW, 40*Px -1dip, celH) lastCOL = lastCOL +1' augmente la valeur de colonne de 1 rc.col = lastCOL table.addView(module1.lblCreatorTag("cell",rc, values(2), 16, blanc),60*Px, celH * lastROW, 20*Px -1dip, celH) lastCOL = lastCOL +1' augmente la valeur de colonne de 1 rc.col = lastCOL table.addView(module1.lblCreatorTag("cell",rc,values(3), 16, rouge),80*Px, celH * lastROW, 20*Px -1dip, celH) table.Height = nbrROW * celH End Sub
Sub cell_Click Dim rc As rowcol Dim l AsLabel l = Sender rc = l.Tag selectedRow(rc.row) 'sert a afficher la ligne en surbrillance activity.Title = "cellule click�e = ("&rc.row&","&rc.col&")" End Sub
mais si je sélectionne une ligne (cell_click), la valeur de colonne est toujours la même, (3 en l’occurrence) alors que j'incrémente de 1 à chaque nouvelle ligne dans le tag du label.
pour info, j'ai crée un dans un module1, lblcréatortag pour mettre en forme le label, code ici :
Code:
Sub lblCreatorTag (event AsString, tag As rowcol,Text AsString, taille AsFloat, couleur AsInt) AsLabel Dim b AsLabel 'tag.row = tag.row +1 b.Initialize(event) b.Text = Text b.Tag = tag b.Color = couleur b.TextColor = Colors.Black b.Gravity = Gravity.CENTER b.TextSize = taille Return b End Sub
la valeur de ligne est bonne, je comprends pas pourquoi dans le tag cette valeur de colonne reste inchangée à 3... ça me bloque pour la suite, si je veux changer la valeur d'un seul label, il ne me le reconnais pas. Merci d'avance
Merci Klaus, effectivement ça fonctionne, par contre j'ai quand même du mal à comprendre ça !
Code:
Dim lastROW AsInt' retourne le numero de ligne Dim lastCOL AsInt' retourne le numero de colonne lastCOL = 0 lastROW = nbrROW Dim rc As rowcol rc.Initialize rc.col = lastcol rc.row = lastrow table.addView(module1.lblCreatorTag("cell",rc, values(0), 16, blanc),00*Px,celH * lastROW, 20*Px -1dip, celH) lastCOL = lastCOL +1' augmente la valeur de colonne de 1 Dim rc As rowcol rc.Initialize rc.col = lastcol rc.row = lastrow table.addView(module1.lblCreatorTag("cell",rc, values(1), 16, blanc),20*Px, celH * lastROW, 40*Px -1dip, celH) lastCOL = lastCOL +1' augmente la valeur de colonne de 1 Dim rc As rowcol rc.Initialize rc.col = lastcol rc.row = lastrow table.addView(module1.lblCreatorTag("cell",rc, values(2), 16, blanc),60*Px, celH * lastROW, 20*Px -1dip, celH) lastCOL = lastCOL +1' augmente la valeur de colonne de 1 Dim rc As rowcol rc.Initialize rc.col = lastcol rc.row = lastrow table.addView(module1.lblCreatorTag("cell",rc,values(3), 16, rouge),80*Px, celH * lastROW, 20*Px -1dip, celH) table.Height = nbrROW * celH End Sub
J'avoue que je reste perplexe quand à initialiser identiquement plusieurs fois la même variable dans la même sub ! En tout cas ça fonctionne c'est l'essentiel, merci encore, j'y aurais jamais pensé, je me disais qu'en incrémentant une variable row-col dans chaque tag, indépendamment, la valeur se figeait dans chaque tag et ne rendait pas seulement la dernière !!! bizarre quand même pour moi, j'ai encore beaucoup à apprendre... merci encore ! Je butais dessus depuis hier soir et ça me bloquait pour la suite du projet...
Il faut considérer rc non pas comme une variable mais comme un objet.
Donc le fait de ne définir qu'un objet par ligne, les quatre Label.Tag font référence au même objet. Donc pour les différencier il faut quatre objets indépendants!
effectivement dit comme ça, c'est bien plus logique, effectivement. J'imaginais plus le rowcol comme une variable à deux dimensions, c'est compris. Merci encore pour ces précieux renseignements, c'était la première fois que j'utilisais cet élément... Pendant mon insomnie, je viens de m'apercevoir d'un autre problème : sur un action click bouton, je dois passer 3 variables : (en fait 4, mais la dernière n'est qu'une unité 1 avec incrémentation)
- une variable index (int) pour retrouver et incrémenter l'élément sélectionné.
- une variable désignation (string) pour l'affichage du libellé.
- une variable (double) pour une valeur du même libellé.
pour l'instant je passe l'index dans le .tag du bouton, et la désignation dans le .text, mais finalement il me manque sa valeur,... Je pensais être obligé de construire une list en aval, contenant l'index et la valeur, mais j'avoue que je sais pas trop comment m'y prendre. existe-il un autre moyen de passer plusieurs valeurs différentes dans un même tag ? le rowcol renvoie deux int, existe il dans le même genre un objet qui peut renvoyer un int et un double en même temps... Sinon je gérerais une base sql, ça sera peut être plus simple. encore des tutos à potasser !!! merci pour ces précieux conseils en tout cas et bonnes fêtes !
mince effectivement, j'avais survolé le TYPE, ça permet de faire ce qu'on veut avec... bin faut faut que je revoie mon code pour tout passer... C'est le problème de n'avoir jamais suivi de cours de basic, quand on apprend tout seul on se trouve vite limité, et on fait seulement avec le peu que l'on connait..., merci encore même si mes questions paressent futiles, mais j'en apprends vraiment tous les jours, et ça me booste... à bientôt pour un nouveau défi... si j'y arrive...