Je crée dynamiquement des formulaires. À partir d'une table, j'ajoute des
textebox, des boutons, des étiquettes, etc.
Mais, par exemple, est-il possible d'écrire dynamiquement du code dans
l'évènement click d'un bouton ?
Le formulaire écrit dynamiquement n'est en fait que l'ossature de mon
interface. Il seraitr plus intéressant de pouvoir y ajouter du code de
validation ou du code sur les évènements des contrôles.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LE TROLL
Salut,
Tu dis : "est-il possible d'écrire dynamiquement du code dans l'évènement click d'un bouton ?"
Oui, c'est possible, voici l'exemple à partir d'un objet de base(0), une des méthodes...
' OBJETS = 4 ' 1 form = form1 ' 3 CommandButton = Command1(0) + Command2 + Command3 ' nb le bouton 1 est indicé à 0 ' Sub Form_Activate() Command1(0).Visible = False End Sub
Sub Command1_Click(Index As Integer) ' <<<------ If Index = 1 Then MsgBox "bouton 1(2) dynamique" ' <<<------- End Sub
Sub Command2_Click() ' chargé On Error Resume Next '360 Load Command1(1) Command1(1).Top = 1440 Command1(1).Caption = "1(1)" Command1(1).Visible = True End Sub
Sub Command3_Click() 'efface On Error Resume Next ' 340 déchargé Unload Command1(1) End Sub ----------fin code------
Cependant, j'ai déjà eu des embrouilles avec les objets dynamiques, je ne fais plus! En effet, il y a de facto un problème de focus, si on mélange des objets statiques et des objets dynamiques. Les objets dynamique piquent un index de focus qui appartenait au préalable aux statiques, et ces nouveaux index peuvent être supérieurs à ceux des objets statiques; il s'ensuit un gros bordel dans les objets et d'ordonnancement des numéros d'index... Et le temps gagné en création dynamique, tu le reperds en gestion des focus qu'il faut se retaper à la main...
Exemple (s = statique, d = dynamique) avant le lancement s1 s2 s3 donc les séquence de focus sont s1->s2->s3
après le lancement s1 s2 d1 s3 d1 prend le focus 3, alors que s3 avait avant le focus 2, soit la séquence: s1->s2->s3->d1 ce qui implique qu'il faut corrige et filer le focus n°3 à d1 pour que les tab conservent les ordre... Etc... -------------------FIN----------------
"Jacques" a écrit dans le message de news:
Bonjour tout le monde,
Je crée dynamiquement des formulaires. À partir d'une table, j'ajoute des textebox, des boutons, des étiquettes, etc. Mais, par exemple, est-il possible d'écrire dynamiquement du code dans l'évènement click d'un bouton ? Le formulaire écrit dynamiquement n'est en fait que l'ossature de mon interface. Il seraitr plus intéressant de pouvoir y ajouter du code de validation ou du code sur les évènements des contrôles.
Merci de vos réponses
Salut,
Tu dis :
"est-il possible d'écrire dynamiquement du code dans l'évènement click d'un
bouton ?"
Oui, c'est possible, voici l'exemple à partir d'un objet de base(0), une des
méthodes...
' OBJETS = 4
' 1 form = form1
' 3 CommandButton = Command1(0) + Command2 + Command3
' nb le bouton 1 est indicé à 0
'
Sub Form_Activate()
Command1(0).Visible = False
End Sub
Sub Command1_Click(Index As Integer) ' <<<------
If Index = 1 Then MsgBox "bouton 1(2) dynamique" ' <<<-------
End Sub
Sub Command2_Click() ' chargé
On Error Resume Next '360
Load Command1(1)
Command1(1).Top = 1440
Command1(1).Caption = "1(1)"
Command1(1).Visible = True
End Sub
Sub Command3_Click() 'efface
On Error Resume Next ' 340 déchargé
Unload Command1(1)
End Sub
----------fin code------
Cependant, j'ai déjà eu des embrouilles avec les objets dynamiques, je ne fais
plus! En effet, il y a de facto un problème de focus, si on mélange des objets
statiques et des objets dynamiques. Les objets dynamique piquent un index de
focus qui appartenait au préalable aux statiques, et ces nouveaux index peuvent
être supérieurs à ceux des objets statiques; il s'ensuit un gros bordel dans les
objets et d'ordonnancement des numéros d'index... Et le temps gagné en création
dynamique, tu le reperds en gestion des focus qu'il faut se retaper à la main...
Exemple (s = statique, d = dynamique)
avant le lancement
s1 s2 s3
donc les séquence de focus sont s1->s2->s3
après le lancement
s1 s2 d1 s3
d1 prend le focus 3, alors que s3 avait avant le focus 2, soit la séquence:
s1->s2->s3->d1
ce qui implique qu'il faut corrige et filer le focus n°3 à d1 pour que les tab
conservent les ordre... Etc...
-------------------FIN----------------
"Jacques" <jac_be@hotmail.com> a écrit dans le message de news:
OTLiFJ9rFHA.2008@TK2MSFTNGP10.phx.gbl...
Bonjour tout le monde,
Je crée dynamiquement des formulaires. À partir d'une table, j'ajoute des
textebox, des boutons, des étiquettes, etc.
Mais, par exemple, est-il possible d'écrire dynamiquement du code dans
l'évènement click d'un bouton ?
Le formulaire écrit dynamiquement n'est en fait que l'ossature de mon
interface. Il seraitr plus intéressant de pouvoir y ajouter du code de
validation ou du code sur les évènements des contrôles.
Tu dis : "est-il possible d'écrire dynamiquement du code dans l'évènement click d'un bouton ?"
Oui, c'est possible, voici l'exemple à partir d'un objet de base(0), une des méthodes...
' OBJETS = 4 ' 1 form = form1 ' 3 CommandButton = Command1(0) + Command2 + Command3 ' nb le bouton 1 est indicé à 0 ' Sub Form_Activate() Command1(0).Visible = False End Sub
Sub Command1_Click(Index As Integer) ' <<<------ If Index = 1 Then MsgBox "bouton 1(2) dynamique" ' <<<------- End Sub
Sub Command2_Click() ' chargé On Error Resume Next '360 Load Command1(1) Command1(1).Top = 1440 Command1(1).Caption = "1(1)" Command1(1).Visible = True End Sub
Sub Command3_Click() 'efface On Error Resume Next ' 340 déchargé Unload Command1(1) End Sub ----------fin code------
Cependant, j'ai déjà eu des embrouilles avec les objets dynamiques, je ne fais plus! En effet, il y a de facto un problème de focus, si on mélange des objets statiques et des objets dynamiques. Les objets dynamique piquent un index de focus qui appartenait au préalable aux statiques, et ces nouveaux index peuvent être supérieurs à ceux des objets statiques; il s'ensuit un gros bordel dans les objets et d'ordonnancement des numéros d'index... Et le temps gagné en création dynamique, tu le reperds en gestion des focus qu'il faut se retaper à la main...
Exemple (s = statique, d = dynamique) avant le lancement s1 s2 s3 donc les séquence de focus sont s1->s2->s3
après le lancement s1 s2 d1 s3 d1 prend le focus 3, alors que s3 avait avant le focus 2, soit la séquence: s1->s2->s3->d1 ce qui implique qu'il faut corrige et filer le focus n°3 à d1 pour que les tab conservent les ordre... Etc... -------------------FIN----------------
"Jacques" a écrit dans le message de news:
Bonjour tout le monde,
Je crée dynamiquement des formulaires. À partir d'une table, j'ajoute des textebox, des boutons, des étiquettes, etc. Mais, par exemple, est-il possible d'écrire dynamiquement du code dans l'évènement click d'un bouton ? Le formulaire écrit dynamiquement n'est en fait que l'ossature de mon interface. Il seraitr plus intéressant de pouvoir y ajouter du code de validation ou du code sur les évènements des contrôles.
Merci de vos réponses
Jean-Marc
"Jacques" a écrit dans le message de news:
Bonjour tout le monde,
Je crée dynamiquement des formulaires. À partir d'une table, j'ajoute des textebox, des boutons, des étiquettes, etc. Mais, par exemple, est-il possible d'écrire dynamiquement du code dans l'évènement click d'un bouton ? Le formulaire écrit dynamiquement n'est en fait que l'ossature de mon interface. Il seraitr plus intéressant de pouvoir y ajouter du code de validation ou du code sur les évènements des contrôles.
Hello,
on ne peut pas le faire aussi dynamiquement que tu veux. Notamment, on ne sait pas créer du code à la volée :-(
En revanche, mais c'est sans doute différent de ce que tu souhaites, on peut générer des .frm et des .bas ou .cls, sous forme de fichiers texte. Il ne reste plus qu'à les compiler ensuite. J'ai fait ça "pour le fun" il y a quelques années: une application qui générait d'autres applications, essentiellement des applis assez simples qui étaient en fait des formulaires de saisie.
Je créais les formulaires dans une bdd, mon code de validation était en SQL ou dans un mini langage de mon cru, puis l'appli générait les forms VB et le code derrière. Ca marchait très bien avec pas mal d'avantages: - tous les formulaires avaient la même "tête", puisque générés automatiquement - très très peu de bugs, pour les mêmes raisons - une énorme productivité, puisque toute la partie pénible (positionnement des labels, écriture de code de validation répétitive, etc.) se faisait toute seule.
Un de mes utilisateur (une boite d'assurance) a généré plusieurs centaines d'écrans de saisie avec ce soft.
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Jacques" <jac_be@hotmail.com> a écrit dans le message de
news:OTLiFJ9rFHA.2008@TK2MSFTNGP10.phx.gbl...
Bonjour tout le monde,
Je crée dynamiquement des formulaires. À partir d'une table, j'ajoute des
textebox, des boutons, des étiquettes, etc.
Mais, par exemple, est-il possible d'écrire dynamiquement du code dans
l'évènement click d'un bouton ?
Le formulaire écrit dynamiquement n'est en fait que l'ossature de mon
interface. Il seraitr plus intéressant de pouvoir y ajouter du code de
validation ou du code sur les évènements des contrôles.
Hello,
on ne peut pas le faire aussi dynamiquement que tu veux.
Notamment, on ne sait pas créer du code à la volée :-(
En revanche, mais c'est sans doute différent de ce que tu souhaites,
on peut générer des .frm et des .bas ou .cls, sous forme de fichiers
texte.
Il ne reste plus qu'à les compiler ensuite. J'ai fait ça "pour le fun"
il y a quelques années: une application qui générait d'autres
applications, essentiellement des applis assez simples qui étaient en
fait des formulaires de saisie.
Je créais les formulaires dans une bdd, mon code de validation était en SQL
ou dans un mini langage de mon cru, puis l'appli générait les forms VB et
le code derrière. Ca marchait très bien avec pas mal d'avantages:
- tous les formulaires avaient la même "tête", puisque générés
automatiquement
- très très peu de bugs, pour les mêmes raisons
- une énorme productivité, puisque toute la partie pénible (positionnement
des
labels, écriture de code de validation répétitive, etc.) se faisait toute
seule.
Un de mes utilisateur (une boite d'assurance) a généré plusieurs centaines
d'écrans de saisie avec ce soft.
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Je crée dynamiquement des formulaires. À partir d'une table, j'ajoute des textebox, des boutons, des étiquettes, etc. Mais, par exemple, est-il possible d'écrire dynamiquement du code dans l'évènement click d'un bouton ? Le formulaire écrit dynamiquement n'est en fait que l'ossature de mon interface. Il seraitr plus intéressant de pouvoir y ajouter du code de validation ou du code sur les évènements des contrôles.
Hello,
on ne peut pas le faire aussi dynamiquement que tu veux. Notamment, on ne sait pas créer du code à la volée :-(
En revanche, mais c'est sans doute différent de ce que tu souhaites, on peut générer des .frm et des .bas ou .cls, sous forme de fichiers texte. Il ne reste plus qu'à les compiler ensuite. J'ai fait ça "pour le fun" il y a quelques années: une application qui générait d'autres applications, essentiellement des applis assez simples qui étaient en fait des formulaires de saisie.
Je créais les formulaires dans une bdd, mon code de validation était en SQL ou dans un mini langage de mon cru, puis l'appli générait les forms VB et le code derrière. Ca marchait très bien avec pas mal d'avantages: - tous les formulaires avaient la même "tête", puisque générés automatiquement - très très peu de bugs, pour les mêmes raisons - une énorme productivité, puisque toute la partie pénible (positionnement des labels, écriture de code de validation répétitive, etc.) se faisait toute seule.
Un de mes utilisateur (une boite d'assurance) a généré plusieurs centaines d'écrans de saisie avec ce soft.
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
Fred
Dans : news:43189eee$0$6567$, Jean-Marc disait :
"Jacques" a écrit dans le message de news:
Bonjour tout le monde,
Je crée dynamiquement des formulaires. À partir d'une table, j'ajoute des textebox, des boutons, des étiquettes, etc. Mais, par exemple, est-il possible d'écrire dynamiquement du code
Hello,
Bonsoir Jacques et Jean-Marc,
on ne peut pas le faire aussi dynamiquement que tu veux. Notamment, on ne sait pas créer du code à la volée :-(
Pour le cas où cela s'avère vraiment indispensable, c'est une possibilité offerte par le .net framework. Le code étant compilé en deux fois. En langage intermédiaire tout d'abord puis en langage machine à l'exécution (lors de son premier appel). On peut donc générer du code intermédiaire à l'exécution.
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Dans : news:43189eee$0$6567$ba620e4c@news.skynet.be,
Jean-Marc disait :
"Jacques" <jac_be@hotmail.com> a écrit dans le message de
news:OTLiFJ9rFHA.2008@TK2MSFTNGP10.phx.gbl...
Bonjour tout le monde,
Je crée dynamiquement des formulaires. À partir d'une table,
j'ajoute des textebox, des boutons, des étiquettes, etc.
Mais, par exemple, est-il possible d'écrire dynamiquement du code
Hello,
Bonsoir Jacques et Jean-Marc,
on ne peut pas le faire aussi dynamiquement que tu veux.
Notamment, on ne sait pas créer du code à la volée :-(
Pour le cas où cela s'avère vraiment indispensable, c'est une
possibilité offerte par le .net framework. Le code étant compilé en deux
fois. En langage intermédiaire tout d'abord puis en langage machine à
l'exécution (lors de son premier appel). On peut donc générer du code
intermédiaire à l'exécution.
Je crée dynamiquement des formulaires. À partir d'une table, j'ajoute des textebox, des boutons, des étiquettes, etc. Mais, par exemple, est-il possible d'écrire dynamiquement du code
Hello,
Bonsoir Jacques et Jean-Marc,
on ne peut pas le faire aussi dynamiquement que tu veux. Notamment, on ne sait pas créer du code à la volée :-(
Pour le cas où cela s'avère vraiment indispensable, c'est une possibilité offerte par le .net framework. Le code étant compilé en deux fois. En langage intermédiaire tout d'abord puis en langage machine à l'exécution (lors de son premier appel). On peut donc générer du code intermédiaire à l'exécution.
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Jacques
Pour Fred ...
Oui, j'ai vu de la documentation et même un exemple mais je suis enVB6. Cela sera utile lorsque nous passerons en .NET, peut-être fin d'année mais je n'ai pas de pouvoir décisionnel :-(
Pour Jean-Marc ...
Je me doutai un pei qu'il n'était pas possible d'écrire du code à la volée à moins comme tu l'explique de créer des fichiers texte.
Merci à vous deux pour ces explications
Jacques
"Fred" a écrit dans le message de news:%23mO0oK$
Dans : news:43189eee$0$6567$, Jean-Marc disait : > "Jacques" a écrit dans le message de > news: >> Bonjour tout le monde, >> >> Je crée dynamiquement des formulaires. À partir d'une table, >> j'ajoute des textebox, des boutons, des étiquettes, etc. >> Mais, par exemple, est-il possible d'écrire dynamiquement du code > > Hello,
Bonsoir Jacques et Jean-Marc,
> on ne peut pas le faire aussi dynamiquement que tu veux. > Notamment, on ne sait pas créer du code à la volée :-(
Pour le cas où cela s'avère vraiment indispensable, c'est une possibilité offerte par le .net framework. Le code étant compilé en deux fois. En langage intermédiaire tout d'abord puis en langage machine à l'exécution (lors de son premier appel). On peut donc générer du code intermédiaire à l'exécution.
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Pour Fred ...
Oui, j'ai vu de la documentation et même un exemple mais je suis enVB6. Cela
sera utile lorsque nous passerons en .NET, peut-être fin d'année mais je
n'ai pas de pouvoir décisionnel :-(
Pour Jean-Marc ...
Je me doutai un pei qu'il n'était pas possible d'écrire du code à la volée à
moins comme tu l'explique de créer des fichiers texte.
Merci à vous deux pour ces explications
Jacques
"Fred" <foleide@libre.france> a écrit dans le message de
news:%23mO0oK$rFHA.1788@tk2msftngp13.phx.gbl...
Dans : news:43189eee$0$6567$ba620e4c@news.skynet.be,
Jean-Marc disait :
> "Jacques" <jac_be@hotmail.com> a écrit dans le message de
> news:OTLiFJ9rFHA.2008@TK2MSFTNGP10.phx.gbl...
>> Bonjour tout le monde,
>>
>> Je crée dynamiquement des formulaires. À partir d'une table,
>> j'ajoute des textebox, des boutons, des étiquettes, etc.
>> Mais, par exemple, est-il possible d'écrire dynamiquement du code
>
> Hello,
Bonsoir Jacques et Jean-Marc,
> on ne peut pas le faire aussi dynamiquement que tu veux.
> Notamment, on ne sait pas créer du code à la volée :-(
Pour le cas où cela s'avère vraiment indispensable, c'est une
possibilité offerte par le .net framework. Le code étant compilé en deux
fois. En langage intermédiaire tout d'abord puis en langage machine à
l'exécution (lors de son premier appel). On peut donc générer du code
intermédiaire à l'exécution.
Oui, j'ai vu de la documentation et même un exemple mais je suis enVB6. Cela sera utile lorsque nous passerons en .NET, peut-être fin d'année mais je n'ai pas de pouvoir décisionnel :-(
Pour Jean-Marc ...
Je me doutai un pei qu'il n'était pas possible d'écrire du code à la volée à moins comme tu l'explique de créer des fichiers texte.
Merci à vous deux pour ces explications
Jacques
"Fred" a écrit dans le message de news:%23mO0oK$
Dans : news:43189eee$0$6567$, Jean-Marc disait : > "Jacques" a écrit dans le message de > news: >> Bonjour tout le monde, >> >> Je crée dynamiquement des formulaires. À partir d'une table, >> j'ajoute des textebox, des boutons, des étiquettes, etc. >> Mais, par exemple, est-il possible d'écrire dynamiquement du code > > Hello,
Bonsoir Jacques et Jean-Marc,
> on ne peut pas le faire aussi dynamiquement que tu veux. > Notamment, on ne sait pas créer du code à la volée :-(
Pour le cas où cela s'avère vraiment indispensable, c'est une possibilité offerte par le .net framework. Le code étant compilé en deux fois. En langage intermédiaire tout d'abord puis en langage machine à l'exécution (lors de son premier appel). On peut donc générer du code intermédiaire à l'exécution.
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Picalausa François
Hello,
En fonction du contexte, il peut être possible d'écrire et appeler du script à la volée en employant le contrôle Microsoft Script Control (aux limitations d'antivirus près, si elles s'appliquent à ce contrôle?) pour écrire du code. Il me semble toutefois que cette méthode peut être assez longue à l'exécution. Elle peut par contre être très aisée si l'appelant du script fournit de bonnes classes de support de l'action à effectuer.
Il existe aussi la possibilité d'utiliser EbExecuteLine (cfr. google) mais a des fins de debugage uniquement (vba6.dll n'étant pas redistribuable).
Si les actions sont très semblables, il peut être imaginé d'avoir un pool de quelques fonctions fixes appelées en fonctions de l'action à produire (un langage de script réduit à sa plus simple expression).
Sinon, à coup d'assembleur injecté directement en mémoire. Pour celà, il faudra copier le code préalablement assemblé directement dans un tableau de byte. Au respect des conventions d'appels près, tu pourra appeler le pointeur vers le premier octet du tableau comme décrit ici: http://www.fawcette.com/archives/premier/mgznarch/vbpj/2000/02feb00/mc0200/mc0200.asp
-- Picalausa François
"Jacques" a écrit dans le message de news:
Je me doutai un pei qu'il n'était pas possible d'écrire du code à la volée à moins comme tu l'explique de créer des fichiers texte.
Hello,
En fonction du contexte, il peut être possible d'écrire et appeler du script
à la volée en employant le contrôle Microsoft Script Control (aux
limitations d'antivirus près, si elles s'appliquent à ce contrôle?) pour
écrire du code. Il me semble toutefois que cette méthode peut être assez
longue à l'exécution. Elle peut par contre être très aisée si l'appelant du
script fournit de bonnes classes de support de l'action à effectuer.
Il existe aussi la possibilité d'utiliser EbExecuteLine (cfr. google) mais a
des fins de debugage uniquement (vba6.dll n'étant pas redistribuable).
Si les actions sont très semblables, il peut être imaginé d'avoir un pool de
quelques fonctions fixes appelées en fonctions de l'action à produire (un
langage de script réduit à sa plus simple expression).
Sinon, à coup d'assembleur injecté directement en mémoire. Pour celà, il
faudra copier le code préalablement assemblé directement dans un tableau de
byte. Au respect des conventions d'appels près, tu pourra appeler le
pointeur vers le premier octet du tableau comme décrit ici:
http://www.fawcette.com/archives/premier/mgznarch/vbpj/2000/02feb00/mc0200/mc0200.asp
--
Picalausa François
"Jacques" <jac_be@hotmail.com> a écrit dans le message de news:
OJ7CwBBsFHA.3444@TK2MSFTNGP12.phx.gbl...
Je me doutai un pei qu'il n'était pas possible d'écrire du code à la volée
à
moins comme tu l'explique de créer des fichiers texte.
En fonction du contexte, il peut être possible d'écrire et appeler du script à la volée en employant le contrôle Microsoft Script Control (aux limitations d'antivirus près, si elles s'appliquent à ce contrôle?) pour écrire du code. Il me semble toutefois que cette méthode peut être assez longue à l'exécution. Elle peut par contre être très aisée si l'appelant du script fournit de bonnes classes de support de l'action à effectuer.
Il existe aussi la possibilité d'utiliser EbExecuteLine (cfr. google) mais a des fins de debugage uniquement (vba6.dll n'étant pas redistribuable).
Si les actions sont très semblables, il peut être imaginé d'avoir un pool de quelques fonctions fixes appelées en fonctions de l'action à produire (un langage de script réduit à sa plus simple expression).
Sinon, à coup d'assembleur injecté directement en mémoire. Pour celà, il faudra copier le code préalablement assemblé directement dans un tableau de byte. Au respect des conventions d'appels près, tu pourra appeler le pointeur vers le premier octet du tableau comme décrit ici: http://www.fawcette.com/archives/premier/mgznarch/vbpj/2000/02feb00/mc0200/mc0200.asp
-- Picalausa François
"Jacques" a écrit dans le message de news:
Je me doutai un pei qu'il n'était pas possible d'écrire du code à la volée à moins comme tu l'explique de créer des fichiers texte.