Gambas France BETA


Pas de compte ? Incription

Instanciation d'objet... et identification après création ok, mais pb de remplissage

1
AuteurMessages
Pablodetaix#1 Posté le 1/11/2010 à 21:10:00
Bonjour à tous,

le contexte : un form, un tabstrip (facile !)
le form modifie le tabstrip selon les besoin lors de son appel. ça marche
les 2 1er onglets existent toujours (donc créés par l'IDE) ils contiennent chacun leur columnview.

Après, je me suis dit on doit pouvoir ajouter dans chaque nouvel onglet du tabstrip (3éme et au delà) des columnview ...
bon ça ça marche.

L'accès aux param de chaque columnview lors de sa création => OK
la visualisation de chaque columnview dans le bon onglet, => ok lors de l'execution

La question : je ne sais pas comment identiier un des columnview pour le manipuler en cours du programme.
j'ai essayé par children du tabstrip et pleins d'autres essais) => Perdu à chaque fois.

j'ai bien la désagréable impression que je dois pas être loin... mais je ne trouve pas.

voici l'extrait de code du form sous GB2.21 Ub 10.04

1
' Gambas class file' les 2 1er onglets sont fixesPUBLIC cMonPere AS ContainerPUBLIC oMesColView AS Object[]PUBLIC bInitCVOk AS BooleanPUBLIC SUB _new() DIM iRang AS Integer DIM sCodNom AS String[] ' nommer les onglets ajoutés TabStrip1.Count = 2 + ModMain.sMesOngle.Count FOR iRang = 2 TO TabStrip1.Count - 1 sCodNom = Split(ModMain.sMesOngle[iRang - 2], "|") TabStrip1[iRang].Text = sCodNom[1] NEXTENDPUBLIC SUB Form_Open() DIM objColumnView AS ColumnView DIM iRang AS Integer DIM cMonPere AS Container IF NOT bInitCVOk THEN oMesColView = NEW Object[] FOR iRang = 2 TO TabStrip1.Count - 1 TabStrip1.Index = iRang cMonPere = TabStrip1 objColumnView = NEW ColumnView(cMonPere) ' au lieu de ME (car alors colview dans le form ! pas le tabstrip) ' param de l'objet objColumnView.Width = 100 + 20 * iRang 'test fictif pour les différencier à l'ecran et être sur de voir le bon dans le bon onglet objColumnView.Height = 75 + 10 * iRang out ds la liste oMesColView.Add(objColumnView, iRang - 2) NEXT bInitCVOk = TRUE ENDIFEND


en hierarchie on a Form / Tabstrip1 / Onglets / Columnview (enfin je crois !)
ou alors Form/Tabstrip/Columnview ?

Les onglets sont bien créés
les columnview aussi !

Comment dois je faire pour identifier les columnviews créés pour les manipuler ?

mais ce qui m'étonne c'est que Tabstrip1.Children.Count=1 !!!
Je comprend plus, car si je demande le parent du tabstrip => il répond "leform" => Ok
Mais les 2 columnviews (des 2 premiers onglets) créés par l'ide ont bien Tous les 2 pour parent => Tabstrip !
donc il y a deja 2 childrens pour le Tabstrip ? ou alors le children est "plus bas" derrière l'onglet du tabstrip ?

mais dans ce cas là pourquoi les 2 columnview des 2 onglets créés par l'ide aurait le meme père ?

j'ai toujours eu des problèmes avec la généalogie !

Merci de votre aide
Pablo
Pablodetaix#2 Posté le 2/11/2010 à 18:22:00
Bonsoir,

je voulais passer par un "handle" mais dans ce cas, pas la peine.

puisque je fais oMesColView.Add(objColumnView, iRang - 2)

j'ai bien oMesColView[] tableau d'objets... il suffit dès lors de faire

oMesColview[indice_de_celui_qu_on_veut].Columns.Count = 4

etc, etc

Bon j'en vois qui devant leurs écrans rigolent... ben ils ont parfaitement raison !

y a plus qu'a faire un extrait de ce bazar et un mini tuto/explication (houps !)

Pablo
Pablodetaix#3 Posté le 3/11/2010 à 14:12:00

la création etait devenue bonne,

ça : oMesColview[indice_de_celui_qu_on_veut].Columns.Count = 4 ok
donc aucun pb pour les attributs directements accessibles.

mais
oMesColview[indice_souhaité].Add(ma_key,ma_val) ok aussi

oMesColview[indice_souhaité] [1] = "ma_val_de_la_colonne_2") niet, ce en quoi GB est normal puisque oMesColView n'est pas a 2 dim !

et là j'étais coincé !

ce qu'il faut faire (apparemment) c'est lui passer la Key de la ligne ce qui devient


oMesColview[indice_souhaité] [ma_key] [indice_colonne_a_remplir] = la_valeur_que_l'on_veut_dans_la_cellule

si ça peut éviter des pertes de temps pour qq uns.

Pablo
1