ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

FindDialog-Pesquisar baixo para cima RichEdit? [Resolvido]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Seg Out 08, 2018 10:55 am    Assunto: FindDialog-Pesquisar baixo para cima RichEdit? [Resolvido] Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Seg Out 08, 2018 8:42 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Ter Out 09, 2018 10:30 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB