• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

M.offspring.R

[VB6] Colocar da listbox para caixas texto

24 mensagens neste tópico

Bons dias.

Preciso aqui de uma ajudinha dos masters...

O que eu pretendo fazer é: Seleccionar um item da listbox, e ao clicar no botao VISUALIZAR, surja nas caixas de texto a informação pretendida...

Eu fiz isso em Delphi já uns 2 anos e andava vendo o código para fazer em vb, mas o vb é completamente diferente e delphi, logo estou aqui encalhado com isto...

O código em delphi é este:

       i:=Listbox1.ItemIndex;
      pos := i;

      ARecord:=Lista_contactos.Items[pos];
      edit1.Text:=ARecord^.nome;
      edit2.Text:=Arecord^.morada;
      edit3.Text:=Arecord^.telefone;
      edit4.Text:=Arecord^.telemovel;
      edit5.Text:=Arecord^.email;

Esqueci-me de uma coisa, antes de consultar, quando o form e iniciado, ele carrega automaticamente os dados do ficheiro para um record...

Andei a inventar com o array, mas foi uma tentativa falhada....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Basta isto:

text1.text = list1.list(list1.listindex)

Agora esse código podes colocar num botão ou no evento click da listbox para que apareça logo na textbox, a informação quando seleccionas a informação na listbox

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado.

Mas antes tenho k carregar do ficheiro para a listbox para poder seleccionar...

Ou seja, tenho que fazer isto:

1º Colocar (ao iniciar o form) o conteúdo (só o nome) do ficheiro para a listbox

2º Após estar todos os nomes dos contactos na listbox, seleccionar um da listbox e carregar no botao "visualizar" para que apareça os dados correpondentes a esse nome das edits

É isto que não estou a conseguir fazer... E penso que seja fácil de fazer....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu já tinha lido o teu post, mas nem reparei que estavas a pedir ajuda. Pensei simplesmente que estavas a descrever o que ainda tinhas de fazer  :shocking: pois.. já estou a ver, não li a ultima linha  :-[

...

1º Colocar (ao iniciar o form) o conteúdo (só o nome) do ficheiro para a listbox

...

Estas a utilizar que tipo de base de dados para guardar esses nomes?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Poderei estar a cometer um grande erro, mas estou a usar um simples ficheiro .txt para guardar os dados...

Pensei em guardar numa base de dados, no entanto pouco percebo (ou quase nada de VB) e se fosse meter acces nisto (ou SQL) era a desgraça completa...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hhmmmm, então é mais simples ( na minha opinião)

Para veres como podes carregare os nomes do ficheiro de texto vê este tutorial.

Para a outra questão, como estas a gurdar a informação no ficheiro de texto? Não me estou a referir ao nível de código em VB6 mas sim o formado da informação dentro do ficheiro de texto.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu guiei-me por esse tutorial.

Estou a guardar no ficheiro .txt da seguinte form:

Text1

Text2

Text3

(...)

Text13

São 13 campos que são guardados. No entanto queria que me aparece-se na listbox só o nome, ou seja, a Text1, depois a text14 e por ai fora...

Não sei se me fiz entender...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Segundo entendi, pretendes que ao abrires o Form, sejam adicionados os elementes de um ficheiro .txt a uma lista...

... se assim for, é bastante simples:

Private Sub Form_Load()
Dim strNome As String
Open "c:\ficheiro.txt" For Input As #1
    Do While Not EOF(1) 'Lê o ficheiro até ao fim
        Input #1, strNome 'Guarda a linha actual na variável strNome
        List1.AddItem strNome 'Adiciona a linha actual à lista
    Loop
Close #1
End Sub

Se não for o que pretendes, tenta explicar melhor...  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é isso mesmo  :)

vou tentar fazer isso as 5:30 quando sair do estagio.

Thanks pela dica....

Se conseguir fazer isso, depois falta outra cena....

PS: ja fui testar, no entanto não quero que todos os items apareçam na list1, apenas quer que mostre o 1º campo....

cump.

M.offspring.R

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Acabei agora de testar, mas tive que editar (com era lógico) o código que me deste. Obrigado pela ajuda.

Só falta mais uma coisinha para que consiga acabar o meu programa. è o seguinte:

-> Imaginando que selecciono o item 3, visualizo e pretendo editar. Carrego no botão de editar, faço as alterações e depois quero guardar. O problema está aqui, como "re-escrever" os dados do item nº3?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Da forma que tens isso organizado, carregas toda a informação que carregas-te do ficheiro de texto e guardas tudo no ficheiro de texto.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como? Não te importas de te explicar melhor?

Acho que o que o Nugun queria dizer é que tens que ler o ficheiro todo para uma variável, depois modificar o que tens a modificar e voltar a reescrever o ficheiro já com as alterações!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como? Não te importas de te explicar melhor?

Acho que o que o Nugun queria dizer que tens que ler o ficheiro todo para uma variavel, depois modificar o que tens a modificar e voltar a reescrever o ficheiro ja com as alterações!

É isso. Ou então como ele já tem a informação carregada, basta voltar a gravar para o ficheiro já com as alterações.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já fiz e refiz e não com com isto.... Tou aqui, tou a deixar isto já a meio... :mad:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes colocar aqui o ficheiro de texto?

Eu fiquei a perceber que tinhas algo do genero dentro do ficheiro de texto:

Nome

idade

morada

telefone

Nome

idade

morada

telefone

+/- isto mas com mais dados. Se for isto, então imagina que carregas esses dados assim -> Nome para caixa de texto txtNome, idade -> txtIdade, morada -> txtMorada, Telefone -> txtTelefone.

Agora imagina que editavas a morada de um desses perfies, então, juntavas todos esses dados (nome, morada, telefone, idade, etx) de todos os perfies numa variável ( do tipo string) e guardavas no ficheiro de texto.

Algo assim:

varStr =  txtNome & vbcrlf & txtIdade & vbcrlf, etc, etc

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu já não vejo isto à frente... E pra variar, isto só faz uma pesquisa sobre o ultimo dado inserido, ou seja, se tivermos o registo A, B, inserirmos o C, vamos a consulta, consultamos o B e ele mostra os dados do C... Resumindo.... Acho k vou deixar isto a meio... definitivamente não me dou com o VB

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque não colocas aqui o código que já tens. Era mais facil ajudar-te.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como pedis-te , cá vai:

Form Inserir:

Form load:

    Text1.Text = ""     '
    Text2.Text = ""     '
    Text3.Text = ""     ' LIMPA AS CAIXAS DE TEXTO
    Text4.Text = ""     '
    Text5.Text = ""     '
    Text6.Text = ""     '
    Text7.Text = ""     '
    Text8.Text = ""     '
    Text9.Text = ""     '
    Text10.Text = ""    '
    Text11.Text = ""    '
    Text12.Text = ""    '
    Text13.Text = ""    '
    
    Form2_Inserir.Caption = "Gestão de Contactos - Inserir Registo"

Botão Inserir:

'verifica se os campos obrigatorios tao preenchidosou nao
If ((Text1.Text = "") Or (Text2.Text = "") Or (Text4.Text = "") Or (Text6.Text = "") Or (Text7.Text = "") Or (Text10.Text = "")) Then
    MsgBox ("Verifique se os campos de 'preenchimento obrigatório' estão preenchidos.")
End If

'Verifica se o campo dos nº de tlf tao com letras ou com numeros
If Not IsNumeric(Text7.Text) Or Not IsNumeric(Text8.Text) Or Not IsNumeric(Text9.Text) Then
    MsgBox ("O campo 'Telefone/Telemóvel' só pode conter números.")
Else
If ((Text1.Text <> "") And (Text2.Text <> "") And (Text4.Text <> "") And (Text6.Text <> "") And (Text7.Text <> "") And (Text8.Text <> "") And (Text9.Text <> "") And (Text10.Text <> "")) Then
Open App.Path & "\contactos.gdc" For Append As #1
    Print #1, Text1.Text
    Print #1, Text2.Text
    Print #1, Text3.Text
    Print #1, Text4.Text
    Print #1, Text5.Text
    Print #1, Text6.Text
    Print #1, Text7.Text
    Print #1, Text8.Text
    Print #1, Text9.Text
    Print #1, Text10.Text
    Print #1, Text11.Text
    Print #1, Text12.Text
    Print #1, Text13.Text
Close #1
MsgBox ("Dados registados com sucesso!")

Text1.Enabled = False   '
Text2.Enabled = False   '
Text3.Enabled = False   '
Text4.Enabled = False   ' NAO DEIXA EDITAR AS CAIXAS DE TEXTO
Text5.Enabled = False   '
Text6.Enabled = False   '
Text7.Enabled = False   '
Text8.Enabled = False   '
Text9.Enabled = False   '
Text10.Enabled = False  '
Text11.Enabled = False  '
Text12.Enabled = False  '
Text13.Enabled = False  '

End If
End If

End Sub

=================================================================================

Form: Consultar:

Form Load:

Form3_Consultar.Caption = "Gestão de Contactos - Inserir Registo" 'Adiciona o titulo a janela
    
    Text1.Text = ""     '
    Text2.Text = ""     '
    Text3.Text = ""     ' LIMPA AS CAIXAS DE TEXTO
    Text4.Text = ""     '
    Text5.Text = ""     '
    Text6.Text = ""     '
    Text7.Text = ""     '
    Text8.Text = ""     '
    Text9.Text = ""     '
    Text10.Text = ""    '
    Text11.Text = ""    '
    Text12.Text = ""    '
    Text13.Text = ""    '
    List1.Clear
    Text1.Enabled = False   '
    Text2.Enabled = False   '
    Text3.Enabled = False   '
    Text4.Enabled = False   ' NAO DEIXA EDITAR AS CAIXAS DE TEXTO
    Text5.Enabled = False   '
    Text6.Enabled = False   '
    Text7.Enabled = False   '
    Text8.Enabled = False   '
    Text9.Enabled = False   '
    Text10.Enabled = False  '
    Text11.Enabled = False  '
    Text12.Enabled = False  '
    Text13.Enabled = False  '
    
    img_editar.Visible = False
    Label14.Visible = False
    Picture3.Visible = False
    Label17.Visible = False
    
    
    Dim x, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12 As String
    Open App.Path & "\contactos.gdc" For Input As #1
    Do While Not EOF(1) 'Lê o ficheiro até ao fim
        Input #1, x 'Guarda a linha actual na variável strNome
        Input #1, x1 'Guarda a linha actual na variável strNome
        Input #1, x2 'Guarda a linha actual na variável strNome
        Input #1, x3 'Guarda a linha actual na variável strNome
        Input #1, x4 'Guarda a linha actual na variável strNome
        Input #1, x5 'Guarda a linha actual na variável strNome
        Input #1, x6 'Guarda a linha actual na variável strNome
        Input #1, x7 'Guarda a linha actual na variável strNome
        Input #1, x8 'Guarda a linha actual na variável strNome
        Input #1, x9 'Guarda a linha actual na variável strNome
        Input #1, x10 'Guarda a linha actual na variável strNome
        Input #1, x11 'Guarda a linha actual na variável strNome
        Input #1, x12 'Guarda a linha actual na variável strNome
        List1.AddItem x 'Adiciona a linha actual à lista
    Loop
    Close #1

Botão Consultar

Dim x, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12 As String
    Open App.Path & "\contactos.gdc" For Input As #1
    Do While Not EOF(1) 'Lê o ficheiro até ao fim
        Input #1, x 'Guarda a linha actual na variável strNome
        Input #1, x1 'Guarda a linha actual na variável strNome
        Input #1, x2 'Guarda a linha actual na variável strNome
        Input #1, x3 'Guarda a linha actual na variável strNome
        Input #1, x4 'Guarda a linha actual na variável strNome
        Input #1, x5 'Guarda a linha actual na variável strNome
        Input #1, x6 'Guarda a linha actual na variável strNome
        Input #1, x7 'Guarda a linha actual na variável strNome
        Input #1, x8 'Guarda a linha actual na variável strNome
        Input #1, x9 'Guarda a linha actual na variável strNome
        Input #1, x10 'Guarda a linha actual na variável strNome
        Input #1, x11 'Guarda a linha actual na variável strNome
        Input #1, x12 'Guarda a linha actual na variável strNome
        
        Text1.Text = x
        Text2.Text = x1
        Text3.Text = x2
        Text4.Text = x3
        Text5.Text = x4
        Text6.Text = x5
        Text7.Text = x6
        Text8.Text = x7
        Text9.Text = x8
        Text10.Text = x9
        Text11.Text = x10
        Text12.Text = x11
        Text13.Text = x12
        
    Loop
    Close #1

Botão Editar:

    Text1.Enabled = True   '
    Text2.Enabled = True   '
    Text3.Enabled = True   '
    Text4.Enabled = True   ' DEIXA EDITAR AS CAIXAS DE TEXTO
    Text5.Enabled = True   '
    Text6.Enabled = True   '
    Text7.Enabled = True   '
    Text8.Enabled = True   '
    Text9.Enabled = True   '
    Text10.Enabled = True  '
    Text11.Enabled = True  '
    Text12.Enabled = True  '
    Text13.Enabled = True  '

Botão Actualizar (Regista as novas alterações)

É isto que não sei fazer

:down:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hhmmm

REpara neste código:

    
....
Do While Not EOF(1) 'Lê o ficheiro até ao fim
        Input #1, x 'Guarda a linha actual na variável strNome
        Input #1, x1 'Guarda a linha actual na variável strNome
        Input #1, x2 'Guarda a linha actual na variável strNome
        Input #1, x3 'Guarda a linha actual na variável strNome
        Input #1, x4 'Guarda a linha actual na variável strNome
        Input #1, x5 'Guarda a linha actual na variável strNome
        Input #1, x6 'Guarda a linha actual na variável strNome
        Input #1, x7 'Guarda a linha actual na variável strNome
        Input #1, x8 'Guarda a linha actual na variável strNome
        Input #1, x9 'Guarda a linha actual na variável strNome
        Input #1, x10 'Guarda a linha actual na variável strNome
        Input #1, x11 'Guarda a linha actual na variável strNome
        Input #1, x12 'Guarda a linha actual na variável strNome
        
        Text1.Text = x
        Text2.Text = x1
        Text3.Text = x2
        Text4.Text = x3
        Text5.Text = x4
        Text6.Text = x5
        Text7.Text = x6
        Text8.Text = x7
        Text9.Text = x8
        Text10.Text = x9
        Text11.Text = x10
        Text12.Text = x11
        Text13.Text = x12
        
    Loop
...
    

Caso tenhas mais que um perfil no ficheiro de texto, só vais ver o último perfil... Tens de criar uns arrays tipo isto:

...
dim i as integer
i = 0
    Do While Not EOF(1) 'Lê o ficheiro até ao fim
        Input #1, x(i) 'Guarda a linha actual na variável strNome
        Input #1, x1(i) 'Guarda a linha actual na variável strNome
        Input #1, x2(i) 'Guarda a linha actual na variável strNome
        Input #1, x3(i) 'Guarda a linha actual na variável strNome
        Input #1, x4(i) 'Guarda a linha actual na variável strNome
        Input #1, x5(i) 'Guarda a linha actual na variável strNome
        Input #1, x6(i) 'Guarda a linha actual na variável strNome
        Input #1, x7(i) 'Guarda a linha actual na variável strNome
        Input #1, x8(i) 'Guarda a linha actual na variável strNome
        Input #1, x9(i) 'Guarda a linha actual na variável strNome
        Input #1, x10(i) 'Guarda a linha actual na variável strNome
        Input #1, x11(i) 'Guarda a linha actual na variável strNome
        Input #1, x12(i) 'Guarda a linha actual na variável strNome
        
        Text1.Text = x(i)
        Text2.Text = x1(i)
        Text3.Text = x2(i)
        Text4.Text = x3(i)
        Text5.Text = x4(i)
        Text6.Text = x5(i)
        Text7.Text = x6(i)
        Text8.Text = x7(i)
        Text9.Text = x8(i)
        Text10.Text = x9(i)
        Text11.Text = x10(i)
        Text12.Text = x11(i)
        Text13.Text = x12(i)
        i = i + 1
    Loop
    ....

Não sei se estas a perceber a ideia.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já fiz, refiz, adicionei mais linhas, apaguei mas não consigo dar com isto.... Acho que vou é apagar o projecto  :down:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quantos perfies tens actualmente no ficheiro de texto, para eu te fazer um exemplo prático?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Neste momento tenho 2 exemplos no ficheiro. O ficheiro contem isto:

teste-1

teste-1

teste-1

teste-1

222222222

222222222

222222222

teste-1

Fim-teste-1

teste-2

teste-2

teste-2

teste-2

333333333

333333333

333333333

teste-2

fim-teste-2

Onde os espaços em branco, são campos que não sao obrigatório registo...

0

Partilhar esta mensagem


Link 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