Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonsoir à tous,
J'avais une petite question à poser:
Est-ce qu'il possible de créer, dynamiquement et à partir du code powerbuilder, un control dans un object comme par exemple : insérer dynamiquement une SingleLineEdit dans une fenêtre en lui donnant sa position dans la fenêtre.
NB: le SingleLineEdit ne se trouve pas dans la liste control de l'objet fenêtre.
Merci pour vous
Dernière modification par mattdamon (04-03-2009 09:26:18)
Hors ligne
oui (mais il vaut mieux passer par une DW)
// ex de code dans un bouton de fenêtre SingleLineEdit sle_new sle_new = Create SingleLineEdit sle_new.Text = 'hello world' sle_new.Width = 500 sle_new.Height = 100 sle_new.Visible = True Parent.OpenUserObject( sle_new, 50, 50 )
Hors ligne
Bonjour à tous,
erasorz a écrit:
oui (mais il vaut mieux passer par une DW)
Oui je sais que avec la DW sera plus facile a le créer et le manipuler, mais pour l'instant je préfère travailler avec la création dynamique des controls...
dans l'événement open, j'ai mis le code suivant mais ça va pas marcher:
// ex de code dans le open de la fenêtre integer i SingleLineEdit sle_new[] FOR i=1 TO 10 sle_new[i] = Create SingleLineEdit sle_new[i] .Text = 'hello world' sle_new[i] .Width = 100 sle_new[i] .Height =100 sle_new[i] .Visible = True Parent.OpenUserObject( sle_new[i] , i +50, i+50 ) NEXT
Avec ce code, je voulais créer un grand nombre des SLE avec des positions différentes.
Bonne journée
Dernière modification par mattdamon (04-03-2009 08:10:55)
Hors ligne
mattdamon a écrit:
dans l'événement open, j'ai mis le code suivant mais ça va pas marcher:
bouton / fenêtre => Parent.xxx
open / fenêtre => This.xxx
Hors ligne
Si ce n'est que tous tes SLE seront disposés de façon diagonale
X
X
X
X
:P
Et aussi attention à ceci :
When you open a user object during execution, the window does not destroy the user object automatically when you close the window. You need to call CloseUserObject to destroy the user object, usually when the window closes. If you do not destroy the user object, it holds on to its allocated memory, resulting in a memory leak.
Hors ligne
Merci erasorz pour votre attention.
Est-ce que vous pouvez me dire pourquoi il n'a pas inséré 10 SLE dans ma fenêtre ?
Hors ligne
Je suppose que comme erasorz t'as mis un exemple à utiliser dans l'évènement d'un bouton => la fenêtre = parent
ton exemple est utiliser dans l'évènement de la fenêtre => la fenêtre = this ..
Essaye donc de remplacer "parent" par "this"
Dernière modification par micmx (04-03-2009 08:27:18)
Hors ligne
le code avec la boucle fonctionne très bien, mais les contrôles ne sont espacés que d'un point, ils sont quasiment superposés...
essaye avec Parent.OpenUserObject( sle_new[i] , 50, i*100 )
Hors ligne
Merci à tous ça marche bien maintenant
Dernière modification par mattdamon (04-03-2009 09:25:45)
Hors ligne