procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key=190) or (key=110) then showmessage('.'); end;
在KeyPress(Sender: TObject; var Key: Char)写就可能了 if((Key<'0')and(Key>'9'))and(Key<>'.')then Key:=#0;
首先问题没有描述清楚直接用Sample里面那个SpinEdit不就OK?
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if((Key<'0')or(Key>'9'))and(Key<>'.')then Key:=#0; end;除了edit之外的控件在KeyPress(Sender: TObject; var Key: Char)中写成这样 procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if((Key>='0')and(Key<='9'))or(Key='.')then Edit1.text:=edit1.text+Key end;
To: 补充一下,请问(.)的键盘码是什么呢?我想限定在Edit框中只能输入数字和(.)。 ---------------------------------------------------------------------------Re: procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9','.',Chr(VK_RETURN),Chr(VK_BACK)]) then Key := #0; end;
你想做计算器吧?^_^ procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if pos('.',Edit1.Text)>0 then if key = '.' then key := #0; //只允许存在一个. if not (key in ['0'..'9','.',#8,#46]) then key := #0; end;
Shift: TShiftState);
begin
if (key=190) or (key=110) then showmessage('.');
end;
if((Key<'0')and(Key>'9'))and(Key<>'.')then
Key:=#0;
begin
if((Key<'0')or(Key>'9'))and(Key<>'.')then
Key:=#0;
end;除了edit之外的控件在KeyPress(Sender: TObject; var Key: Char)中写成这样
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if((Key>='0')and(Key<='9'))or(Key='.')then
Edit1.text:=edit1.text+Key
end;
---------------------------------------------------------------------------Re:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9','.',Chr(VK_RETURN),Chr(VK_BACK)]) then
Key := #0;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if pos('.',Edit1.Text)>0 then if key = '.' then key := #0; //只允许存在一个.
if not (key in ['0'..'9','.',#8,#46]) then key := #0;
end;
其实我的问题大致就是要实现像windows下的计算器的按钮输入功能,只不过不同的是要在不同的edit中去输入罢了。谢谢
SetWindowLong(Edit1.Handle,GWL_STYLE,GetWindowLong(Edit1.Handle,GWL_STYLE) or es_Right);
有三个输入框Edit1,Edit2,Edit3和11个SpeedButton(分别标以9876543210.),当按动按钮时可在任一个有输入焦点的Edit中输入数字和小数点,功能类似计算器中的输入。谢谢了。
var
edit:Tedit; if Edit.Focused then
begin
Edit.Text := Edit.Text+'数字';
end;