我在SPEEDBUTTON下想打开窗口代码如下:
procedure Tw_main.sb_jksClick(Sender: TObject);
var
 w_jkhand:Tw_jkhand;
begin   if not assigned(w_jkhand) then
        w_jkhand:=Tw_jkhand.Create(application);
        w_jkhand.Show;end;
运行是没问题,但出现这样的warning提示:Variable 'w_jkhand'might not have been initialized。
单击该speedbutton就不能创建窗口。这到底要怎么解决,请求各大侠赐教。谢!

解决方案 »

  1.   

    你把定义提到窗体定义位置
    type
       Tw_main=class(Tform);
       private
         w_jkhand:Tw_jkhand;
       end
       ...
    procedure Tw_main.sb_jksClick(Sender: TObject);
    begin   if not assigned(w_jkhand) then
            w_jkhand:=Tw_jkhand.Create(application);
            w_jkhand.Show;end;
      

  2.   

    //procedure Tw_main.sb_jksClick(Sender: TObject);
    var
     w_jkhand:Tw_jkhand;
    begin
    --------------------
     w_jkhand 在这里定义成了局部变量,它永远存在。系统不会为它初始化指针为nil.所以 if not assigned(w_jkhand) 这一句永远为false所以应该把这个w_jkhand改成全局变量就行了
      

  3.   

    所以应该改为:
    一种方法是定义到:
    type
       Tw_main=class(Tform);
       private
         w_jkhand:Tw_jkhand;
       end还有一种方法是:implementation
        var 
      w_jkhand:Tw_jkhand;