السلام عليكم ورحمة الله وبركاته
الاخوة الاعزاء
كيف يمكنني البحث عن نص معين داخل الـ Memo ؟
تحياتي
السلام عليكم ورحمة الله وبركاته
الاخوة الاعزاء
كيف يمكنني البحث عن نص معين داخل الـ Memo ؟
تحياتي
مجرد محاولة بسيطة مني :)
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=1 to Memo1.Lines.Count do
begin
if pos('DR-A',Memo1.Lines.Strings)>0 then
begin
ShowMessage('Word DR-A is in line '+IntToStr(i+1));
end;
end;
end;في الكود السابق يتم البحث عن الكلمة DR-A و يرسل لك مسج بوجودها في أي سطر...
آسف انا لا اعرف طريقة اخرى... ننتظر الشباب ينورونا :)
اشكرك اخي الكريم DR-A على هذه المشاركة وانتظر رد الاخوة
السلام عليكم
الاخ أبو هاني
إذا لم يكن رد الأخ DR_A هو الذي تريده ( طبعآ بعد القيام بشي من التعديلات عليه ليصبح بصورة أفضل ) فأرجو توضيح ما تريده :)
والله الموفق!
هناك حتى الأحلام أصبحت ممنوعة ...
إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!
ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...
There, even in dreams u r wanted
To be a programmer, how a nice dream it was
Leaving ...
أعيدوا لإسمي لونه المفضل
اشكرك اخي tmaaa على اهتمامك .... ما ارغب به هو عند البحث عن كلمة معينة في الـ Memo فانه يتم تعليم أو تظليل تلك الكلمة كما هو في الورد
تحياتي
السلام عليكم
الأخ أبو هاني
جرب هذا الكود :
(أثناء البحث يفرق بين الحروف الكبيرة و الصغيرة case sensitive search)
add these components Memo1 , Find Dialog1 , Button1
procedure TForm1.FindDialog1Find(Sender: TObject);
var Buffer, Pos, tPointer : PChar;
BuffLength : Word;
begin
With Sender as TFindDialog do
begin
GetMem(tPointer, Length(FindText) + 1);
StrPCopy(tPointer, FindText);
BuffLength:= Memo1.GetTextLen + 1;
GetMem(Buffer,BuffLength);
Memo1.GetTextBuf(Buffer,BuffLength);
Pos:= Buffer + Memo1.SelStart + Memo1.SelLength;
Pos:= StrPos(Pos, tPointer);
if Pos = NIL then MessageBeep(0)
else
begin
Memo1.SelStart:= Pos - Buffer;
Memo1.SelLength:= Length(FindText);
end;
FreeMem(tPointer, Length(FindText) + 1);
FreeMem(Buffer,BuffLength);
Memo1.SetFocus;
end;
end;
//---------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
FindDialog1.Execute;
end;معلومة إضافية :
تستخدم EM_SETSEL message لتظليل الجزء المراد في edit control يمكن إستخدامها على memo أيضآ .
: MS SDK Help
EM_SETSEL
wParam = (WPARAM) (INT) nStart; // starting position
lParam = (LPARAM) (INT) nEnd; // ending position
مثال
SendMessage(Memo1.Handle,EM_SETSEL,2,6); Memo1.SetFocus;
هناك حتى الأحلام أصبحت ممنوعة ...
إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!
ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...
There, even in dreams u r wanted
To be a programmer, how a nice dream it was
Leaving ...
أعيدوا لإسمي لونه المفضل
اشكرك اخي tmaaa على هذا الكود ، ولكني لم احسن استخدامه
على العموم ما ارغبه هو : انه يوجد لدي Edit و Memo وارغب عند ضغط زر البحث ان يبحث عن الكلمة المذكورة في الـ Edit ويعلم عليها في الـ Memo
تحياتي
السلام عليكم
الأخ أبو هاني
القيام بتغييرات بسيطة للكود السابق يعيطيك النتيجة التي تريدها
جرب الكود الأتي و أعلمني هل هو نافع ام لا ؟:)
برنامجك يحوي Button ---> FindtextBt , Edit1 , Memo1
procedure TForm1.FindtextBtClick(Sender: TObject);
var
Buffer, Pos, tPointer : PChar;
BuffLength : Word;
begin
GetMem(tPointer, Length(Edit1.Text) + 1);
StrPCopy(tPointer, Edit1.Text );
BuffLength:= Memo1.GetTextLen + 1;
GetMem(Buffer,BuffLength);
Memo1.GetTextBuf(Buffer,BuffLength);
Pos:= Buffer + Memo1.SelStart + Memo1.SelLength;
Pos:= StrPos(Pos, tPointer);
if Pos = NIL then MessageBeep(0)
else
begin
Memo1.SelStart:= Pos - Buffer;
Memo1.SelLength:= Length(Edit1.Text);
end;
FreeMem(tPointer, Length( Edit1.Text ) + 1);
FreeMem(Buffer,BuffLength);
Memo1.SetFocus;
end;لاحظ أن عملية البحث تتم بعد المؤشر cursor .
عيوب الكود : يفرق بين الأحرف الكبيرة و الصغيرة :( .
أتمنى أن تكون هذا ما تريده . أي مشكلة في الكود أرجو إعلامي .
هناك حتى الأحلام أصبحت ممنوعة ...
إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!
ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...
There, even in dreams u r wanted
To be a programmer, how a nice dream it was
Leaving ...
أعيدوا لإسمي لونه المفضل
اشكرك اخي tmaaa هذا ما كنت اوده بالظبط ...
لك مني الف شكر وتحية وكل عام وانت بخير
أخي أبو هاني
كل عام وأنت بخير.
أنا كما ذكرت أن عملية البحث هي case-sensitive (تفرق بين الأحرف الكبيرة و الصغيرة ) . نسيت الدالة التي لاتفرق بين طبيعة الأحرف :( .
إن توصلت إليها أو أي أخ يعلم ماهي الدالة أرجو إعلامي .
هناك حتى الأحلام أصبحت ممنوعة ...
إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!
ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...
There, even in dreams u r wanted
To be a programmer, how a nice dream it was
Leaving ...
أعيدوا لإسمي لونه المفضل
هذا الموضوع مغلق.