3. 下面程序中form1上面有一个DBEdit1,其DataSource 为DataSource1,DataSource1 的DataSet为ADOQuery1,DBEdit1的DataField 为istatus。程序运行后
a..限制用户在DBEdit1中不能输入小于0,且提示用户‘请输入大于0的数‘,
b。用户在DBEdit1中输入大于100时,提示用户‘请输入小于100的数‘,
下面列举了四个事件,你认为哪两个事件最合适分别实现a,b,请在其中填入能实现要求的代码。unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, Mask, DBCtrls, ADODB;
type
  TForm1 = class(TForm)
    Button1: TButton;
    ADOQuery1: TADOQuery;
    ADOQuery1istatus: TIntegerField;
  Label1: TLabel;
    DBEdit1: TDBEdit;
    DataSource1: TDataSource;
    procedure DBEdit1Exit(Sender: TObject);
    procedure DBEdit1KeyPress(Sender: TObject; var Key: Char);
    procedure ADOQuery1istatusValidate(Sender: TField);
    procedure ADOQuery1istatusChange(Sender: TField);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.DBEdit1Exit(Sender: TObject);
begin
end;procedure TForm1.DBEdit1KeyPress(Sender: TObject; var Key: Char);
begin
end;procedure TForm1.ADOQuery1istatusValidate(Sender: TField);
begin
end;procedure TForm1.ADOQuery1istatusChange(Sender: TField);
begin
end;
end.

解决方案 »

  1.   

    可是在 DBEdit1KeyPress 事件里判断用户是否输入负号,如输入则提示。
    当编辑框失去焦点时,即 DBEdit1Exit 事件里判断数据是否大于100
      

  2.   

    it's easy.当然是onkeypress事件.
      

  3.   

    DBEdit1KeyPress
    if (key in ['_',//你可以在这加一些别的拦截信息]) or (StroInt(DBEdit1.Text)>100)
    showmeessage('请输如0到100之间的数');
      

  4.   

    DBEdit1KeyPressif not (key in [0..100]) then
    begin
      key:=#0;
      showmessage('请输如0到100之间的数');
    end;
      

  5.   

    DBEdit1KeyPressif not (key in ['0'..'100']) then
    begin
      key:=#0;
      showmessage('请输如0到100之间的数');
    end;
      

  6.   

    if not ((Key>='0') and (key <='9')) then
     begin
       key := #0;
     end;
     if(strtoint(Edit1.Text)>100)then
       showmessage('過了100');
    end;
      

  7.   

    DBEdit1KeyPressif not (key in ['0'..'100']) then
    begin
      key:=#0;
      showmessage('请输如0到100之间的数');
    end;----------大哥,有點專業精神好不好 ,自己先測了再發上來,別被笑話了。
      

  8.   

    //---限制数据输入只能为0..9和小数据点以及退格
    procedure TForm1.DBEdit1KeyPress(Sender: TObject; var Key: Char);
    begin
     if not (key in['0'..'9','.',,#8]) then
        begin
          key := #0;
          
        end;
    end;
    //---然后在作提交时进行判断
    //---若在0..100则提交,否则返回提示输入错误信息
      try
        if (strtoint(DBEdit1.Text) < 0) and (strtoint(DBEdit1.Text) > 100) then
          begin
            Key := #0;
            MessageBox(Handle,'输入数字只能在0..100之间!','请重新输入',MB_OK + MB_ICONINFORMATION);
          end;
        //--以下为执行提交数据库的代码  finally
        //---释放资源代码 
      end;
      

  9.   

    这么多人回答错误,看看各个事件的帮助吧,change事件肯定不好的,
    a要求放在DBEdit1KeyPress,楼上的有人给出代码了,
    b要求放在ADOQuery1istatusValidate,代码也很简单,不写了。
      

  10.   

    我觉得在DBEdit1exit事件中判断不是更好吗 ?
    用户书写完后才能判断。
    用DBEdit1KeyPress事件,万一人家用户是用鼠标点呢,有的用户就是习惯用鼠标点到某个dbedit,
    然后输入数据,然后再用鼠标点下 一个dbedit,这时候 DBEdit1KeyPress事件有屁用呀
      

  11.   

    a..限制用户在DBEdit1中不能输入小于0,且提示用户‘请输入大于0的数‘,
    b。用户在DBEdit1中输入大于100时,提示用户‘请输入小于100的数‘,
    注意两个要求不一样,a是根本就不能输入输入小于0的数,也就是在按键的时候就不能输错,不是等输了一个错的可以再验证告诉你,这个是错的;而b是你可以输入错误的,但是要离开的时候我验证不对就不行。
      

  12.   

    a. DBEdit1Exit
    b. ADOQuery1istatusValidate
      

  13.   

    ADOQuery1istatusValidate
    能否给出理由和原代码?
      

  14.   

    如下代码能够达到你的目的procedure TForm1.DBEdit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if (Key='-') then begin  //只有负数才能小于0,不允许输入'-'就能达到目的
        Key:=#0;
        ShowMessage('请输入大于0的数');
      end;
    end;procedure TForm1.DBEdit1Exit(Sender: TObject);
    begin
      if ADOQuery1istatus.Value>=100 then begin
        ShowMessage('请输入小于100的数');
        DBEdit1.SetFocus;
      end;
    end;