ADICIONAR LABEL EM TEMPO DE EXECUCAO COM EVENTO

ARCADYUM 26/10/2010 09:55:30
#355918
Pessoal,
Alguém possui um código que adicione label em tempo de execução e que possa ser adicionado um bloco de comando no evento Click dos que forem sendo criados.
Desde já agradeço pela atenção.
PH1959 26/10/2010 10:22:25
#355932
vc quer um label criado em run time (até aí tudo bem...)
mas não entendi o resto
ARCADYUM 26/10/2010 10:56:13
#355937
Bom,
eu preciso pegar em uma variável o nome (Caption) do label criado, ou seja vai ser criado inúmeros labels e cada label vai ser preenchido o caption, porém quando mostrar o formulário e eu clicar sobre um dos labels criados uma variável receberá o nome que esta no label.
Espero ter sido mais claro.
Obrigado pela atenção.
MARCELO.TREZE 26/10/2010 12:50:51
#355947
Resposta escolhida
Assim colega

Private WithEvents Label1 As Label

Private Sub Command1_Click()

Set Label1 = Form1.Controls.Add([Ô]VB.Label[Ô], [Ô]Label1[Ô])

With Label1
.Top = 100
.Left = 100
.Caption = [Ô]Teste[Ô]
.AutoSize = True
.Visible = True
End With

End Sub


Private Sub Label1_Click()
MsgBox [Ô]HEI!!! Você me clicou!!! meu caption se chama[Ô] & Label1.Caption, vbCritical
End Sub


ARCADYUM 26/10/2010 13:30:16
#355956
Para todos os efeitos então eu preciso declarar manualmente todos os eventos ?
Não há como declarar via código um evento para cada label criada em tempo de execução.
Aguardo notícias.
MARCELO.TREZE 26/10/2010 13:48:21
#355960
Outra maneira que creio seja a mais apropriada

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

cole estes codigos

Dim Cont As Integer

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


detalhe vc não precisa criar um evento para cada botão, o evento click acima identifica o index do controle criado


ARCADYUM 26/10/2010 14:38:53
#355962
Marcelo,
vou pedir um favor, pois infelizmente está funcionado para a adição de um único controle. Poderia colocar um exemplo, mas com a adição de inúmeros labels, ou seja carregar em tempo de execução e declarar o evento em vários labels?
Desde já agradeço pela atenção.
MARCELO.TREZE 26/10/2010 18:15:45
#355979
primeiro como vc irá adionar estes labels, pois o evento acima insere varios labels, basta vc declarar a variavel Cont no general do form ou como public em um módulo.

assim ao se clicar no botão varios labels serão inseridos

Private Sub Command1_Click()
Cont = Cont + 1
Load Label1(Cont) [ô][txt-color=#007100] aqui ao se somar 1 ao Cont ex: Label1(1)...Label1(2)...etc[/txt-color]
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


entendeu agora, apenas preste atenção quanto a posição pois voce pode acabar criando um em cima do outro, veja as propriedades top e left.

em anexo um exemplo simples
ARCADYUM 26/10/2010 18:53:55
#355982
Marcelo,
Adaptei aqui e está funcionando perfeito.
Obrigado pela atenção e pela paciência.
Encerrando o tópico
Tópico encerrado , respostas não são mais permitidas