我们知道:
procedure Tform1.edtRecCountKeyPress(Sender: TObject; var Key: Char); begin   if ((key in ['0'..'9'] = false) and (word(key) <> VK_BACK)) then     key := #0; end; 
用来限制只能输入数字,但怎么输入不大于12的正数(是正数哦)呢?
送分了`~
只送给第一个答对的人。成功后立即结帖!
=====================================
syl79() 朋友回帖到:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  s : string;
begin
  try
    if key in ['0'..'9'] then
      s := edit1.Text + key;
    if strtoint (s) > 12 then
      key := #0;
  except on e : exception do
    showmessage ('error number');
  end;
end;===================
运行是趁工的,但是edit1无法编辑啊。。

解决方案 »

  1.   

    在Edit的OnChange事件里写控制代码应该可以吧
      

  2.   

    procedure Tform1.edtRecCountKeyPress(Sender: TObject; var Key: Char); 
    begin   
      if ((key in ['0'..'9'] = false) and (word(key) <> VK_BACK)) then     
        key := #0; 
    end; 
    这是你上面的
    下面在Edit的Onchang事件里写
    var
    begin
      if strtoint (Edit1.text) > 12 then
         Edot.text:='12'; //最大只能为12〕
    end;
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        procedure Edit1Change(Sender: TObject);
        procedure Edit1KeyPress(Sender: TObject; var Key: Char);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Edit1Change(Sender: TObject);
    begin
    if strtoint(edit1.Text)>12 then edit1.Text:='12';
    end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if not (key in ['0'..'9',#8,#13]) then key:=#0;
    end;end.
      

  4.   

    我试过但是onchange事件无法声明var Key: Char
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
      

  5.   

    谢谢楼上几位兄弟的支持!
     fsybaby(!报峰语)的最简洁,是我想要的效果。结帖!