我有一个parent,我需要检查parent上tag为某一范围的值的输入控件,有edit,有combox,或是别的第三方输入控件,这些控件不允许为空。
函数在下面
我现在用的是hint,因为到控件层只查到hint是STring型
但我要为每个需检查的控件的exit事件里写一个过程,使hint=控件的text
这样效率低也不方便,而且占用了控件的hint属性,请大家帮忙看一看,有没有更好的方法,
如ApI
已写函数如下
Function CheckNotNull(aParent:TWinControl):Boolean;
var
  I:Integer;
  ErINf:string;
begin
  Result:=False;  for i:=0 to aparent.ControlCount-1 do
    begin
      if aparent.Controls[i].Tag=999 then
        begin
          if aparent.Controls[i].Hint='' then
            begin
              ErINf:=aparent.Controls[i].Name+'属性值不能为空';
              messagedlg(erinf,mtinformation,[mbok],0);
              exit;
            end
        end;    end;  Result:=true;
end;

解决方案 »

  1.   

    Text属性一般输入型控件都有吧,判断Text试试
      

  2.   

    建议检查的代码改写如下
    uses typinfo;Function CheckNotNull(aParent:TWinControl):Boolean;
    var
      I:Integer;
      ErINf:string;
    begin
      Result:=False;  for i:=0 to aparent.ControlCount-1 do
        begin
          if aparent.Controls[i].Tag=999 then
            begin
             //如果此控件具有TEXT的属性则
             if   IsPublishedProp(Controls[i], 'text') then
                begin
                 if Controls[i].text='' then
                 begin
                   ErINf:=aparent.Controls[i].Name+'属性值不能为空';
                   messagedlg(erinf,mtinformation,[mbok],0);
                   exit;
                 end 
               end
            end;    end;  Result:=true;
    end;
      

  3.   

    我试着写一个:for I := 0 to Parent.ControlCount - 1 do begin
        if Parent.Controls[I].Tag <> 999 then Continue;
        if (Parent.Controls[I] is TEdit)and(TEdit(Parent.Controls[I]).Text='')then ShowErr(……);
        if (Parent.Controls[I] is TComboBox)and(……) then ShowErr(……);
    ……end;你试试吧
      

  4.   

    谢谢,已解决,ispublishedprop是对的
    但得到属性还要在typinfo中找另一个函数,谢谢