ايران ويج

نسخه‌ی کامل: جستجو در Memo
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
به نام خدا
با سلام و عرض خسته نباشید

من یک برنامه کوچیک نوشتم با دلفی برای بانک مقاله.
برای قسمت جستجو در متن مشکل دارم!درس خون
می خوام مثل عمل find یا همون (ctrl+f) که در notepad هست کار کنه.
اما نمیدونم چطور میتونم این کار رو انجام بدم.
راستی بانک اطلاعاتیم هم اکسس هست.
ممنون میشم اگه راهنماییم کنین.
دعا
شما از table استفاده میکنی یا از query?
اول باید از قسمت Dialogs یک FindDialog1 را گذاشته و بعد در رویداد OnFind کد های زیر را بنویسید
البته متغیر FSelPos در قسمت private از نوع integer باید قبلا تعریف کرده باشید
موفق باشید شبح

کد:
private
{ Private declarations }

FSelPos: integer;
public
{ Public declarations }

end;

var
Form1 : TForm1;

implementation

{$R *.dfm}

procedure TForm1.FindDialog1Find(Sender : TObject);
var
S : string;
startpos : integer;
begin
with TFindDialog(Sender) do
begin
{If the stored position is 0 this cannot be a find next. }

if FSelPos = 0 then
Options := Options - [frFindNext];

{ Figure out where to start the search and get the corresponding
text from the memo. }

if frfindNext in Options then
begin
{ This is a find next, start after the end of the last found word. }

StartPos := FSelPos + Length(Findtext);
S := Copy(Memo1.Lines.Text, StartPos, MaxInt);
end
else
begin
{ This is a find first, start at the, well, start. }

S := Memo1.Lines.Text;
StartPos := 1;
end;
{ Perform a global case-sensitive search for FindText in S }

FSelPos := Pos(FindText, S);
if FSelPos > 0 then
begin
{ Found something, correct position for the location of the start
of search. }

FSelPos := FSelPos + StartPos - 1;
Memo1.SelStart := FSelPos - 1;
Memo1.SelLength := Length(FindText);
Memo1.SetFocus;
end
else
begin
{ No joy, show a message. }

if frfindNext in Options then
S := Concat('There are no further occurences of "', FindText,
'" in Memo1.')
else
S := Concat('Could not find "', FindText, '" in Memo1.');
MessageDlg(S, mtError, [mbOK], 0);
end;
end;
end;

// Show the FindDialog
// Den FindDialog anzeigen

procedure TForm1.Button1Click(Sender : TObject);
begin
FSelPos := 0;
FindDialog1.Execute;
end;