Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

magtaem

[Resolvido] Função para verificar Checkboxes

Mensagens Recomendadas

magtaem

Boas pessoal,

Gostaria de saber como faço uma função para verificar várias checkboxes em paineis diferentes?

Outra questão, qual a vantagem e o porquê de utilizar um sistema de controlo de versões ?

Exemplo do código com IF, o código é bem maior que isto, e eu queria simplificar.

If CheckBox184.Checked = True Then
	 desorientacao = CheckBox184.Text
 Else
 End If
 If CheckBox191.Checked = True Then
	 fadigabocejar = CheckBox191.Text
 Else
 End If
 If CheckBox193.Checked = True Then
	 fadigabocejar = CheckBox193.Text
 Else
 End If

Abraço

Editado por apocsantos
geshi
  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
magtaem

É só você botar o nome do painel na frente

If Panel1.Checkbox2.checked then
Label1.text = "Funcional"
End if

Não dá para simplificar mais colega?

Tenho 197 checkedboxes, que me ocupam cerca de 400 linhas de código com IF's, com a sua ajuda diminuo para metade, mas não existe uma função que o faça ficar mais organizado?

Grande abraço

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Muryllo

Olá,

Teria como você postar um print da sua aplicação ? Tem sim formas de reduzir esse excesso de Sentenças com If, mas para isso acho que se usa o For e não me recordo bem como funciona.

Criei uma função básica, ao que me parece você salva variáveis do tipo string com o texto da checkbox, certo ? então utilize a função a seguir e modifique conforme suas necessidades.

Public Class Form1
'Função de tratamento da string com o texto da checkbox
Public Function GetCurrentCheckBoxState(ByVal Control As CheckBox, ByVal Variable As String) As String
	On Error Resume Next
	Dim CurrentCheckBox_Text As String
	If Control.Checked Then
		CurrentCheckBox_Text = Control.Text
		Return CurrentCheckBox_Text
	Else
		Return Variable
	End If
End Function
End Class

Se as variáveis que você modifica não são globais, torne-as variáveis globais inserindo fora de uma sub rotina.

Para utilizar a função :

Exemplo

Public Class Form1
'Valor padrão da variavel
Dim Variavel As String = "Valor Padrão"

'Função de tratamento da string com o texto da checkbox
Public Function GetCurrentCheckBoxState(ByVal Control As CheckBox, ByVal Variable As String) As String
 On Error Resume Next
 Dim CurrentCheckBox_Text As String
 If Control.Checked Then
	 CurrentCheckBox_Text = Control.Text
	 Return CurrentCheckBox_Text
 Else
	 Return Variable
 End If
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles	 Button1.Click
 'assumindo valores a variavel
 Variavel = GetCurrentCheckBoxState(CheckBox1, Variavel)
 'Usando a variavel ao seu gosto
 MsgBox(Variavel)
 'Fim da rotina
End Sub
End Class

HY5r4uC.png

Se tiver alguma dúvida pergunte :)

Editado por Muryllo
  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
magtaem

Olá,

Teria como você postar um print da sua aplicação ? Tem sim formas de reduzir esse excesso de Sentenças com If, mas para isso acho que se usa o For e não me recordo bem como funciona.

Criei uma função básica, ao que me parece você salva variáveis do tipo string com o texto da checkbox, certo ? então utilize a função a seguir e modifique conforme suas necessidades.

Public Class Form1
'Função de tratamento da string com o texto da checkbox
Public Function GetCurrentCheckBoxState(ByVal Control As CheckBox, ByVal Variable As String) As String
	On Error Resume Next
	Dim CurrentCheckBox_Text As String
	If Control.Checked Then
		CurrentCheckBox_Text = Control.Text
		Return CurrentCheckBox_Text
	Else
		Return Variable
	End If
End Function
End Class

Se as variáveis que você modifica não são globais, torne-as variáveis globais inserindo fora de uma sub rotina.

Para utilizar a função :

Exemplo

Public Class Form1
'Valor padrão da variavel
Dim Variavel As String = "Valor Padrão"

'Função de tratamento da string com o texto da checkbox
Public Function GetCurrentCheckBoxState(ByVal Control As CheckBox, ByVal Variable As String) As String
 On Error Resume Next
 Dim CurrentCheckBox_Text As String
 If Control.Checked Then
	 CurrentCheckBox_Text = Control.Text
	 Return CurrentCheckBox_Text
 Else
	 Return Variable
 End If
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles	 Button1.Click
 'assumindo valores a variavel
 Variavel = GetCurrentCheckBoxState(CheckBox1, Variavel)
 'Usando a variavel ao seu gosto
 MsgBox(Variavel)
 'Fim da rotina
End Sub
End Class

HY5r4uC.png

Se tiver alguma dúvida pergunte :)

Desde já um grande abraço, deixo de seguida uma print de uma parte do programa com checkboxes.

Depois para ler da base de dados SQL estes dados como poderia fazer?

Muito obrigado:

Sem_T_tulo.png

Editado por magtaem

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Muryllo

Boas magtaem,

Recentemente eu estava a criar um joguinho em visual basic e usava base de dados sql para salvar credenciais de usuários, perfis, pontuação etc ... É quase uma receita de bolo, se você seguir o padrão consegue obter seus resultados esperados.

Aconselho modificar o código a seu gosto e de preferência em uma biblioteca de vínculo dinâmico (DLL) ou no próprio executável em um módulo pois você usará várias vezes essas funções de leitura e escrita.

Imports System.Data.SqlClient
Imports Battle_of_The_Bulge
Public Class ModuleConnection
Private String_Connection As String
Public Sub New()
 String_Connection = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Murilo\Documents\Visual Studio 2008\Projects\Battle of The Bulge\Battle of The Bulge\System.mdf;Integrated Security=True;User Instance=True"
End Sub
Public Function Register(ByVal Username As String, ByVal Password As String) As Boolean
 Dim SQL_Register As String
 Dim SQL_Command_Variable As String = ("Insert Into Users(Username, Password) Values '" & Username & "','" & Password & "'")
 Dim SQL_Error As SqlDataReader
 Dim SQL_Connection As New SqlConnection(String_Connection)
 Dim SQL_Command As New SqlCommand("Select * From Users Where Username='" & Username & "'", SQL_Connection)
 SQL_Connection.Open()
 SQL_Error = SQL_Command.ExecuteReader
 If SQL_Error.Read = True Then
	 Form3.Show()
	 Battle_of_The_Bulge.Form3.Message_Report("Usuário já registrado.", "Error")
 Else
	 Try
		 SQL_Register = SQL_Error.Read
		 SQL_Error.Close()
		 SQL_Command = New SqlCommand("Insert Into Users(Username, Password) Values ('" & Username & "','" & Password & "')", SQL_Connection)
		 SQL_Command.ExecuteNonQuery()
		 If SQL_Register = False Then
			 Form3.Show()
			 Battle_of_The_Bulge.Form3.Message_Report("Usuário registrado com sucesso.", "Information")
		 End If
	 Catch ex As Exception
		 Form3.Show()
		 Battle_of_The_Bulge.Form3.Message_Report("Erro ao conectar com o servidor.", "Error")
	 Finally
		 SQL_Connection.Close()
	 End Try
 End If

End Function
Public Function Login(ByVal Username As String, ByVal Password As String) As Boolean
 Dim SQL_Error As SqlDataReader
 Dim SQL_Connection As New SqlConnection(String_Connection)
 Dim SQL_Command As New SqlCommand("Select * From Users Where Username='" & Username & "' AND Password='" & Password & "'", SQL_Connection)
 SQL_Connection.Open()
 SQL_Error = SQL_Command.ExecuteReader
 If SQL_Error.Read Then
	 Return "True"
 Else
	 Return "False"
 End If
End Function
End Class

Também há como criar stored procedures (Funções em SQL) para você fazer este tipo de leitura.

Eis aqui uma função que podes usar para evitar o excesso de If's, dessa vez para ajustar a checkbox como ativada ou não.

Public Function SetCheckBoxState(ByVal Control As CheckBox, ByVal Stored_Procedure As String)
 On Error Resume Next
 Dim SQL_Error As SqlDataReader
 Dim SQL_Connection As New SqlConnection(String_Connection)
 Dim SQL_Command As New SqlCommand(Stored_Procedure)
 SQL_Connection.Open()
 SQL_Error = SQL_Command.ExecuteReader
 If SQL_Error.Read Then
	 Control.Checked = True
 Else
	 Control.Checked = False
 End If
End Function

Se o caminho que ele lê na base de dados não existir ou por exemplo, supondo que você marque no banco de dados tal checkbox como 0 = Desativada, 1 = Ativada você tem que verificar isso no parâmetro Stored_Procedure. Se você verificar com o número 1 e ele der uma exceção, significa que é 0, ou seja desativado.

Basta tratar as exceções conforme a função e você vai obter resultados (Boolean)

Estude as duas primeiras funções que eu ti passei :thumbsup: Até mais

Editado por Muryllo
  • Voto 1

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.