|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
natanbh1 Colaborador
Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Seg Out 08, 2018 10:55 am Assunto: FindDialog-Pesquisar baixo para cima RichEdit? [Resolvido] |
|
|
Bom dia,
Uso o código abaixo para pesquisar no RichEdit com FindDialog.
Evento OnFind do FindDialog:
Código: | procedure TForm7.FindDialog1Find(Sender: TObject);
var
FoundAt: LongInt;
StartPos, ToEnd: Integer;
mySearchTypes: TSearchTypes;
begin
With RichEdit1 do
Begin
mySearchTypes := [];
if frWholeWord in FindDialog1.Options then
mySearchTypes := mySearchTypes + [stWholeWord];
if frMatchCase in FindDialog1.Options then
mySearchTypes := mySearchTypes + [stMatchCase];
if SelLength <> 0 then
StartPos := SelStart + SelLength
else
StartPos := 0;
ToEnd := Length(Text) - StartPos;
FoundAt := FindText(FindDialog1.FindText, StartPos, ToEnd, mySearchTypes);
if FoundAt <> -1 then
begin
SetFocus;
SelStart := FoundAt;
SelLength := Length(FindDialog1.FindText);
end;
End;
end; |
Funciona, normalmente, pesquisando de cima para baixo mas no sentido inverso não funciona.
Desde já agradeço. _________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin
Editado pela última vez por natanbh1 em Ter Out 09, 2018 11:40 am, num total de 1 vez |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Out 08, 2018 8:42 pm Assunto: |
|
|
Boa noite,
Nunca fiz nenhum teste, mas talvez você consiga chegar nesse resultado se utilizar esse método FindText mas com a função ReverseString da unit StrUtils para obter o conteúdo invertido do RichEdit e do texto a ser pesquisado, além de adaptar o cálculo da posição inicial e final da pesquisa.
Espero que ajude
Editado pela última vez por imex em Ter Out 03, 2023 2:59 pm, num total de 1 vez |
|
Voltar ao Topo |
|
|
natanbh1 Colaborador
Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Ter Out 09, 2018 10:30 am Assunto: |
|
|
Bom dia,
Agradeço sua sugestão, depois irei testá-la. Mas consegui resolver de uma maneira simples.
Usando o componente ActionManager descobri Action Standard.
São ações "padrões" que são prontas para uso sem a necessidade de programar uma linha sequer.
No meu caso escolhi a ação TSearchFind:
- Duplo clique no ActionManager;
- Clique na seta ao lado do botão "New Action" e escolha "New Standard Action";
- Escolha a ação (No meu caso TSearchFind);
Há uma lista vasta de ações prontas para uso.
Muito interessante este recurso pela praticidade e nos por poupar um tempo enorme na programação.
Obrigado. _________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|