نمایش نتایج 1 تا 6 از 6

نام تاپیک: جستجو در درون متن

  1. #1

    جستجو در درون متن

    می خواستم در دلفی برنامه ای بنویسم تا به وسیله Find Dialog کلمه ای را در درون کنترل Memo جستجو کرده و همچنین به وسیله Replace Dialog کلمه ای را جستجو کرده و با کلمه دیگر آن را جایگزین کند.

  2. #2
    سلام.
    این برای finddialog:

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    FindDialog1: TFindDialog;
    procedure FindDialog1Find(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FindDialog1Close(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}
    var ix,posreturnx,i,posreturn:integer;
    procedure TForm1.FindDialog1Find(Sender: TObject);
    var
    J, SkipChars,i,posreturn: Integer;
    begin
    for I :=0 to Memo1.Lines.Count do
    begin
    PosReturn := Pos(FindDialog1.FindText,Memo1.Lines[I&#93 ;);
    if PosReturn <> posreturnx then {found!}
    begin
    Skipchars := 0;
    for J := 0 to I - 1 do
    Skipchars := Skipchars + Length(Memo1.Lines[J]);
    SkipChars := SkipChars + (I*2);

    SkipChars := SkipChars + PosReturn - 1;
    Memo1.SetFocus;
    Memo1.SelStart := SkipChars;
    Memo1.SelLength := Length(FindDialog1.FindText);
    Break;
    end;
    end;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    FindDialog1.Position := Point(memo1.Left +memo1.Width, memo1.Top);
    FindDialog1.Execute;

    end;

    procedure TForm1.FindDialog1Close(Sender: TObject);
    begin

    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin

    end;

    end.


    اینم واسه raplacedialog:

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    ReplaceDialog1: TReplaceDialog;
    procedure ReplaceDialog1Replace(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
    var
    SelPos: Integer;
    begin
    with TReplaceDialog(Sender) do
    begin
    { Perform a global case-sensitive search for FindText in Memo1 }
    SelPos := Pos(FindText, Memo1.Lines.Text);
    if SelPos > 0 then
    begin
    Memo1.SelStart := SelPos - 1;
    Memo1.SelLength := Length(FindText);
    { Replace selected text with ReplaceText }
    Memo1.SelText := ReplaceText;
    end
    else MessageDlg(Concat('Could not find "', FindText, '" in Memo1.'), mtError, [mbOk], 0);

    end;

    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    replaceDialog1.Position := Point(memo1.Left + memo1.Width, memo1.Top);
    replaceDialog1.Execute;

    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin

    end;

    end.

  3. #3
    کاربر دائمی آواتار SReza1
    تاریخ عضویت
    تیر 1382
    محل زندگی
    کنار تعدادی تراریوم و کاکتوس!
    پست
    702
    دوست عزیز یک دستور ساده بنام Ansipos وجود داره که میتونه position یکلمه را در رشته ای رو معین کنه!!مثلاI := Asnpos(MySearchStr,Memo1.Text) این I موقعیته اونو میگه!! بعد میتونی با selstartو Sellength اونو رنگی کنی! :wink:

  4. #4
    دستور
    ( pos(mystring,memo1.text
    که از دستورات پاسکال هست هم همین کار رو انجام می ده.

  5. #5

    FindDialog

    با سلام به دوستان
    از دوستان می خواستم که اگه براشون ممکنه کامل یاد بدن چطور میشه با کامپوننت FindDialog کار کرد.
    چطور میشه با اون متنهای داخل dbgrid را جستجو کرد

  6. #6
    کاربر جدید آواتار whitehat006
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    مشهد
    پست
    8

    نقل قول: جستجو در درون متن

    سلام اگه میشه سرچ دقیق ترو توضیح بدید به این شکل که من میخوام کلمه ای رو با کلمه ی دیگه عوض کنم به صورتی که Match Whole word only باشه. من از دستور زیر بدون Replace Dialog استفاده میکنم.
    begin
    SelPos := Pos('MyString', Memo1.Lines.Text);
    if SelPos > 0 then
    begin
    Memo1.SelStart := SelPos - 1;
    Memo1.SelLength := Length('MyString');
    Memo1.SelText := 'ReplaceString';
    end;
    end;
    لطفا اگه میشه توضیح بدید چیکار کنم مثالا می خوام وقتی کلمه #13 رو با کلمه ای به نام مهرداد تعویض کنم. دست به #3 نزنه و 1 رو در آخر نگه داره یا به قولی همون Match Whole word only باشه
    ممنون میشم بتونید جوابمو بدید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •