• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

marcoferreira

Matriz

18 mensagens neste tópico

Boas pessoal.

Alguem me sabe dizer como faço para programar um botao duma matriz de botoes ?

Se quiserem que ponha algum código ...

cumpz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crias um botão e fazes copy/paste. Ele pergunta-te se queres criar um array de botões e é só dizeres que sim.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu fiz isto:

Dim tabuleiro(altura, largura) As Button

E aparece-me a matriz com todos os botoes que quero, o que eu queria saber agora era como programar dentro desses botoes...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, está (estava) na secção errada!

Então defines o teu array de botões

Dim tabuleiro(altura, largura) As Button

Depois adicionar os botões ao teu array/form

tabuleiro(0, 0) = New Button
Me.Controls.Add(tabuleiro(0, 0))

Para acederes a qualquer botão do array só tens de fazer:

tabuleiro(1, 0).Enabled = False

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E como é que eu faço para descobrir que o botão foi clicado ?

Já estou a conseguir editar , obrigado pela ajuda -

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei ... como estás a definir o handler para os botões ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não defeni , vou mandar o código completo para mostrar como fiz .

Declarei o tabuleiro , depois a matriz . Altura e largura o numero de botoes pertencentes no tabuleiro.

 Dim altura As Integer = 7 
Dim largura As Integer = 7
Dim tabuleiro(altura, largura) As Button 
Dim matriz(altura, largura) As Integer

Depois fiz um ciclo for para preencher o tabuleiro.

For x = 0 To altura

            For y = 0 To largura

                tabuleiro(x, y) = New Button
                tabuleiro(x, y).Top = x * blargura + 50
                tabuleiro(x, y).Width = blargura
                tabuleiro(x, y).Height = baltura
                tabuleiro(x, y).Left = y * baltura + 50
                tabuleiro(x, y).BackColor = Color.White
                tabuleiro(x, y).FlatStyle = FlatStyle.Standard
                tabuleiro(x, y).Enabled = True
                tabuleiro(x, y).Visible = True
                tabuleiro(x, y).Show()
                tabuleiro(x, y).BringToFront()
                tabuleiro(x, y).Name = "OK"
                Controls.Add(tabuleiro(x, y))
matriz(0, 1) = 1
                matriz(0, 3) = 1
                matriz(0, 5) = 1
  Next

        Next

E agora queria programar o botão para quando fosse clicado verificar as jogadas possiveis, por exemplo clicava no botao (0,0) e depois o botao (1,1) sendo a jogada possivel, aparecia destacado , para fazer o movimento da peça .

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não defeni , vou mandar o código completo para mostrar como fiz .

Declarei o tabuleiro , depois a matriz . Altura e largura o numero de botoes pertencentes no tabuleiro.

 Dim altura As Integer = 7 
Dim largura As Integer = 7
Dim tabuleiro(altura, largura) As Button 
Dim matriz(altura, largura) As Integer

Depois fiz um ciclo for para preencher o tabuleiro.

For x = 0 To altura

            For y = 0 To largura

                tabuleiro(x, y) = New Button
                tabuleiro(x, y).Top = x * blargura + 50
                tabuleiro(x, y).Width = blargura
                tabuleiro(x, y).Height = baltura
                tabuleiro(x, y).Left = y * baltura + 50
                tabuleiro(x, y).BackColor = Color.White
                tabuleiro(x, y).FlatStyle = FlatStyle.Standard
                tabuleiro(x, y).Enabled = True
                tabuleiro(x, y).Visible = True
                tabuleiro(x, y).Show()
                tabuleiro(x, y).BringToFront()
                tabuleiro(x, y).Name = "OK"
                Controls.Add(tabuleiro(x, y))
matriz(0, 1) = 1
                matriz(0, 3) = 1
                matriz(0, 5) = 1
  Next

        Next

E agora queria programar o botão para quando fosse clicado verificar as jogadas possiveis, por exemplo clicava no botao (0,0) e depois o botao (1,1) sendo a jogada possivel, aparecia destacado , para fazer o movimento da peça .

Boas.

É simples fazes:

Select Case index

Case (0,1)

    ...........

    ...........

Case (0,2)

      ..........

end select

Fazes isto no evento do click do botao claro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois mas o problema é que eu nao tenho esse evento click do botao , tenho que ser eu a criá-lo ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

basta carregares no botao e ele criate automaticamente.

Funciona d mesma maneira como se fosse um botao normal.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depois de adicionares o control o form, e ainda dentro do ciclo, fazer o seguinte:

AddHandler tabuleiro(x, y).Click, AddressOf btnClick

Depois podes ver qual foi o botão pressionado:

    Sub btnClick(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim btn As Button = DirectCast(sender, Button)
        btn.Enabled = False
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

De momento estou no trabalho por isso nao posso exprimentar esse código xS

Assim que o fizer , respondo.

Mas isso vai me premitir programar o evento click de cada um dos botoes do tabuleiro ?

Muito obrigado pela ajuda ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O AddHandler que o jpaulino colocou vai-te "dizer" ao VB, que quando um botão for carregado, para correr a sub btnClick. Ou seja, sempre um botão for carregado, o código que tiveres no btnclick vai ser executado independentemente de qual dos botões carregas-te.

Depois dentro desse evento tens é que arranjar uma forma de identificar qual o butão clickado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah percebi e acho que já vou conseguir arranjar uma solução .

Obrigadao mesmo a todos  :cheers:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estive agora a exprimentar o código , e funciona.

E eu pensei em fazer um handler para cada botao , mas dá me erro

Escrevi assim :

AddHandler tabuleiro(2, 1).Click, AddressOf btnclick

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora