Número da Linha de um Memo depois de localizar uma palavra.
16/03/2007
0
Tenho um memo...
nele eu coloquei um resultado de uma pesquisa no sql server
irão ter varias linhas neste memo...
o q eu quero é:
Localizar a palavra ´objetivo´ dentro do memo e eu ler a linha que ele está pra poder colocar em um list view... (Somente a linha que tem o objetivo)...
Alguma forma???
Desde já agradeço.
Diegus
Posts
17/03/2007
Marco Salles
Desculpa , eu entendi errado... A palavra Objetivo faz parte de um contexto , e não é uma palavra isolada..
Eu não conheço nenhm método da VCL que retorne isso .. Nen mesmo nenhuma propriedade do FindDialog , a não ser fazer esta busca na mão e trazer o resultado ...
17/03/2007
Diegus
Desculpa , eu entendi errado... A palavra Objetivo faz parte de um contexto , e não é uma palavra isolada..
Eu não conheço nenhm método da VCL que retorne isso .. Nen mesmo nenhuma propriedade do FindDialog , a não ser fazer esta busca na mão e trazer o resultado ...[/quote:040d3de5af]
´Objetivo´ é uma das palavras dentro do texto....
17/03/2007
Micheus
- Troque seu componente TMemo por um TRichEdit;
- Defina a propriedade PlainText = False (caso julgue necessário mantê-lo o mais parecido com um TMemo);
- Após colocado o resultado dentro do RichEdit, para localizar, utilize algo como:
function FindValue(RichEdit :TRichEdit; StrToFind :string) :boolean; var FoundPos :Integer; begin FoundPos := RichEdit.FindText(StrToFind, 0, Length(RichEdit.Text), []); Result := FoundPos <> -1; if Result then begin // necessário para que possamos obter o posicionamento // na linha e coluna aonde o texto se encontra RichEdit.SelStart := FoundPos; // evita que seja mostrada qualquer seleção RichEdit.SelLength := 0; end; end; // utilizando... var StrLinha :string; begin ... if FindValue(RichEdit1, ´Objetivo´) then begin // se encontrou o texto, estaremos posicionados na linha aonde ele apareceu StrLinha := RichEdit1.Lines[RichEdit1.CaretPos.Y]; ... end; ... end;
Se for necessário utilizar uma busca contínua (n ocorrências até o término do texto), há necessidade de adaptação da função.
Espero ter ajudado.
18/03/2007
Marco Salles
P:S quando retornar vazio é porque não encontrou
19/03/2007
Diegus
Fiz um pouco diferente...
O meu objetivo era ler a linha em q a palavra ´Objetivo´ estivesse...
Fiz o seguinte:
//*****OBJETIVO if pos(´Objetivo´, adoq_Textotext.asString) <> 0 then begin ls_Var := Copy(adoq_Textotext.asString, pos(´Objetivo´, adoq_Textotext.asString), length(adoq_Textotext.asString) - Pos(´Objetivo´,adoq_Textotext.asString) + 1); adoq_PesquisacalcObjetivo.Value := trim(copy( ls_Var, 1, pos(chr(13),ls_Var)));
Valeu pela atenção!
19/03/2007
Diegus
Fiz um pouco diferente...
O meu objetivo era ler a linha em q a palavra ´Objetivo´ estivesse...
Fiz o seguinte:
//*****OBJETIVO if pos(´Objetivo´, adoq_Textotext.asString) <> 0 then begin ls_Var := Copy(adoq_Textotext.asString, pos(´Objetivo´, adoq_Textotext.asString), length(adoq_Textotext.asString) - Pos(´Objetivo´,adoq_Textotext.asString) + 1); adoq_PesquisacalcObjetivo.Value := trim(copy( ls_Var, 1, pos(chr(13),ls_Var)));
Valeu pela atenção!
20/03/2007
Marco Salles
Clique aqui para fazer login e interagir na Comunidade :)