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
Tendran algun codigo en delphi que me haga eso?
Gracias por su atencion!!!!
Buscar una palabra en un memo y seleccionarla...
Comenzado por
jorgeb77
, jul 13 2010 03:30
2 respuestas en este tema
#1
Escrito 13 julio 2010 - 03:30
#2
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
Puedes ver la solución en este Enlace a ClubDelphi
Salud OS
#3
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
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Edit1: TEdit; Button1: TButton; Button2: TButton; CheckBox1: TCheckBox; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private public end; var Form1: TForm1; x: Integer; find: Boolean = False; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i: Integer; a: string; begin Memo1.Lines.Add(''); Memo1.Lines.Text := ' ' + Memo1.Lines.Text; for i := 0 to Length(Memo1.Lines.Text) - Length(edit1.Text) do begin a := Copy(Memo1.Lines.Text, i, Length(edit1.Text)); if CheckBox1.Checked = True then begin if a = edit1.Text then begin find := True; x := 2; Memo1.Lines.Text := Copy(Memo1.Lines.Text, 2, Length(Memo1.Lines.Text) - 1); Memo1.SetFocus; Memo1.SelStart := i - 2; Memo1.SelLength := Length(edit1.Text); break; end; end else begin if lowercase(a) = lowercase(edit1.Text) then begin Memo1.Lines.Text := Copy(Memo1.Lines.Text, 2, Length(Memo1.Lines.Text) - 1); find := True; x := 2; Memo1.SetFocus; Memo1.SelStart := i - 2; Memo1.SelLength := Length(edit1.Text); break; end; end; end; if find = False then ShowMessage('Texo no encontrado') else find := False; end; procedure TForm1.Button2Click(Sender: TObject); var i: Integer; a: string; d: Integer; begin d := 0; for i := 0 to Length(Memo1.Lines.Text) - Length(edit1.Text) do begin a := Copy(Memo1.Lines.Text, i, Length(edit1.Text)); if CheckBox1.Checked = True then begin if a = edit1.Text then begin d := d + 1; if d = x then begin find := True; x := x + 1; Memo1.Lines.Text := Copy(Memo1.Lines.Text, 2, Length(Memo1.Lines.Text) - 1); Memo1.SetFocus; Memo1.SelStart := i - 1; Memo1.SelLength := Length(edit1.Text); break; Memo1.Lines.Text := Copy(Memo1.Lines.Text, 2, Length(Memo1.Lines.Text) - 1); end; end; end else begin if lowercase(a) = lowercase(edit1.Text) then begin d := d + 1; if d = x then begin find := True; x := x + 1; Memo1.Lines.Text := Copy(Memo1.Lines.Text, 2, Length(Memo1.Lines.Text) - 1); Memo1.SetFocus; Memo1.SelStart := i - 1; Memo1.SelLength := Length(edit1.Text); break; Memo1.Lines.Text := Copy(Memo1.Lines.Text, 2, Length(Memo1.Lines.Text) - 1); end; end; end; end; if find = False then ShowMessage('Texto no encontrado') else find := False; end;