CRIAR CONTROLADORES EM EXECUCAO E PEGAR SEUS IDS

HRMVB 23/11/2012 15:24:22
#414675
Galera, estou desenvolvendo uma funcionalidade que vai no banco de dados, ver os parametros de entrada em monta um form com as labels e txtBox em tempo de execução de acordo com a quantidade de parametros. Minha difuldade está em dá nomes as essas labels e textBox dentro do Loop de parametros e depois saber esses ids para usá-los. Segue exemplo como estou fazendo:

Set lblDisplay = NewForm.Controls.Add([Ô]VB.Label[Ô], [Ô]lblDisplay[Ô])

Vetor = Split(parametros, [Ô];[Ô])
For i = 0 To UBound(Vetor)
With lblDisplay
lblDisplay.Caption = Vetor(i)
End With
Next

Dessa forma eu tenho que definir os nomes das variaves de labels e txtbox fixo e usá-las dentro do for. Só que eu nunca vou saber isso fixo, só vou saber quando faço a consulta no banco. E depois vou querer pegar os valores passados no txtBox e preciso saber os ids que foram criados no loop.
KERPLUNK 23/11/2012 16:11:42
#414677
Você poderia usar a notação húngara como já está usando para cada componente e adicionar o nome do campo ao qual ele se refere.
HRMVB 23/11/2012 16:49:54
#414678
KERPLUNK, você poderia postar exemplo? Não sei se está entendendo a minha pergunta.

Obrigado.
HRMVB 23/11/2012 16:57:12
#414680
Eu não quero padrão de notação, e sim criar labels e textboxs em tempo de execução e consequeuentemente pegar os valores do textBox. Ex: txtNome.Text. Só que a quantidades de controladores que vou criar é indefinido. Pode ser que crie 10 txtBox como as vezes 5. E pra isso essas textBox tem que ter um id. Como nomeio elas na criação em tempo de execução?
MARCELO.TREZE 23/11/2012 17:32:42
#414682
Resposta escolhida
faz o seguinte

coloque um label em seu form, na propriedade index do mesmo coloque zero em visible = false.

cole estes codigos

Dim Cont As Integer [txt-color=#007100][ô]no general do form[/txt-color]


Private Sub Command1_Click()
Cont = Cont + 1
Load Label1(Cont)
Label1(Cont).Top = Label1(Cont).Top
Label1(Cont).Left = Label1(Cont - 1).Left + 1000
Label1(Cont).AutoSize = True
Label1(Cont).Visible = True
Label1(Cont).Caption = [Ô]teste[Ô]
End Sub



Private Sub Form_Load()
Cont = 0
End Sub



Private Sub Label1_Click(Index As Integer)
MsgBox Label1(Index).Caption & Index
End Sub



o exemplo acima é para um label você poderá fazer o mesmo com textbox, ou outro controle
HRMVB 23/11/2012 17:44:53
#414683
Valeu MARCELO-TREZE. Deu certinho.

Obrigado.
Tópico encerrado , respostas não são mais permitidas