Jump to content
Fórum Script Brasil
  • 0

Como Usar O Finddialog


vms
 Share

Question

6 answers to this question

Recommended Posts

  • 0
Guest --Jonas --
ola pessoal

como faço uma pesquisa dentro de um dbmemo usando o finddialog?

(somente no dbmemo e não na tabela)

como seria o comando?

//Procura e substituição de string num campo dbmemo

Procedure TForm1.Button1Click (Sender: TObject);
Begin
FindReplace(Edit1.Text,Edit2.Text, DBMemo1);
end;

Procedure FindReplace (const Enc, subs: String; Var Texto: TDBMemo);
Var
i, Posicao: Integer;
Linha: string;
Begin
For i:= 0 to Texto.Lines.count - 1 do
begin
Linha := Texto. Lines[i];
Repeat
Posicao:=Pos(Enc,Linha);
If Posicao > 0 then
Begin
Delete(Linha,Posicao,Length(Enc));
Insert(Subs,Linha,Posicao);
Texto.Lines[i]:=Linha;
end;
until Posicao = 0;
end;
end;

Link to comment
Share on other sites

  • 0

estar dando erro nesse FindReplace

[Error]Unit3.pas(209): Undeclared identifier: 'FindReplace'

Procedure TForm1.Button1Click (Sender: TObject);

Begin

FindReplace(Edit1.Text,Edit2.Text, DBMemo1);

end;

Link to comment
Share on other sites

  • 0
Guest --Jonas --

Foi mal ... inverta a posição da procedure ....Procedure FindReplace deve vir em primeiro e Procedure TForm1.Button1Click deve vir depois, se não acontece erro.

Link to comment
Share on other sites

  • 0
Guest --Jonas --
Foi mal ... inverta a posição da procedure ....Procedure FindReplace deve vir em primeiro e Procedure TForm1.Button1Click deve vir depois, se não acontece erro.

outra coisa que esqueci voce deve definir no type:

type
  TForm1 = class(TForm)
    Button1: TButton;
    DBGrid1: TDBGrid;
    Query1: TQuery;
    DataSource1: TDataSource;
    DBMemo1: TDBMemo;
    procedure Button1Click(Sender: TObject);
    Procedure FindReplace (const Enc, subs: String; Var Texto: TDBMemo);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

Link to comment
Share on other sites

  • 0
como faço uma pesquisa dentro de um dbmemo usando o finddialog?
apenas salientando que a questão é fazer uma pesquisa, não substituição.

Jonas, acredito que deva ser exemplificado esta situação.

Há também um tópico de 2006 (Como Usar A Caixa De Pesquisar Para Pesquisar Em Um Memo?) sobre este assunto.

Link to comment
Share on other sites

  • 0
Guest --Jonas --

Exemplificando melhor com o FindDialog:

procedure TMainForm.FindDialog1Find(Sender: TObject);
var Buff, P, FT : PChar;
    BuffLen     : Word;
begin With Sender as TFindDialog do begin
      GetMem(FT, Length(FindText) + 1);
      StrPCopy(FT, FindText);
      BuffLen:= DBMemo1.GetTextLen + 1;
      GetMem(Buff,BuffLen);
      DBMemo1.GetTextBuf(Buff,BuffLen);
      P:= Buff + DBMemo1.SelStart + DBMemo1.SelLength;
      P:= StrPos(P, FT);
      if P = NIL then MessageBeep(0)
      else  begin
     DBMemo1.SelStart:= P - Buff;
     DBMemo1.SelLength:= Length(FindText);
      end;
   FreeMem(FT, Length(FindText) + 1);
   FreeMem(Buff,BuffLen);
end;
end;

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...