Carcleo 4 Denunciar post Postado Dezembro 21, 2008 Dois dificuldades; 1) Peguei o código Delphi abaixo e preciso passa-lo para VB.Net. Será quie alguem pode me ajudar? procedure TCPedidos.InicializaListaPgto; var Idx :Integer; OpStr : string; begin // limpa seleção for Idx := 0 to CLBpgto.Items.Count -1 do CLBpgto.Checked[Idx] := False; // marca selecionados, conf. foi gravado OpStr := Trim(QryPedidosListaPgto.AsString); while OpStr <> '' do begin Idx := Pos(' ', OpStr); if Idx > 0 then begin CLBpgto.Checked[StrToInt(Copy(OpStr, 1, Idx -1))] := True; Delete(OpStr, 1, Idx); end else begin CLBpgto.Checked[StrToInt(OpStr)] := True; OpStr := ''; end; end; end;A ideia aqui é pegar o resultado de listbox gravado no banco que chega separado por virgulae Popula a listbox. 2) O código abaixo é um código que faz validação de campos vazios no formulario. Mas, não sei porque cargas d'água o código sai dando as mensagens de campo vazio 1 por 1 e só para (faz o exit sub) só no endereco.text: Veja: Private Function Valida() As Boolean Dim ret As Boolean = True ' Assume sucesso na validao. If tipo1.Checked = False Then If tipo2.Checked = False Then MessageBox.Show("Escolha o tipo da pessoa se fsica ou jurdica!") tipo1.Focus() ret = False End If End If If Nome.Text = "" Then If tipo1.Checked = True Then MessageBox.Show("Preencha o Nome!") Nome.Focus() ret = False ElseIf tipo2.Checked = True Then MessageBox.Show("Preencha a Razo Social!") Nome.Focus() ret = False End If End If If cpf_cnpj.Text = "" Or cpf_cnpj.Text = "___.___.___-__" Or cpf_cnpj.Text = "__.___.___/____-__" Then If tipo1.Checked = True Then MessageBox.Show("Preencha o CPF!") cpf_cnpj.Focus() ret = False ElseIf tipo2.Checked = True Then MessageBox.Show("Preencha o CNPJ!") cpf_cnpj.Focus() ret = False End If End If If Len(cpf_cnpj.Text) = 14 Then If Not ValidaCPF(cpf_cnpj.Text) Then MessageBox.Show("CPF Invlido!") cpf_cnpj.Focus() ret = False End If ElseIf Len(cpf_cnpj.Text) = 18 Then If Not ValidaCNPJ(cpf_cnpj.Text) Then MessageBox.Show("CNPJ Invlido!") cpf_cnpj.Focus() ret = False End If End If If Endereco.Text = "" Then MessageBox.Show("Preencha campo Endereo!") Endereco.Focus() ret = False End If If Bairro.Text = "" Then MessageBox.Show("Preencha campo Bairro!") Bairro.Focus() ret = False End If If Cidade.Text = "" Then MessageBox.Show("Preencha campo Cidade!") Cidade.Focus() ret = False End If If Estado.Text = "" Then MessageBox.Show("Preencha campo Estado!") Estado.Focus() ret = False End If If Telefone.Text = "" Then MessageBox.Show("Preencha campo Telefone!") Telefone.Focus() ret = False End If Return ret End Function E para chamar: Assim: Private Sub Novo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Novo.Click If Novo.Text = "Novo" Then For Each c As Control In Me.grpClientes.Controls If TypeOf c Is TextBox OrElse TypeOf c Is MaskedTextBox Then c.Text = "" End If Next Codigo.Enabled = False cpf_cnpj.Visible = False Nome.Visible = False LabelNome.Visible = False data.Visible = False Codigo.Visible = False LabelCodigo.Visible = False IE.Visible = False LabelIE.Visible = False LabelCPF.Visible = False Atualizar.Enabled = False Eliminar.Enabled = False tipo1.Checked = False tipo2.Checked = False Encerrar.Text = "Cancela" Novo.Text = "Incluir" habilita() Nome.Focus() ElseIf Novo.Text = "Incluir" Then If Not Valida() Then Exit Sub End If dr = dt.NewRow incluirRegistro(dr) Novo.Text = "Novo" Encerrar.Text = "Encerrar" Atualizar.Enabled = True Eliminar.Enabled = True desabilita() End If End Sub Onde será que esta o erro? Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 21, 2008 Galera. Consegui traduzir para VB.Net. Só que na hora de marcar os campos nma checklistbox, da erro e diz que ela é somente leitura.; Como posso resolver isso? Ficou assim: Private Sub InicializaListaPgto() Dim Idx As Integer Dim OpStr As String For Idx = 0 To CondPgto.Items.Count - 1 CondPgto.CheckedItems(Idx) = False 'marca selecionados, conforme foi gravado OpStr = Trim(dr.Item("CondPgto")) While OpStr <> "" Idx = InStr(" ", OpStr) If Idx > 0 Then CondPgto.CheckedItems(Convert.ToInt32(OpStr.Substring(1, Idx - 1))) = True OpStr.Remove(1, Idx) Else CondPgto.CheckedItems(Convert.ToInt32(OpStr)) = True OpStr = "" End If End While Next Idx End Sub Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 22, 2008 Ola pessoal vou tentar se mais específico. seguinte: tenho a string Dim OpStr as string = "" 07 14" e tenho uma checkedlistbox com os ítens 07 14 21 e 28 Eu preciso criar uma matriz com os valores que estão na string OpStr tirando os espaços e de cada índice dessa matriz(Os seus valores 07 ou 14) e ver se existe na checkedlistbox algum item comesse valor, se tiver, marca-lo. Como fazer isso? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 23, 2008 Não entendi bem qual o problema. Quando você clica em algum item do checkboxlist da erro de somente leitura? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 23, 2008 Não. Aqui estou recebeno dados do banco para exibir na CheckListBox e o vlor que vem do banco é a String OpStr = "07 14" que tenho que comparar com os itens da checkedlistbox e ver se ela tem algum item comesse valor, se tiver, marca-lo. No caso, o proprio código marcara a CecklistBox os ítens 07 e o 14. Isso esta listando a escolha da forma de pagamento que foi escolhida pelo cliente na hora do pedido 07 e 14 dias. Entendeu? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 23, 2008 Essa sub que você postou? Private Sub InicializaListaPgto() Dim Idx As Integer Dim OpStr As String For Idx = 0 To CondPgto.Items.Count - 1 CondPgto.CheckedItems(Idx) = False 'marca selecionados, conforme foi gravado OpStr = Trim(dr.Item("CondPgto")) While OpStr <> "" Idx = InStr(" ", OpStr) If Idx > 0 Then CondPgto.CheckedItems(Convert.ToInt32(OpStr.Substring(1, Idx - 1))) = True OpStr.Remove(1, Idx) Else CondPgto.CheckedItems(Convert.ToInt32(OpStr)) = True OpStr = "" End If End While Next Idx End Sub Esta funcionando em partes? Esta dando erro? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 23, 2008 Mudei ela e aconteceu outra coisa: O código abaixo esta funcionando correto com um por menor: A cada pedido que eu mostro, ele guarda na chequelistbox o ítem dele. Tipo: Pedido 1 -> Cliente pediu compra a prazo para pagar com 07 e 14 dias Pedido 2 -> Cliente pediu compra a prazo para pagar com 21 e 28 dias na hora de eu mostrar o Pedido 1, ele mostra mas na hora de eu mostrar o Pedido 2 ele marca os do 2 e tambem o do 1 se eu voltar no pediddo 1 continua mostrando os do 2 e o do 1 tambem. Como resolve isso? Private Sub InicializaListaPgto() Dim OpStr As String = Trim(dr.Item("CondPgto")) 'Cria um array com os valores, colocando-os separados por espaco em diferentes elementos do array Dim listaValores As String() listaValores = OpStr.Split(" ") Dim item As String Dim indice As Integer 'Percorre todos os itens que existem no seu array For Each item In listaValores 'Procura o item no CheckedListBox 'Se encontrar, retorna o ndice do item 'Se não encontrar, retorna -1 indice = Me.CondPgto.Items.IndexOf(item) 'Encontrou o item na lista? If (indice > 0) Then 'Sim, então faz a marcao (Checked) Me.CondPgto.SetItemChecked(indice, True) ElseIf (indice = 0) Then 'Sim, ento faz a marcao (Checked) Me.CondPgto.SetItemChecked(0, True) End If Next End Sub Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 23, 2008 Todo componente tem um método que limpa os valores dele, ou até mesmo desmarca os itens marcados, qual o nome exatamente do objeto que esta usando? CheckBoxList, RadioButtonList? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 23, 2008 CheckedListBox Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 23, 2008 Tente algo do tipo: SeuCheckedListBox.SelectedIndex = -1 Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 23, 2008 Ok pessoal essa tambem ja consegui graças a voces. Agora to com um outro problema dentro do mesmo assunto. Porem, na ordem inversa: Voces me ajudaram a preecher(marcar) a CheckedListBox a partir de valores que vem do banco como string em valores separados por um espaço. Agora preciso o contrario: Enviar para o banco os valores marcados na CheckListBox em form de uma string em valores separados por um espaço. Cheguei a fazer um código mas só consigo gravar os índice e não os valores. Vejam: SnippetIf CondPgto.Visible = True Then For Idx = 0 To CondPgto.Items.Count - 1 If CondPgto.CheckedItems(Idx) Then Dim idx2 As String = "" If CondPgto.CheckedItems(Idx) = 0 Then idx2 = "07" If CondPgto.CheckedItems(Idx) = 1 Then idx2 = "14" If CondPgto.CheckedItems(Idx) = 2 Then idx2 = "21" If CondPgto.CheckedItems(Idx) = 3 Then idx2 = "28" Idy = Idy + Convert.ToString(idx2) + " " End If Next Idx Else Idy = "" End IfA CheckListBox´tem só 04 ítems. Ah, ah proposito o código que faz a marcação da CheckedListBox a partir de valores que vem do banco como string em valores separados por um espaço. Segue: SnippetPrivate Sub InicializaListaPgto() Dim o As Integer 'Percorre todos os itens que existem no CheckedListBox For o = 0 To Me.CondPgto.Items.Count - 1 'Desmarca (Uncheck) cada um dos itens Me.CondPgto.SetItemChecked(o, False) Next Dim OpStr As String = Trim(dr.Item("CondPgto")) 'Cria um array com os valores, colocando-os separados por espaco em diferentes elementos do array Dim listaValores As String() listaValores = OpStr.Split(" ") Dim item As String Dim indice As Integer 'Percorre todos os itens que existem no seu array For Each item In listaValores 'Procura o item no CheckedListBox 'Se encontrar, retorna o ndice do item 'Se no encontrar, retorna -1 indice = Me.CondPgto.Items.IndexOf(item) 'Encontrou o item na lista? If (indice > 0) Then 'Sim, ento faz a marcao (Checked) Me.CondPgto.SetItemChecked(indice, True) ElseIf (indice = 0) Then 'Sim, ento faz a marcao (Checked) Me.CondPgto.SetItemChecked(0, True) End If Next End Sub Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 25, 2008 Essa sua última dúvida não é referente a este tópico: http://forum.imasters.com.br/index.php?showtopic=323129 Abraços... Compartilhar este post Link para o post Compartilhar em outros sites