ورود

View Full Version : مبتدی: راهنمایی خواص richedit در دلفی



ganikas
دوشنبه 01 خرداد 1396, 22:45 عصر
سلام خدمت اساتید
میخوام یه برنامه مثل ++notepad بنویسم اما چند جاش گیر کردم حسابی

اولی اینکه میخوام قسمتی از متن رنگی شه اونم هوشمند یعنی وقتی تگ باز میشه و تازمانی که بسته میشه رنگش متفاوت باشه مثلا <html>

دومی هم میخوام وقتی اول تگ رو مینویسم پیشنهاد بده حالا مهم اون پیشنهاده نیست مهم موقعیت پاپ اپ منو هس که میخوام با دو کلید کنترل و اسپیس ظاهر بشه در همون موقعیت نوشتن

یعنی سوالم دوتاس اول اینکه چجوری با دو کلید کنترل و اسپیس ظاهر بشه
دوم موقعیتش در جایی که داری مینویسی


دوستان خیلی خیلی سرچ کردم دو یا سه هفتس اگه راهنمایی کنین ممنون میشم

Mahmood_M
سه شنبه 02 خرداد 1396, 12:59 عصر
برای همچین برنامه ای بهتره از مجموعه SynEdit استفاده کنید، هم Editor مناسبی داره و هم Syntax Highlighter برای زبانهای مختلف
کامپوننتش Open Source هستش، با کمی جستجو لینک دانلودش رو پیدا می کنید
توی رویداد OnKeyDown ، با دستور Perform می تونید مختصات اشاره گر رو بگیرید و با دستور Popup هم می تونید PopupMenu رو نمایش بدید، مثال :


procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
P : TPoint;
Msg : TMsg;
begin
if (Key = VK_SPACE) and (Shift = [ssCtrl]) then
begin
PeekMessage(Msg, 0, WM_CHAR, WM_CHAR, PM_REMOVE);

RichEdit1.Perform(EM_POSFROMCHAR, WPARAM(@P), RichEdit1.SelStart);
P := RichEdit1.ClientToScreen(P);

PopupMenu1.Popup(P.X, P.Y + 15);
end;
end;

دستور ClientToScreen مختصات داخلی RichEdit رو به کل صفحه Screen تعمیم میده
دستور PeekMessage برای حذف صدای "دینگ" ای هستش که بعد از زدن کلید ها پخش میشه
مقدار Y رو هم به اضافه 15 کردم که منو زیر خط فعلی باز بشه

ترکیب کلیدهای Enter و Space ترکیب درستی نیست، با زدن کلید Enter اشاره گر به خط پایین میره !
توی مثال بالا از کلیدهای Ctrl + Space استفاده شده

ganikas
چهارشنبه 03 خرداد 1396, 09:08 صبح
اقا محمد ممنون ازت خیلی توضیحاتت عالی بود زنده باشی کارمو راه انداختی ....فقط واسه سوال اولم راهی نداری؟