Fórum Localizar Memo #357944
02/05/2008
0
So q o meu código n ta 100¬, nem todas as funções do finddialog estão funcionando..
Eu queria fazer uma busca por palavras como se tivesse utilizando o finddialog...
Ex.: Eu digitei a palavra Teste em um Edit o codigo procuraria a palavra teste dentro do memo e selecionaria ela.
E eu tb estou tendo dificuldade em fazer um código pra subistituir em um memo a primeira palavra depois do cursor.
Se alguem poder me ajudar com uma dessa duas coisas eu agradeço Muito muito muito....[/b:d65b7d4f67]
Mortify
Curtir tópico
+ 0Posts
02/05/2008
Dbergkamps10
Veja aqui: http://forum.devmedia.com.br/viewtopic.php?t=79829&highlight=memo
PS.: Antes de postar um novo tópico, use o botão pesquisar. Muitas dúvidas estão resolvidas lá.
Att
Dalton
Gostei + 0
03/05/2008
Mortify
Eu já havia visto este post e tentando edita-lo para ele ficar do jeito q eu kero mais n obtive sucesso
O q eu quero é q ele busque a palvra que esta no Edit somente uma vez
Se ele encontrar ele Seleciona o texto no memo.
no exemplo acima ele exibe uma mensagem perguntando se o cara quer continuar a busca. Eu queria q ele so buscasse a proxima palavra se o cara clicasse novamente no botão.[/b:b90a69c18a]
[color=red:b90a69c18a][size=18:b90a69c18a]Aguardo resposta
Se alguem souber como fazer!!![/size:b90a69c18a][/color:b90a69c18a]
Gostei + 0
03/05/2008
Marco Salles
procedure TForm1.Button1Click(Sender: TObject); var posicao,i,coluna,linha:integer; begin posicao:=0; Linha:=memo1.Lines.Count; for i:=0 To Linha-1 do begin memo1.Lines.Strings[i]:=Trim(memo1.Lines.Strings[i]); Coluna:=Pos(edit1.Text,memo1.Lines.Strings[i]); While Coluna > 0 DO begin posicao:=posicao+coluna-1; memo1.SetFocus; memo1.SelStart:=posicao; memo1.SelLength:=length(edit1.Text); abort; end; posicao:=posicao+length(memo1.Lines.Strings[i])+2; end; end;
Gostei + 0
04/05/2008
Marco Salles
procedure TForm1.Button1Click(Sender: TObject); var lista:TstringList; posicao:integer; begin try lista:=TstringList.Create; lista.AddStrings(memo1.Lines); posicao:=pos(edit1.Text,lista.Text); if posicao > 0 Then begin Memo2.Lines.Add(inttostr(posicao)); memo1.SetFocus; memo1.SelStart:=posicao-1; memo1.SelLength:=length(edit1.Text); end else showmessage(´Aviso : Palavra ou Texto Não Localizado´) finally lista.Free; end; end;
P:S .. ambos os códigos tanto o último quanto o anterior são CaseSensitivéis
Gostei + 0
04/05/2008
Mortify
Nesses 2 casos ele so faz a busca uma única vez
Eu preciso que ao clicar no botão na segunda vez ele selecione a segunda palavra do memo
[/b:9e6da8dbf2]
Por exemplo:
[b:9e6da8dbf2]Na primeira vez q eu clicasse no botão ele selecionaria a palvara Teste q tem o número 1 na frente, na segunda vez a palavra Teste2 e na terceira Teste3 e assim sucessivamente até q ele n encontre mais nehuma palavra Teste no texto (nesse caso ele exibiria a mensagem q não foi possivel encontra mais nenhuma palavra).
Obirgado por tentar ^^[/b:9e6da8dbf2]
Gostei + 0
04/05/2008
Marco Salles
voce disse claramente :
[b:7a6415d38d]citação de Mortify[/b:7a6415d38d]
Gostei + 0
04/05/2008
Mortify
Me espressei mal da primeira vez
Desculpa ai vei
O q eu queria ter dito era q eu queria q ele buscasse o texto somente uma vez para cada clique
É q no seu outro código ele fazia as buscas seguidamente..
Te AMUUU
Já tem até seus creditos no meu programa na parte de agradecimentos (colokei o link do seu perfil daki).
Desculpa ai por ter feito vc perder seu tempo
[color=red:09c5382018][b:09c5382018]NUNCA MAIS POSTO NADA COM SONO ^^[/b:09c5382018][/color:09c5382018]
Gostei + 0
04/05/2008
Marco Salles
[b:a37ba21edc]citação de Mortify [/b:a37ba21edc]
bem eu acho que o grau de dificuldade é fazer o primeiro codigo é bem maior que o segundo.. pois usa uma propriedade SelLength pouco difundida ... Para Continuar a pesquisa ao clicar no Botão é so fazer uma
pequena modificação no codigo
[b:a37ba21edc]A variavel posicao não pode ser local e usar PosEx ao Inves de Pos[/b:a37ba21edc]
var posicao:integer;
procedure TForm1.Button1Click(Sender: TObject); var lista:TstringList; begin try lista:=TstringList.Create; lista.AddStrings(memo1.Lines); posicao:=PosEx(edit1.Text,lista.Text,posicao+1); if posicao > 0 then begin memo1.SetFocus; memo1.SelStart:=posicao-1; memo1.SelLength:=length(edit1.Text); end; finally lista.Free; end; end;
procedure TForm1.Edit1Change(Sender: TObject); begin posicao:=0; end;
Gostei + 0
04/05/2008
Marco Salles
Tudo bem ... Espero que o Ultimo post te atenda ... Mas voce pode tb fazer a memsa coisa nun único clique do Botão . e o Sistema perguntar se que continuar a Busca... Emfim , são muitas as possibilidades
espero ter ajudado...
Gostei + 0
05/05/2008
Mortify
Brigadão vei ^^
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)