很奇怪,在Button1Click里創建DX,在Button2Click里顯示就會出錯,這時候Surface是nil。但是如果把Button1Click的代碼放在FormCreate或者FormShow你就可以顯示,Surface分配成功。是什么原因?有沒有在Button1里創建成功的辦法?謝謝!procedure TForm1.Button1Click(Sender: TObject);
begin
 DX:=TDXDraw.Create(self);
 DX.Parent:=Self;
 DX.Width:=200;DX.Height:=200;
 DX.Visible:=True;
 IL.DXDraw:=DX;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
 DX.Surface.Fill(0);
 IL.Items[0].Draw(DX.surface,0,0,0);
 DX.Surface.Canvas.Release;//............這里出錯
 DX.Flip;
end;

解决方案 »

  1.   

    DX.Surface.Canvas.Release;//............這里出錯 ,为什么要销毁?
      

  2.   

    我沒有銷毀它,應該是DX.Surface自己創建不成功,因為它返回的是nil就是在創建窗體后,DelphiX就無法動態創建了,表現出來的是DX.Surface=nil;而在FormCreate,或者FormShow這些窗體尚未完全顯示的事件中,就可以動態創建。不知道是什么原因
      

  3.   

    在執行“DX.Surface.Canvas.Release;”之前,DX.Surface都已經是nil了,沒創建成功
      

  4.   

    問題找到了!!是缺少了一條語句不過還是感謝SmallHand