S sxwy Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-05 #1 现在有一个文本框,不想让用户随意更改数据,由于在正常的情况下,在文本框内单击鼠标右键,会出来一个菜单,里面有复制,粘帖等选项,现在如果想把这个菜单不出来,还想让用户按下DELETE键时,不会删除EDIT里的数据.有没有什么办法呢.?
现在有一个文本框,不想让用户随意更改数据,由于在正常的情况下,在文本框内单击鼠标右键,会出来一个菜单,里面有复制,粘帖等选项,现在如果想把这个菜单不出来,还想让用户按下DELETE键时,不会删除EDIT里的数据.有没有什么办法呢.?
R RedBeret Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-05 #2 edit.enable := false; 不行吗?
S sxwy Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-05 #3 呵呵,不行呀.因为用户要更改数据,我的意思就是想让用户在我的程序里更改数据,不能用复制和粘帖来更改数据.
S szmh Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-05 #4 form 中放一个弹出菜单popupmenu1,设置文本框memo1的popuomenu为popupmenu1,这样 popupmenu1就代替了文本框的菜单,如果popupmenu1没有设置菜单项,就没有菜单弹出了! //控制用户输入 procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key=vk_delete then key:=0; end;
form 中放一个弹出菜单popupmenu1,设置文本框memo1的popuomenu为popupmenu1,这样 popupmenu1就代替了文本框的菜单,如果popupmenu1没有设置菜单项,就没有菜单弹出了! //控制用户输入 procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key=vk_delete then key:=0; end;
S sxwy Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-05 #5 有道理,我试试看,但是 if Key=vk_delete then key:=0; 这句好像不行呀.因为当鼠标事件进入到过程的时候,文本框的内容已经删除了.我的意思是要求当用户按下DELETE键时,EDIT里的数据不被删除.还有没有其它办法.请指点.谢了.
有道理,我试试看,但是 if Key=vk_delete then key:=0; 这句好像不行呀.因为当鼠标事件进入到过程的时候,文本框的内容已经删除了.我的意思是要求当用户按下DELETE键时,EDIT里的数据不被删除.还有没有其它办法.请指点.谢了.
L liyinwei Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-05 #6 procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 46 then Key := 0; end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 46 then Key := 0; end;
S sxwy Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-07 #8 都无效呀.这些都是在用户删除了文本框里的数据之后才发生的.等到 begin if Key = 46 then Key := 0; end; 这个过程退出之后时,文本里的数据早就删除了.
L LUJIAYU110 Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-07 #10 设置控件的OnContextPopup事件代码如下(以TEDIT为例): procedure TForm1.Edit1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: boolean); begin Handled := true; end;
设置控件的OnContextPopup事件代码如下(以TEDIT为例): procedure TForm1.Edit1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: boolean); begin Handled := true; end;
L LUJIAYU110 Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-07 #11 "我的意思就是想让用户在我的程序里更改数据,不能用复制和粘帖来更改数据." 没明白,不让在EDIT里编辑?只能输入不能删除?
S sxwy Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-08 #12 to LUJIAYU110:是的.我的在程序里控制的是让用户一个一个字符的输入数据,但是如果用户一次性输入(或删除)多个文本的话,我的程序里就没有判断了.所以,我就想把DELETE的过程去掉. 还有,试了一下.设置控件的OnContextPopup事件代码如下(以TEDIT为例): procedure TForm1.Edit1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: boolean); begin Handled := true; end; 没有效果呀.
to LUJIAYU110:是的.我的在程序里控制的是让用户一个一个字符的输入数据,但是如果用户一次性输入(或删除)多个文本的话,我的程序里就没有判断了.所以,我就想把DELETE的过程去掉. 还有,试了一下.设置控件的OnContextPopup事件代码如下(以TEDIT为例): procedure TForm1.Edit1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: boolean); begin Handled := true; end; 没有效果呀.
任 任远 Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-08 #13 在keydown事件里检测一下按了哪些键,分别处理就可以了