Ir al contenido


Foto

Buscar una palabra en un memo y seleccionarla...


  • Por favor identifícate para responder
2 respuestas en este tema

#1 jorgeb77

jorgeb77

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 13 julio 2010 - 03:30

Saludos Amigo de Delphi Access,

Quiero saber como busco una palabra en un memo??

Por ejemplo:

En un formulario tengo un Edit y un memo, en el edit escribo la palabra que quiero buscar, si la palabra se encuentra quiero que esa palabra encontrada aparezca seleccionada. si existe mas de una palabra en el memo me gustaria que cada palabra encontrada aparezca seleccionada.

No quiero realizar esto usando el componente FindDialog  :undecided:

Tendran algun codigo en delphi que me haga eso?

Gracias por su atencion!!!!

  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 13 julio 2010 - 03:42

Solo he visto que eso se puede hacer en un RichEdit que al final te puede servir para lo mismo.

Puedes ver la solución en este Enlace a ClubDelphi

Salud OS
  • 0

#3 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 13 julio 2010 - 05:08

Este ejemplo usa un checkbox para las mayusculas, un boton para la primera coincidencia y otro para las siguientes.



delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Memo1: TMemo;
  12.     Edit1: TEdit;
  13.     Button1: TButton;
  14.     Button2: TButton;
  15.     CheckBox1: TCheckBox;
  16.     procedure Button1Click(Sender: TObject);
  17.     procedure Button2Click(Sender: TObject);
  18.     procedure Button3Click(Sender: TObject);
  19.   private
  20.    
  21.   public
  22.    
  23.   end;
  24.  
  25. var
  26.   Form1: TForm1;
  27.   x: Integer;
  28.   find: Boolean = False;
  29.  
  30. implementation
  31.  
  32. {$R *.dfm}
  33.  
  34.  
  35.  
  36. procedure TForm1.Button1Click(Sender: TObject);
  37. var
  38.   i: Integer;
  39.   a: string;
  40. begin
  41.   Memo1.Lines.Add('');
  42.   Memo1.Lines.Text := ' ' + Memo1.Lines.Text;
  43.   for i := 0 to Length(Memo1.Lines.Text) - Length(edit1.Text) do
  44.   begin
  45.     a := Copy(Memo1.Lines.Text, i, Length(edit1.Text));
  46.     if CheckBox1.Checked = True then
  47.     begin
  48.       if a = edit1.Text then
  49.       begin
  50.         find := True;
  51.         x    := 2;
  52.         Memo1.Lines.Text := Copy(Memo1.Lines.Text, 2, Length(Memo1.Lines.Text) - 1);
  53.         Memo1.SetFocus;
  54.         Memo1.SelStart  := i - 2;
  55.         Memo1.SelLength := Length(edit1.Text);
  56.         break;
  57.       end;
  58.     end
  59.     else
  60.     begin
  61.       if lowercase(a) = lowercase(edit1.Text) then
  62.       begin
  63.         Memo1.Lines.Text := Copy(Memo1.Lines.Text, 2, Length(Memo1.Lines.Text) - 1);
  64.         find := True;
  65.         x    := 2;
  66.         Memo1.SetFocus;
  67.         Memo1.SelStart  := i - 2;
  68.         Memo1.SelLength := Length(edit1.Text);
  69.         break;
  70.       end;
  71.     end;
  72.   end;
  73.   if find = False then ShowMessage('Texo no encontrado')
  74.   else
  75.     find := False;
  76. end;
  77.  
  78.  
  79.  
  80. procedure TForm1.Button2Click(Sender: TObject);
  81. var
  82.   i: Integer;
  83.   a: string;
  84.   d: Integer;
  85. begin
  86.   d := 0;
  87.   for i := 0 to Length(Memo1.Lines.Text) - Length(edit1.Text) do
  88.   begin
  89.     a := Copy(Memo1.Lines.Text, i, Length(edit1.Text));
  90.     if CheckBox1.Checked = True then
  91.     begin
  92.       if a = edit1.Text then
  93.       begin
  94.         d := d + 1;
  95.         if d = x then
  96.         begin
  97.           find := True;
  98.           x    := x + 1;
  99.           Memo1.Lines.Text := Copy(Memo1.Lines.Text, 2, Length(Memo1.Lines.Text) - 1);
  100.           Memo1.SetFocus;
  101.           Memo1.SelStart  := i - 1;
  102.           Memo1.SelLength := Length(edit1.Text);
  103.           break;
  104.           Memo1.Lines.Text := Copy(Memo1.Lines.Text, 2, Length(Memo1.Lines.Text) - 1);
  105.         end;
  106.       end;
  107.     end
  108.     else
  109.     begin
  110.       if lowercase(a) = lowercase(edit1.Text) then
  111.       begin
  112.         d := d + 1;
  113.         if d = x then
  114.         begin
  115.           find := True;
  116.           x    := x + 1;
  117.           Memo1.Lines.Text := Copy(Memo1.Lines.Text, 2, Length(Memo1.Lines.Text) - 1);
  118.           Memo1.SetFocus;
  119.           Memo1.SelStart  := i - 1;
  120.           Memo1.SelLength := Length(edit1.Text);
  121.           break;
  122.           Memo1.Lines.Text := Copy(Memo1.Lines.Text, 2, Length(Memo1.Lines.Text) - 1);
  123.         end;
  124.       end;
  125.     end;
  126.   end;
  127.   if find = False then ShowMessage('Texto no encontrado')
  128.   else
  129.     find := False;
  130. end;


  • 0




IP.Board spam blocked by CleanTalk.