AUTO COMPLETAR

 Tópico anterior Próximo tópico Novo tópico

AUTO COMPLETAR

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#485214 - 06/11/2018 13:35:51

JPBATTLEKILL
LUIS EDUARDO MAGALHAES
Cadast. em:Novembro/2018


Bom dia pessoal. sou bem novo em VB.NET meu conhecimento e bem reduzido, tenho curso de php e sqlserver apenas, estou aprendendo atraves de videos a usar vb.net.
queria fazer uma aplicação para me ajudar a resolver um problema que tenho tido. O TUNUSAT me deu uma mão ate agora. porem esta postando no lugar errado desculpem o erro.
Segue o link http://www.vbmania.com.br/index.php?modulo=detalhe&id=9544
oque preciso resolver é o seguinte:
A noite irei testar oque o TUNUSAT me passou no link mais estou abrindo o tópico aqui caso alguém tenha mais alguma ideia também e queria me ajudar :D
Obrigado a todos pela atenção  

  Como eu falei no post meu Txt e dessa forma ele e composto por categorias que vem antes dos //.
e também composto por códigos que vem depois do //. queria puxar o nome que esta dentro de "" no auto completar e pegar o código da seção separa-lo por virgula e puxar o codigo do item no caso a linha que digitei. é possível isso ?

  0
// Codigo Nome tamanho
0 "Tesoura" 2
1 "Copo" 3
2 "Garrafa" 5
end

1
// Codigo Nome tamanho
0 "colher" 1
1 "faca" 5
2 "garfo" 4
end


no final quando gerar o txt ele ficara assim

  //Index    Tamanho    Comentário

1,0                    1          //Colher

1,1                     5         //Faca

1,2                     4         //Garfo

0,0                     2         //Tesoura

0,2                      5        //Garafa

end




#485215 - 06/11/2018 14:43:07

ALEVALE
JUNDIAI
Cadast. em:Março/2012


Vamos por partes ?

Você não tem o código fonte certo !? Esta se baseando no exemplo e não criou nada seu ainda ?

Tenta dar uma lida no split que irá te ajudar muito, dai você posta seu código que podemos analisar assim conseguimos te ajudar.

Coloque a sua dúvida por completo, "tenho um texto box que eu populo ele com um arquivo texto, gostaria que quando alguém clicasse ele autocompletasse etc" porque está bem vago sua pergunta.

---------------------------------------------------------------
"Já está provado por A+B que A+B num prova nada"
---------------------------------------------------------------

#485220 - 06/11/2018 16:48:33

JPBATTLEKILL
LUIS EDUARDO MAGALHAES
Cadast. em:Novembro/2018


Citação:
:
Vamos por partes ?

Você não tem o código fonte certo !? Esta se baseando no exemplo e não criou nada seu ainda ?

Tenta dar uma lida no split que irá te ajudar muito, dai você posta seu código que podemos analisar assim conseguimos te ajudar.

Coloque a sua dúvida por completo, "tenho um texto box que eu populo ele com um arquivo texto, gostaria que quando alguém clicasse ele autocompletasse etc" porque está bem vago sua pergunta.


Isso não tenho ainda nada do código fonte. Isso o TUNUSAT me deu o exemplo do arquivo dele e por não entender muito estou bem perdido. mais se eu conseguir o código que faça o restante me viro, porem não sei nem como procurar, vou descrever oque preciso.

Eu tenho um arquivo TXT

Arquivo.txt

    0
// Codigo Nome tamanho
0 "Tesoura" 2
1 "Copo" 3
2 "Garrafa" 5
end

1
// Codigo Nome tamanho
0 "colher" 1
1 "faca" 5
2 "garfo" 4
end


Nesse arquivo acima eu tenho os comentários que estão com // na frente. então eu preciso que um código leia esse arquivo ele sera minha BD com exceção de tudo que tiver //.
  Como ele funciona:
antes da // eu tenho o "0" ele é o numero da seção dos dados.
depois da // eu tenho os códigos das linhas. eu preciso ter uma textbox com auto completar que ele ira puxar tudo que tiver dentro de "aspas duplas", ele ira puxar para o auto completar so oque esta dentro das "".
Primeira pergunta isso é possível ?  
Isso é oque preciso que o primeiro código faça leia o arquivo text box, leia oque tiver dentro de "" e puxe para o auto compeltar.

A segunda parte. Tudo que eu procurar na textbox, um exemplo busquei Colher. ele vai jogar em uma listbox ou algo do tipo abaixo do compo textbox Como abaixo.
Ele vai pegar a seção da Colher que no exemplo acima é 1 separa por virgula colocando o código da colher que é 0. vai puxar o tamanho e como comentário o nome: //Colher
Depois disso ele ira gerar um arquivo txt. Resumindo o programa vai ler o arquivo txt acima e conforme oque eu buscar dentro do txt usando o textboxAutoCompletar ele ira criar o novo txt como abaixo.

    
//Index    Tamanho    Comentário

1,0                    1          //Colher

1,1                     5         //Faca

1,2                     4         //Garfo

0,0                     2         //Tesoura

0,2                      5        //Garafa

end




#485246 - 07/11/2018 15:31:48

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


Última edição em 07/11/2018 15:35:31 por TUNUSAT

JPBATTLEKILL,

    Em cima do meu código, mude a função: "ProcuraTextBox" para o código abaixo:

  
    Public Sub ProcuraTextBox(frm As Form, strPath As String)
        Dim lst As New List(Of String)
        Dim colTextBox As New Collection
        Dim MySource As New AutoCompleteStringCollection()
        Dim Caminho As String
        '2018/11/07 - Mudei aqui
        'Dim Linha As Array = {""}
        Dim Linha() As String = {""}
        Dim LinhaAux As String
        Dim Valores() As ClsVetor = {}

        '2018/11/07 - Adicionei aqui
        Dim intConta As Integer = 0

        '2018/11/07 - Mudei aqui
        'Caminho = strPath & "nomes_28.txt"
        Caminho = strPath & "exemplo.txt"

        'Pega o arquivo
        'Get the file
        If File.Exists(Caminho) Then

            'Percorre o arquivo para gerar uma lista de nomes
            'Scrolls through the file to generate a list of names
            Using sr As StreamReader = File.OpenText(Caminho)

                '2018/11/07 - Mudei aqui
                'If sr.Peek() >= 0 Then Linha = sr.ReadLine().Split
                intConta = sr.Peek()

                ReDim Linha(intConta - 1)

                intConta = 0

                While sr.Peek() >= 0
                    LinhaAux = sr.ReadLine()

                    If InStr(LinhaAux, """") > 0 Then
                        Linha(intConta) = Mid(LinhaAux, InStr(LinhaAux, """") + 1, InStrRev(LinhaAux, """") - 4)
                        intConta += 1
                    End If

                End While

                ReDim Preserve Linha(intConta - 1)
            End Using

        End If


        For u = 0 To Linha.Length - 1
            lst.Add(Linha.GetValue(u))
        Next

        For Each obj In frm.Controls

            If TypeOf obj Is TextBox Then colTextBox.Add(obj)

            If TypeOf obj Is DataGridView Then

                ReDim Valores(lst.Count)

                For index = 0 To lst.Count - 1
                    Valores(index) = New ClsVetor(lst.Item(index).ToString())
                Next

                obj.DataSource = Valores
            End If

        Next

        MySource.AddRange(lst.ToArray)

        For u = 1 To colTextBox.Count
            colTextBox(u).AutoCompleteCustomSource = MySource
            colTextBox(u).AutoCompleteMode = AutoCompleteMode.SuggestAppend
            colTextBox(u).AutoCompleteSource = AutoCompleteSource.CustomSource
        Next

    End Sub


    Mas acho que é possível melhorar...

ALEVALE,

   Meu código QUASE resolve o problema do JPBATTLEKILL, mas ele precisa "isolar" as aspas duplas.

[]'s,
Tunusat.


Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanuel.

#485441 - 15/11/2018 20:19:05

JPBATTLEKILL
LUIS EDUARDO MAGALHAES
Cadast. em:Novembro/2018


Última edição em 15/11/2018 22:32:57 por JPBATTLEKILL

Boa noite! Desculpe não ter respondido antes estava viajando. esta dando erro no codigo.
System.IndexOutOfRangeException: 'O índice estava fora dos limites da matriz.'
nesta linha
If InStr(LinhaAux, """") > 0 Then
                        Linha(intConta) = Mid(LinhaAux, InStr(LinhaAux, """") + 1, InStrRev(LinhaAux, """") - 4)
                        intConta += 1  

Fiz um teste se o arquivo tiver mais que 50 linhas ele da o erro. o meu tem 9000 linhas se eu apagar e deixar 50 ele funciona se eu colocar 1 linha a mais de 50 ele da o erro acima!
Fora isso ele leu perfeitamente, so to com um problema se tiver um nome grande tipo colocar colher 4 x dentro de "colher colher colher colher"  ele buga aparecendo a aspa dupla no final.
como faço para resolver o problema das linhas ?
e se eu digitar colher como eu faço para pegar a linha toda em uma string apenas a linha da palavra digitada. é possível ?




#485445 - 16/11/2018 14:57:11

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


JPBATTLEKILL,

   Eu fiz uma depuração passo a passo com o "F10" e não apresentou estouro de tamanho, mas pode ser que tenha espaços em branco depois da linha, podemos colocar um "TRIM()" para limpar os espaços em branco e pagar só a informação.

   Rodando o "While sr.Peek() >= 0":

* não = não entra no "if"
* sim = sim entra no "if"

Valor da variável "LinhaAux":

Rodada - Se entra - conteúdo
01 - não - "0"
02 - não - "// Codigo Nome tamanho"
03 - sim - "0 ""Tesoura"" 2"
04 - sim - "1 ""Copo"" 3"
05 - sim - "2 ""Garrafa"" 5"
06 - não - "end"
07 - não - ""
08 - não - "1"
09 - não - "// Codigo Nome tamanho"
10 - sim - "0 ""colher"" 1"
11 - sim - "1 ""faca"" 5"
12 - sim - "2 ""garfo"" 4"
13 - não - "end"

intConta = 6

[]'s,
Tunusat.

Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanuel.

#485454 - 17/11/2018 03:22:08

JPBATTLEKILL
LUIS EDUARDO MAGALHAES
Cadast. em:Novembro/2018


e pq e nescessario ter mais de 50 linhas no arquivo para dar o erro. tenta pegar o exeplo acima e dar control c varias vezes para passar as 50 linhas. ja tentei tirar os espaços manualmente passou de 50 linhas ele da erro de matriz



 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário