[VB6] Possible de faire des controles "dynamiquement" ??

Possible de faire des controles "dynamiquement" ?? [VB6] - Programmation

Marsh Posté le 06-12-2001 à 15:55:48    

:hello:  
 
je voudrais savoir si il est possible en VB d'ajouter a une feuille des controles comme des label ou des textBox dynamiquement.
 
cad que je veut au chargement de la feuille creer 5 label et 2 txtBox par exemple ...
 
comment faut faire SVP :cry:  
 
Merci d'avance !!  :jap:


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 06-12-2001 à 15:55:48   

Reply

Marsh Posté le 06-12-2001 à 16:06:48    

je crois que l'on peut mais j'en suis pas certain !
essaye avec createobject mais j'en saus pas sûr...sinon tu met les contrôles en staitc et tu les affichent en dynamique..c'est pas plus con
 
controle1.visible = true

Reply

Marsh Posté le 06-12-2001 à 16:10:12    

oui mais je sais pas combien j'aurrais de controle au final, ca depends du nb d'objets dans ma base de données ...


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 06-12-2001 à 16:23:07    

En C, on fait un CreateWindow avec les attributs, infos adhoc.
 
Une ruse en VB (pour éviter les pbs de gestions des nouveaux objets, car leurs évènements ne sont pas dans la liste VB...) c'est de créer ces contrôles et de les mettre hidden. Même en couches, empilés. On peut alors montrer celui/ceux qu'on veut, et aussi le placer là où l'on veut, et donc intercepter et gérer avec VB les messages sans se casser la tête.
Il faut les créer en "array" (contrôles de même nom => "tableau" ).
 
Je parle de VB(3), si c'est VBApplications de Office, je sais pas.

Reply

Marsh Posté le 06-12-2001 à 16:42:07    

Camarchepoa écrit

Citation :

oui mais je sais pas combien j'aurrais de controle au final, ca depends du nb d'objets dans ma base de données ...  


 
du nb de ligne ou du nombre de colone ??


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 06-12-2001 à 16:54:49    

en fonction du nombre de ligne, c pour ca que ja sais pas combien il en faut ....  :(


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 06-12-2001 à 16:56:09    

g trouve qq chose qui doit marcher mais je comprends pas trop le code :
 
-----------------------------------------------------------------

Code :
  1. Private Sub Form_Load()
  2. Dim NumberOfButtons As Integer
  3. Dim ButtonsText As Integer
  4.     NumberOfButtons = 1
  5.    
  6.     Do Until NumberOfButtons = Buttons
  7.       Load cmdButton(NumberOfButtons)
  8.       With cmdButton(NumberOfButtons)
  9.         .Visible = True
  10.         .Left = cmdButton(NumberOfButtons - 1).Left + .Width + 300
  11.       End With
  12.       NumberOfButtons = NumberOfButtons + 1
  13.     Loop
  14.     NumberOfButtons = 0
  15.    
  16.     Do Until NumberOfButtons = Buttons
  17.       ButtonsText = SetCaption(NumberOfButtons, "Button " & (NumberOfButtons + 1))
  18.       If NumberOfButtons = -1 Then
  19.         MsgBox "Error Detected..!"
  20.         Exit Sub
  21.       End If
  22.       NumberOfButtons = NumberOfButtons + 1
  23.     Loop
  24.    
  25. End Sub


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


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 06-12-2001 à 17:05:49    

ca m'a l'air d'etre une sorte de generateur de bouton non?


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 06-12-2001 à 17:13:12    

oui mais  
Load cmdButton(NumberOfButtons)
 
c pas un truc de VB
 
apparement c un fonction que le gas a code mais je l'ai pas trouvée ...


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 06-12-2001 à 17:15:34    

wouais
idem
la variable button aussi c koi ??  :??:  :??:


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 06-12-2001 à 17:15:34   

Reply

Marsh Posté le 06-12-2001 à 17:17:28    

en fait ca a l'air d'etre le nb de boutons qu'on veut ...


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 06-12-2001 à 17:20:07    

c l'adresse de l'exemple, comme ca si tu veut regarder  
 
 
le zip :
http://www.ipdg3.com/sourcecoderes [...] &id=000076
 
faut le downloader

 

[edtdd]--Message édité par CaMarchePoa--[/edtdd]


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 06-12-2001 à 17:37:04    

L'utilisation de la bib "Microsoft Visual Basic 6.0 Extensibility" doit permettre de faire des formulaires dynamiquement
 
Mais le "Load" doit marcher (c'est bien une fonction VB) avec la classe de contrôle à spécifier. Ce procédé simule un tableau d'objets sous VB. le Bouton n°1 sera Button(0), le n°2 Button(1)...
En gros quoi, paske c'est un vague souvenir théorique.
 
A+

Reply

Marsh Posté le 06-12-2001 à 17:53:53    

sylderon --> heu g pas tout compris là ...  :(


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 06-12-2001 à 19:25:00    

load marche très bien et c'est d'ailleurs le seul moyen de faire du bon TCP/IP en client/serveur (ou le serveur "loade" sur demande des controles winsock)

Reply

Marsh Posté le 06-12-2001 à 23:16:27    

oulalalala  :pt1cable:  
je veut pas faire du TCP/IP moa
chuit pas compliqué, c juste un ch'ti truc quoa  :pt1cable:  
 
 
 
 
 :pt1cable: vais me coucher d'ailleur  :sleep:


---------------
Ca marche pas sauf des fois ........
Reply

Marsh Posté le 07-12-2001 à 09:11:29    

Dans tu feuille tu mets :
 
    Me.Controls.Add "VB.CommandButton", "Test"
    Me!Test.Caption = "Bouton Dynamique"
    Me!Test.Left = 100
    Me!Test.Top = 100
    Me!Test.Visible = True
 
Cela cree un Bouton dynamique en VB, ensuite tu peux modifier pour creer autrechose ....

Reply

Marsh Posté le 07-12-2001 à 10:46:12    

' creer un commandbutton ou tout autre objet
' mettre son index a 0  
 
Private sub Creer ()
dim i as long  
 
' 1 car le 0 est déja créé
     for i = 1 to 10
         load command(i)
     next i
 
    command(1).left = 1500
    command(1).top  = 2300
 
' etc ...
 
end sub

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed