View Full Version : غیر فعال کردن کپی در richedit
nassim_20
سه شنبه 04 تیر 1387, 12:03 عصر
من می خواهم که کاربر نتونه از محتویان متن من در richedit اطلاعات رو برداشت کنه و کلا copy cut رو ازش بگیرم
nassim_20
سه شنبه 04 تیر 1387, 12:38 عصر
ای ول خودم کدش رو پیدا کردم میذارم تا بقیه هم استفاده کنند:
procedure TfMain.Memo2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if ((Key = ord('V')) and (ssCtrl in Shift)) then begin
if Clipboard.HasFormat(CF_TEXT) then ClipBoard.Clear;
key := 0;
end;
if ((Key = ord('C')) and (ssCtrl in Shift)) then begin
if Clipboard.HasFormat(CF_TEXT) then ClipBoard.Clear;
key := 0;
end;
end;
sensual_boy
سه شنبه 04 تیر 1387, 13:17 عصر
سلام
موقع اجرا خطا میگیره
nouri2015
سه شنبه 04 تیر 1387, 13:23 عصر
این دستورClipBoard.Clear رو هم می تونی در رویداد کی آپ بنویسی و popup menu این object رو یک popup menu خالی قرار بدی، همین کار رو انجام می ده.clipbrd رو هم باید use کنی.
nouri2015
سه شنبه 04 تیر 1387, 13:27 عصر
ای ول خودم کدش رو پیدا کردم میذارم تا بقیه هم استفاده کنند:
procedure TfMain.Memo2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if ((Key = ord('V')) and (ssCtrl in Shift)) then begin
if Clipboard.HasFormat(CF_TEXT) then ClipBoard.Clear;
key := 0;
end;
if ((Key = ord('C')) and (ssCtrl in Shift)) then begin
if Clipboard.HasFormat(CF_TEXT) then ClipBoard.Clear;
key := 0;
end;
end;
اگر ctrl+insert یا ctrl+X یا shift+Delرو کاربر بزنه چی؟
nassim_20
چهارشنبه 05 تیر 1387, 10:39 صبح
دوستان کدی که گفته بودم یه باگ داره و اونا اینکه اگه کاربر دو کلید ctrl+c و یا هر کدام از کلیدهای ترکیبی دیگر را با اندکی تاخیر فشار دهد عملیات مورد نظر (در اینجا کپی) انجام میشود ولی کد عمل نمی کند و محتویات کلیپ بورد رو خالی نمیکنه برای همین از کد خود کلیدهای ترکیبی استفاه کردم
کدهای کلیدهای ترکیبی اینها هستند:
ctrl+c = 3
ctrl+x=24
ctrl+v=22
procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key = char (3)) or (Key = char (24)) or (Key = char (22)) then
if Clipboard.HasFormat(CF_TEXT) then ClipBoard.Clear;
end;
حالا به گفته دوست نکته سنجمون
اگر ctrl+insert یا ctrl+X یا shift+Delرو کاربر بزنه چی؟
در رویداد کی آپ این کدها رو می نویسیم که عملکرد این کد اینه که اگر کاربر هر کدام از کلیدهای
insert,ctrl,del و shift را فشار داد کلیپ بورد خالی میشه (که البته چون ریچ ادیت من فقط خواندنی است و کاربر قرار نیست اطلاعات در آن درج کند مناسب است)
procedure TForm1.RichEdit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = ord (45)) or (Key = ord (46)) or (Key = ord (16)) or (Key = ord (17)) then
if Clipboard.HasFormat(CF_TEXT) then ClipBoard.Clear;
end;
البته با استفاده از کد دومی نیازی به استفاده از کد اولی نیست
و یه مشکل اینکه با این کار اگه کاربر بی غرض یکی از کلیدها رو هم فشار دهد باز محتویات کلیپبوردش خالی میشه
دوستان راه حل بهتری سراغ ندارند
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.