INDEX DE CONTROLES

WILLVIDAL 27/06/2012 12:58:50
#405012
Boa tarde pessoal,
No meu sistema em VB6 eu tinha uma tela com 26 botões, cada um representava uma letra do alfabeto, quando se clicava em algum deles, por exemplo na letra A, aparecia todos os cliente cujo nome começa com a letra A. Para isso os 26 botões tinha o mesmo nome e eu só mudava a propriedade INDEX deles, quando clicava em qualquer um, eles apontavam pra mesma SUB.
No vb 2010 eu já pesquisei e vi que infelizmente não existe mais a propriedade index em controles, para tentar sanar este problema eu fiz uma rotina assim:

Dim Nome As String = ([Ô]ABCDEFGHIJKLMNOPQRSTUVWXYZ.[Ô])
Dim Lef As Integer = 6

For I = 1 To 27
Dim NCom As New Button()

With NCom
.Text = Mid(Nome, I, 1)
.Location = New System.Drawing.Point(Lef, 52)
.Size = New System.Drawing.Size(20, 20)
End With

Lef = Lef + 20
me.Controls.Add(NCom)
Next I

dessa maneira eu criei os 26 botões na ordem, tamanho e lugares certo perfeitamente, como faço agora para que todos eles apontem para a mesma SUB ? ficou meio vaga esse idéia pra mim, pois por serem controles criados em tempo de execução eu não sei onde escrever o comando que eles vão executar dependendo de qual botão cliquei, e também não quero escrever o código em um por um, pois creio que deve haver uma maneira mais fácil e eu que não estou sabendo, como ficaria se eu tivesse 100 botões ? teria que programar um pr um ? achei muita bobeira eles tirarem o INDEX no vb.net.

Obrigado.
WILLVIDAL 28/06/2012 14:05:09
#405117
Bom gente, pra quem um dia estiver nesta mesma situação, eu resolvi este problema fazendo o seguinte:

Private WithEvents NCom As New Button() [ô]DECLARADO NO FORMULÁRIO E NÃO NA ROTINA

Private Sub MontaBotoes() [ô]ESTA ROTINA CRIA 26 BOTÕES CADA UM COM UMA LETRA DO ALFABETO COMO TEXT
Dim Nome As String = ([Ô]ABCDEFGHIJKLMNOPQRSTUVWXYZ[Ô])
Dim Lef As Integer = 6

For I = 1 To 26
NCom = New Button

With NCom
.Text = Mid(Nome, I, 1)
.Size = New System.Drawing.Size(20, 20)
.Location = New System.Drawing.Point(Lef, 52)
AddHandler NCom.Click, AddressOf NCom_Click [ô]ISTO FAZ TODOS OS BOTÕES CHAMAREM O MESMO EVENTO NO CLICK
End With

Lef = Lef + 20
ME.Add(NCom)
Next I
End Sub

[ô]QUANDO CLICAR EM QUALQUER UM DOS BOTÕES CRIADOS, ELE VAI CHAMAR ESTE EVENTO

Private Sub NCom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NCom.Click
MsgBox(sender.text) [ô]MOSTRA A LETRA CLICADA
End Sub

E foi assim que eu consegui substituir a extinta propriedade Index dos controles no VB6 !

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