Usuário com melhor resposta
cores de commandbutton

Pergunta
-
Tenho um Formulario com 85 CommandButtons
Ao carregar o Formulario O sistema precisa ler o Banco e Verificar o Status de Cada um dos Botoes e deixa-lo com a cor correspondente ao Status.. so que acho que existe uma maneira mais agil da qual eu estou fazendo pois estou usando case ?? poderiam me ajudar ??
Dim SQL As String
SQL = "SELECT * from TbBoxes where NumEnd = 957"
Conectar()
Dim cmd As New SqlCommand(SQL, Conecta)
Dim dr As SqlDataReader = cmd.ExecuteReader()
While dr.Read()
Select Case dr("NUMBOX").ToString()
Case 1
If dr("STATUS").ToString() = "LIVRE" Then
cmdbox01.BackColor = Color.Lime
ElseIf dr("STATUS").ToString() = "OCUPADO" Then
cmdbox01.BackColor = Color.Red
ElseIf dr("STATUS").ToString() = "VENCENDO" Then
cmdbox01.BackColor = Color.DodgerBlue
End If
Case 2
If dr("STATUS").ToString() = "LIVRE" Then
cmdbox02.BackColor = Color.Lime
ElseIf dr("STATUS").ToString() = "OCUPADO" Then
cmdbox02.BackColor = Color.Red
ElseIf dr("STATUS").ToString() = "VENCENDO" Then
cmdbox02.BackColor = Color.DodgerBlue
End If
Case 3
If dr("STATUS").ToString() = "LIVRE" Then
cmdbox03.BackColor = Color.Lime
ElseIf dr("STATUS").ToString() = "OCUPADO" Then
cmdbox03.BackColor = Color.Red
ElseIf dr("STATUS").ToString() = "VENCENDO" Then
cmdbox03.BackColor = Color.DodgerBlue
End If
Case 4
If dr("STATUS").ToString() = "LIVRE" Then
cmdbox04.BackColor = Color.Lime
ElseIf dr("STATUS").ToString() = "OCUPADO" Then
cmdbox04.BackColor = Color.Red
ElseIf dr("STATUS").ToString() = "VENCENDO" Then
cmdbox04.BackColor = Color.DodgerBlue
End If
Case 5
If dr("STATUS").ToString() = "LIVRE" Then
cmdbox01.BackColor = Color.Lime
ElseIf dr("STATUS").ToString() = "OCUPADO" Then
cmdbox01.BackColor = Color.Red
ElseIf dr("STATUS").ToString() = "VENCENDO" Then
cmdbox01.BackColor = Color.DodgerBlue
End IfObrigado a todos pela ajuda
Respostas
-
Você me segure fazer isso no evento de cada Botão ??? Se for isso vai ficar mais lento ainda, Eu preciso de um jeito que ele leia o banco e carregue os dados e troque as cores de acordo com o Status. Da Forma mais rápida, usando um for ou While. Eu vi alguns jeitos criando objetos, mais não sei como manejar os botoes.
RBARBIERI o que o Jean disse está correto.
1º Supondo que inicialmente vc carregue as informações iniciais de acordo com cada status vc colocar cores diferentes para cada poltrona, logo já temos uma visualização inicial.
2º Ao clicar em uma outra poltrona que visivelmente está liberada devemos ter em mente que existe outras pessoas utilizando o sistema que aloca o acento do mesmo ônibus (logo seu sistema vai precisar de um timer para pegar de tempos em tempos e atualizar os status de cada poltrona que esteja livre).
Obs: em questão de criar um evento para cada botão não se preocupe, vc pode criar um único evento que aponte para cada btn, assim todos btns utilizam o mesmo evento, claro pensando que cada btn tem um id na base de dados para ser validado o status.
3º Acho que a questão de performance não se aplica neste tipo de sistema são leves por si próprio por não ter uma interação em grande escala com a base de dados, claro que devemos contar a sua lógica como por exemplo.
Método 1: Para carregamento inicial ler os dados de datareader.
Método 2: Para validar os status de cadas poltrona seria de outra maneira como pegar apenas uma linha de acordo com o id e por ai vai..
Nome : Romy G. Moura Cargo: Analista Programador
- Sugerido como Resposta Eduardo.RomeroModerator quinta-feira, 12 de fevereiro de 2015 15:43
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 12 de fevereiro de 2015 18:11
Todas as Respostas
-
-
-
Bem, eu não sei quais valores ao certo você está recebendo do banco de dados, então suponho agora que seja em integer como:
0 = nao
1 = sim
2 = vai vencer
No evento backcolor_changed (ele irá acionar de imediato caso tenha uma função que inicie fixando todas as cores em verde)
if dispon = 1 then
botao.backcolor = color.lime
elseif dispon = 0 then
botão.backcolor = color.red
elseif dispon = 2 then
botao.backcolor = color.dodgeBlue
-
Você me sugere fazer isso no evento de cada Botão ??? Se for isso vai ficar mais lento ainda, Eu preciso de um jeito que ele leia o banco e carregue os dados e troque as cores de acordo com o Status. Da Forma mais rápida, usando um for ou While. Eu vi alguns jeitos criando objetos, mais não sei como manejar os botoes.
- Editado RBARBIERI quarta-feira, 11 de fevereiro de 2015 16:05
-
Você me segure fazer isso no evento de cada Botão ??? Se for isso vai ficar mais lento ainda, Eu preciso de um jeito que ele leia o banco e carregue os dados e troque as cores de acordo com o Status. Da Forma mais rápida, usando um for ou While. Eu vi alguns jeitos criando objetos, mais não sei como manejar os botoes.
RBARBIERI o que o Jean disse está correto.
1º Supondo que inicialmente vc carregue as informações iniciais de acordo com cada status vc colocar cores diferentes para cada poltrona, logo já temos uma visualização inicial.
2º Ao clicar em uma outra poltrona que visivelmente está liberada devemos ter em mente que existe outras pessoas utilizando o sistema que aloca o acento do mesmo ônibus (logo seu sistema vai precisar de um timer para pegar de tempos em tempos e atualizar os status de cada poltrona que esteja livre).
Obs: em questão de criar um evento para cada botão não se preocupe, vc pode criar um único evento que aponte para cada btn, assim todos btns utilizam o mesmo evento, claro pensando que cada btn tem um id na base de dados para ser validado o status.
3º Acho que a questão de performance não se aplica neste tipo de sistema são leves por si próprio por não ter uma interação em grande escala com a base de dados, claro que devemos contar a sua lógica como por exemplo.
Método 1: Para carregamento inicial ler os dados de datareader.
Método 2: Para validar os status de cadas poltrona seria de outra maneira como pegar apenas uma linha de acordo com o id e por ai vai..
Nome : Romy G. Moura Cargo: Analista Programador
- Sugerido como Resposta Eduardo.RomeroModerator quinta-feira, 12 de fevereiro de 2015 15:43
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 12 de fevereiro de 2015 18:11
-
Ola Rommy obrigado pela resposta
1 - estou carregando as informacoes da maneira que coloquei acima.. meus botoes tambem ja se iniciam com o verde.. conforme o cliente seleciona algum dos botoes de acordo com o que e feito eu mudo o status.. somente na tela dele...
supondo que tenha 3 usuarios o timer vai atualizar o status de todos os botoes.. e nessa atualizacao que eu gostaria de saber se posso fazer algo mais rapido do que eu fiz com o case... a cada 15 segundos pretendo repassar o status
-
Ola Rommy obrigado pela resposta
1 - estou carregando as informacoes da maneira que coloquei acima.. meus botoes tambem ja se iniciam com o verde.. conforme o cliente seleciona algum dos botoes de acordo com o que e feito eu mudo o status.. somente na tela dele...
supondo que tenha 3 usuarios o timer vai atualizar o status de todos os botoes.. e nessa atualizacao que eu gostaria de saber se posso fazer algo mais rapido do que eu fiz com o case... a cada 15 segundos pretendo repassar o status
Minha opinião é que ao clicar mude o status na base e o timer seria apenas para verificar os status para cada usuário mas esta verificação deve ser feita para mudar as cores de cada poltrona.
Acho que em questão de performance ficaria bom (Rápido) não teria com que se preocupar já que os dados de verificação são poucos.
Nome : Romy G. Moura Cargo: Analista Programador