有若干个TEdit和TLabel,但是每一组的Tag相同,如:
(TLabel)姓名:(TEdit)___________________  (Tag=1)
(TLabel)性别:(TEdit)___________________  (Tag=2)
(TLabel)年龄:(TEdit)___________________  (Tag=3)
(TLabel)住址:(TEdit)___________________  (Tag=4)
  
下面有一TButton,点击之后,如果有哪一组的TEdit为空,则弹出提示框。
比如:
Tag为1的一组TEdit为空,则弹出"[姓名]不能为空!"
Tag为2的一组TEdit为空,则弹出"[性别]不能为空!"请问这样的语句怎么写?

解决方案 »

  1.   

    for i:= 0 to Self.ControlsCount -1 do
    begin
      if Self.Controls[i] is TLabel then
        if Self.Controls[i].tag = theTag then
          result := typInfo.GetPropValue(Self.Controls[i],'Caption');
    end;
      

  2.   

    typInfo是一个单元,
    上面语句未在delphi中写,可能字母有错
      

  3.   

    那你把信息存在edit的属性中(例如hint)不是更简单t := 所选edit.tag;
    for i := 0 to 容器控件.ControlCount - 1 do
    begin
      if (容器空间.Controls[i] is TLabel) and (TLabel(容器空间.Controls[i]).Tag = t) then
      begin
        你的代码;
        Exit;
      end;
    end;
      

  4.   

    //参考以下的代码。type
      TForm1 = class(TForm)
        lbl1: TLabel;
        lbl2: TLabel;
        btn1: TButton;
        edt1: TEdit;
        edt2: TEdit;
        btn2: TButton;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
        function GetCaptionByTag(edtTag:Integer):string;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}function TForm1.GetCaptionByTag(edtTag:Integer):string;
    //作者:charles 2005-04-19
    //功能:通过tag得到TLabel的Caption
    //说明:应该还有比这个更好的方法。
    var
      I:Integer;
    begin
      for I:= 0 to ComponentCount-1 do
        if (Components[i].Tag=edtTag) and (Components[i].ClassType=TLabel) then begin
          Result:=(Components[i] as TLabel).Caption;
          Break;
        end;
    end;procedure TForm1.btn1Click(Sender: TObject);
    begin
      ShowMessage(GetCaptionByTag(edt1.Tag));
    end;
      

  5.   

    TLabel(容器空间.Controls[i])的Caption怎么没有?