Tableau de TextBox (question con en VB6)

Résolu
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 8 mars 2007 à 16:40
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 9 mars 2007 à 09:37
Bonjour,
Alors comme le titre l'indique j'ai une question con. Dans un form je veux qu'a chaque fois qu'un événement survient soit crée un textbox (le pourcois serais un peut long à expliquer). Dans une form j'ai donc mit ce code :

----------------------------------------------------------------------------------------------------

Private Connection() As TextBox

Private Sub Form_Evenenement(Cancel As Integer)
On Error GoTo InitTableau
    ReDim Preserve Connection(0 To UBound(Connection) + 1)
On Error GoTo 0
Suite:
    Set Connection(UBound(Connection)) = New TextBox *******************************
    If UBound(Connection) > 0 Then
        Connection(UBound(Connection)).Visible = True
        Connection(UBound(Connection)).Top = Connection(UBound(Connection) - 1).Top + Connection(UBound(Connection) - 1).Height + 120
        Connection(UBound(Connection)).Left = 120
        Connection(UBound(Connection)).Height = 375
        Connection(UBound(Connection)).Width = 3015
    Else
        Connection(UBound(Connection)).Visible = True
        Connection(UBound(Connection)).Top = 600
        Connection(UBound(Connection)).Left = 120
        Connection(UBound(Connection)).Height = 375
        Connection(UBound(Connection)).Width = 3015
    End If
Exit Sub
InitTableau:
    ReDim Connection(0 To 0)
    GoTo Suite
End Sub
----------------------------------------------------------------------------------------------------

Mon problème se situe à la ligne marquer d'*s cette ligne ne marche tout simplement pas, à l'execution (en mode débug) mon compilateur me renvoie l'erreur : "Invalide use of New keyword". Heeeee "TextBox" n'est pas une classe??? Comand je fais???? Ha et si au passage vous pouviez me donnée une methode plus "propre" pour crée mon tableau (eviter les goto) ca serrais gentie.
Merci bien

4 réponses

HUGOFLASH Messages postés 27 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 5 juin 2007
8 mars 2007 à 19:30
Bonjour,


<ol>
<li>Mettre un contole TextBox dans le formulaire</li>
<li>Mettre dans la propriété name du TextBox "monTextBox" ou un autre nom </li>
<li>Mettre la propriété index du TextBox à 0</li>
<li>dans l'événement du formulaire</li>
</ol>

  load  monTextBox(monTextBox.Ubound+1)
   If UBound(monTextBox) > 0 Then
        monTextBox(monTextBox.Ubound).Visible = True
        monTextBox(monTextBox.Ubound).Top = monTextBox(monTextBox.Ubound - 1).Top + TextBox(monTextBox.Ubound - 1).Height + 120
        monTextBox(monTextBox.Ubound).Left = 120
        monTextBox(monTextBox.Ubound).Height = 375
        monTextBox(monTextBox.Ubound).Width = 3015
    Else
        monTextBox(monTextBox.Ubound).Visible = True
        monTextBox(monTextBox.Ubound).Top = 600
        monTextBox(monTextBox.Ubound).Left = 120
        monTextBox(monTextBox.Ubound).Height = 375
        monTextBox(monTextBox.Ubound).Width = 3015
    End If
Exit Sub

pour décharger un controle utilisé unload



 
3
ad vitam aeternam Messages postés 17 Date d'inscription jeudi 19 mai 2005 Statut Membre Dernière intervention 10 mars 2008
8 mars 2007 à 19:10
J'ai taper exactement ce que tu donne dans vb6, je l'ai compilé; aucune erreur de compilation (je n'ai pas fait de TextBox dans ma feuille!!)
 Par contre l'événement form_evenement ne se lance jamais (remarque; tu as copier evenenement!)

Alors, je ne sais pas quoi te dire!
Est-ce une sorte de KeyLogger que tu voudrais faire?

Ne devrai tu pas te tourner vers la fonction Event ou traiter chaque événement qui puisse être fait avec la souris ou le clavier (en dehord de ce qui est fait dans ton programme si il s'agit d'un keylogger par les API mouse_event ou keybd_event

Api mouse_event

Declare Sub mouse_event Lib "user32" Alias "mouse_event" ( _
                 ByVal dwFlags As Long, _
                 ByVal dx As Long, _
                 ByVal dy As Long, _
                 ByVal cButtons As Long, _
                 ByVal dwExtraInfo As Long)
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction génère des évènements souris. Vous pouvez ainsi déplacer la souris ou appuyer sur ces boutons rien qu'en utilisant cette API.
dwFlags contient un ou plusieurs des constantes du tableau ci-dessous,
dx et dy indiquent une position absolue ou relative (dépend de dwFlags égal à MOUSEEVENTF_ABSOLUTE ou non),
cButtons et dwExtraInfo doivent être mis à 0.

<center>Constante, Valeur, Définition, ----
MOUSEEVENTF_ABSOLUTE, &H8000, Les coordonnées sont indiquées en absolue (entre 0 et 65535)., ----
MOUSEEVENTF_LEFTDOWN, &H2, Simule une pression sur le bouton gauche de la souris., ----
MOUSEEVENTF_LEFTUP, &H4, Simule un relâchement du bouton gauche de la souris., ----
MOUSEEVENTF_MIDDLEDO, &H20, Simule une pression sur le bouton du milieu de la souris., ----
MOUSEEVENTF_MIDDLEUP, &H40, Simule un relâchement du bouton du milieu de la souris., ----
MOUSEEVENTF_MOVE, &H1, Indique un mouvement de la souris., ----
MOUSEEVENTF_RIGHTDOW, &H8, Simule une pression sur le bouton droit de la souris., ----
MOUSEEVENTF_RIGHTUP, &H10, Simule un relâchement du bouton droit de la souris.

Fonction keybd_event</center>

Declare Sub keybd_event Lib "user32" Alias "keybd_event" ( _
                 ByVal bVk As Byte, _
                 ByVal bScan As Byte, _
                 ByVal dwFlags As Long, _
                 ByVal dwExtraInfo As Long)
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette API permet de simuler des frappes au clavier tout comme vous le feriez.
bVk est le code ascii de la touche à envoyer au buffer clavier.
bScan est utilisé pour définir l'action de certaines touches spéciales comme "Imprime écran".
dwFlags est l'évènement que l'on souhaite génèrer comme KeyUp ou l'utilisation des touches étendues sur les claviers spéciaux.
dwExtraInfo permet d'ajouter une valeur supplémentaire à la touche actionnée.

Désolé pour les maigre information que je peux t'apporter j'ai du mal à cerner ton problème!!

(note: les descriptions API proviennent du site: http://docvb.free.fr/api.php
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
8 mars 2007 à 21:12
Bonsoir,

Je répond qu'à la marge de ta remarque : "Ha et si au passage vous pouviez me donnée une methode plus "propre" pour crée mon $tableau (eviter les goto) ca serrais gentie."

JE pense qu'en général, il faut penser autrement la structure de ton application. Lorsqu'on fait apparaître de nouveaux contrôles (ici le Text box) il faut vraiment avoir de très bonnes raisons de programmer cela. EN principe, il y a toujours moyen d'imaginer de faire autrement. Par exemple, ne pourrais-tu pas utiliser le contrôle Grille ? (d'autant que tu parles de tableau...) Une autre idée, c'est tout simplement d'utiliser la propriété VISIBLE à false pour masquer les TEXT, puis de les remettres à zéros. Au prochain click, les réafficher avec VISIBLE à True... au lieu d'en créer de nouveaux... enfin, voilà ce n'est qu'une réflexion...


Amicalement,


Us.




 
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
9 mars 2007 à 09:37
Bonjour,
Tout d'abords
merci à tous pour vos réponse.

Pour
répondre à


[auteurdetail.aspx?ID= 515236 ad
vitam aeternam] :
Oui en faite ce n'est pas
l'évènement Form_Evenenement mais Form_LinkOpen (mon
objectif est de crée un objet, pour le moment des "text
box", pour chaque client DDE se connectant à mon apli, je
me demande encor pourquoi je l'ai modifier).
A tu fais exécuté cette procédure? Ça
marche chez toi??? Pourquoi pas chez moi. C'est injuste, C'est
vraiment trop injuste (Caliméro
).
En tout cas merci pour tes informations sur les
API
mouse_event et keybd_event je me les met sous le coude je suis sure
que ça me servira un jours.

Merci [auteurdetail.aspx?ID=177196 HUGOFLASH ],
je pense que je vais faire comme ça (puisque ça marche
avec le comportement voulut) mais j'aurais aimé apprendre par
la même occasion à générer des text box
sans avoir à les préparer (j'entends par là à
crée ce textbox à index 0).

Réponse à
[auteurdetail.aspx?ID =488557 us_30]
: La raisons qui me fais crée des contrôles est en faite
que c'est juste une étape. Je dois développer une apli
en client serveur ou le serveur communique individuellement avec
chaque client, pour le momant je fais ça par DDE mais peut
être que le WinSock serais plus pratique???, et il ne dois pas
être limité à un nombre de client, donc je crée
un text box à chaque connexion à ma form puis envoie
les référence de cette objet à mon client...
Mais ce n'est pas la question je ne vais pas m'étendre sur le
sujet, en plus en suite j'aimerais que ça soit un autre type
d'objet mais je décompose pour bien comprendre étape
par étape ce que je fais, et tien puisque je parle de cette
autre objet si quelqu'un peut me dire quel que chose la dessus ça
serais adorable (bà oui vous été déjà
gentil de me répondre alors l'étape suivant c'est
adorable, lol

)


"http://www.vbfrance.com/infomsg_QUESTIONS-SUR-DDE-EXPLICATION-SUR-AI-DEJA-FAIS_899915.aspx" je parle de ca topic par raport à l'héritage.







Encore merci à tous du temps que vous m'avais
accordé.

Amicalement
0
Rejoignez-nous