magtaem Posted April 25, 2015 at 12:29 PM Report Share #581833 Posted April 25, 2015 at 12:29 PM (edited) 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 Edited April 25, 2015 at 03:01 PM by apocsantos geshi 1 Report Link to comment Share on other sites More sharing options...
magtaem Posted April 25, 2015 at 03:25 PM Author Report Share #581838 Posted April 25, 2015 at 03:25 PM Alguém ? Link to comment Share on other sites More sharing options...
Muryllo Posted April 25, 2015 at 04:11 PM Report Share #581840 Posted April 25, 2015 at 04:11 PM É só você botar o nome do painel na frente If Panel1.Checkbox2.checked then Label1.text = "Funcional" End if Link to comment Share on other sites More sharing options...
magtaem Posted April 25, 2015 at 05:11 PM Author Report Share #581844 Posted April 25, 2015 at 05:11 PM É 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 Link to comment Share on other sites More sharing options...
Muryllo Posted April 25, 2015 at 09:07 PM Report Share #581860 Posted April 25, 2015 at 09:07 PM 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 Se tiver alguma dúvida pergunte 🙂 1 Report Link to comment Share on other sites More sharing options...
magtaem Posted April 26, 2015 at 12:06 AM Author Report Share #581866 Posted April 26, 2015 at 12:06 AM Em 25/04/2015 às 22:07, Muryllo disse: 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 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: Link to comment Share on other sites More sharing options...
Solution Muryllo Posted April 26, 2015 at 02:53 PM Solution Report Share #581875 Posted April 26, 2015 at 02:53 PM (edited) 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 👍 Até mais Edited April 26, 2015 at 02:53 PM by Muryllo 1 Report Link to comment Share on other sites More sharing options...
magtaem Posted April 26, 2015 at 03:34 PM Author Report Share #581876 Posted April 26, 2015 at 03:34 PM Muito obrigado colega Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now