CRIAR CONTROLADORES EM EXECUCAO E PEGAR SEUS IDS
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.
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.
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.
KERPLUNK, você poderia postar exemplo? Não sei se está entendendo a minha pergunta.
Obrigado.
Obrigado.
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?
faz o seguinte
coloque um label em seu form, na propriedade index do mesmo coloque zero em visible = false.
cole estes codigos
o exemplo acima é para um label você poderá fazer o mesmo com textbox, ou outro controle
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
Valeu MARCELO-TREZE. Deu certinho.
Obrigado.
Obrigado.
Tópico encerrado , respostas não são mais permitidas