请教一个TEDIT的输入问题(30分)

  • 主题发起人 主题发起人 vitamin99
  • 开始时间 开始时间
V

vitamin99

Unregistered / Unconfirmed
GUEST, unregistred user!
我想一个TEDIT输入框只能输入数字,但是又不要屏蔽Ctrl+C,Ctrl+V,Ctrl+X这些功能,我在OnKeyPress事件里写了:
if not ((Key in ['0'..'9']) or (key=#8))then
Key:=#0;
请问怎么写才能不屏蔽Ctrl+C,Ctrl+V,Ctrl+X这些功能
 
设置mask属性就行了~!
 
从以前的贴子中找的:-------------拷贝以下程序吧(注意在MEMO的ONKeyPress事件),注意:三个 '' 是不同的健值哦,只不过看不见而已 :)这方法最简单: procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char); begin if key in ['', '', ''] then key := #0; end; ---------------------------- kenwoo (2001-11-01 17:18:00) 怎么样才能把edit的ctrl+x,ctrl+c,ctrl+v屏蔽掉(即复制,剪切,粘贴功能屏蔽掉),以及鼠标右键屏蔽掉!请给原码! 间接点球 (2001-10-18 11:47:00) 在Form中加入一个PopUpMenu,添加n个选项,并把选项的ShortCut设成你要屏蔽的组合键,并把他们的Visible设成False,并把Edit的PopUpMenu属性指向它。整个过程一条语句都不用写,故没有源码。觉得好的话给分吧。 xiao_min (2001-10-19 16:00:00) unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Memo1: TMemo; procedure FormCreate(Sender: TObject); procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Edit1KeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } procedure mymessage(var msg:tmsg;var handled:boolean); end; var Form1: TForm1; implementation {$R *.DFM} procedure tform1.mymessage(var msg:tmsg;var handled:boolean); begin if msg.hwnd =edit1.handle then begin if msg.message =wm_rbuttonup then begin handled:=true; end; end; end; procedure TForm1.FormCreate(Sender: Tobject); begin application.OnMessage :=mymessage; end; procedure TForm1.Edit1KeyDown(Sender: Tobject; var Key: Word; Shift: TShiftState); begin if ((key=ord('x')) or (key=ord('X')) or ((key=ord('c')) or (key=ord('C')) or (key=ord('v')) or (key=ord('V')))) and (Shift=[ssCtrl]) then begin Edit1.Tag :=1; end; end; procedure TForm1.Edit1KeyPress(Sender: Tobject; var Key: Char); begin if edit1.tag=1 then begin key:=#0; edit1.tag:=0; end; end; end. Kenwoo (2001-11-01 17:18:00) 多人接受答案了。
 
标准的TEdit吗?
在窗体的OnCreate事件中写上一句
SetWindowLong(Edit1.Handle, GWL_STYLE,
GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);
 
后退
顶部