在写数据库程序的时候有N多个输入框,下拉选择框,提交信息的时候总要有个判断输入是否为空吧!总不能写N个判断吧!有什么好的方法来解决这个问题吗?

解决方案 »

  1.   

    if (edit1.text = '') or (edit2.text = '') or (edit3.text = '')  then
    begin
      edit;
      abort;
    end;
    或者写控件的循环 可以查看帮助
      

  2.   

    //可以利用Tag等属性来标志其是否可以为空或者是唯一,Hint属性~~
    //保存的时候遍历判断即可~~
    //参考如下代码~~procedure TForm1.ButtonSaveClick(Sender: TObject);
    var
      I: Integer;
    begin
      for I := 0 to ComponentCount - 1 do
        case Components[I].Tag of
          1: begin //不能为空
            if (Components[I] is TEdit) and
              (TEdit(Components[I]).Text = '') then begin
              ShowMessage(TEdit(Components[I]).Hint + '不能为空');
              Exit;
            end;
            if (Components[I] is TComboBox) and
              (TComboBox(Components[I]).Text = '') then begin
              ShowMessage(TComboBox(Components[I]).Hint + '不能为空');
              Exit;
            end;
          end;
        end;
    end;
      

  3.   

    你把他们的事件(OnChange之类),就是你对单个组件判断的那个事件,都指向同一个全局函数,这样只用一个就可以了。
    不过或许它们事件类型不同,你可以让它们发自定义消息,你的程序接受这个消息并根据消息参数知道是那个组件发的,然后就可以操作了。
      

  4.   

    使用findcompnent循环判断可寫個共用的過程作判断.怎么写呀?没有头绪!
      

  5.   

    用CASE写啊。。具体自己想想吧。
      

  6.   

    以edit为例将edit1的exit写为
    procedure TForm1.Edit5Exit(Sender: TObject);
    begin
      if Tedit(Sender).Text='' then  Tedit(Sender).Text:='不能为空';
    end;然后将所有的edit的exit事件指向这个事件然后你看看效果