你没有声明全局变量吧??你是否指的是声明的窗体类和其实例?如果是这样,查看工程文件,userloginForm是不是自动建立,是的话TuserloginForm.FormCreate(Sender: TObject);应该在你TCompanyForm.DBGrid1CellClick(Column: TColumn);之前执行。
所以你在这个地方访问是没赋值的

解决方案 »

  1.   

    首先一点,你的写法不太好,这个函数这样写比较简洁:
    procedure TCompanyForm.DBGrid1CellClick(Column: TColumn);
    begin
    companyid:=column.field.AsString;
    SeSkinButton1.Enabled:=True;
    end;
    其次:
    你跟踪一下这时companyid的值是否正确?
    第三:
    如果你的TUserLoginForm是动态生产的,也可以在Create语句以后直接赋值,如
     with TUserLoginForm.Create do
      begin
      passwordedit.text:=companyid;
      label3.caption:=companyid;
      if ShowModal = mrOK then 
        begin
         .....
        end
     end
    这样不用FormCreate事件也可以的
    第四:
    如果非要用FormCreate,原理上也应该没问题的,具体你跟踪一下再说吧