程序如下,为了节省资源,我把form2放在动态窗体里面,我第一次点击的的时候,窗体能正常显示,第二次点击的时候窗体消失了,但是第三次点击就显示抛出地址访问异常问题,问题出在哪里呢,请教
procedure TForm1.Button1Click(Sender: TObject);
begin
 if not assigned(form2)  then
  begin
    application.CreateForm(Tform2,form2);
    form2.Show;
  end
  else
    form2.Free;
end;下面这段程序是只显示文字的,但是我想改变文字的颜色,可是在font类的颜色属性怎么改,还是绿色的,这个是为什么,到底哪里是改颜色的,看不太懂,初学了,见笑了
 form2.Color := clLime;
  Beginpath(canvas.Handle);
  SetBkMode(Canvas.Handle,TRANSPARENT );
  with canvas do
  begin
  Font.Name := '宋体';
  Font.Size := 40;
  Font.Color :=clbtnface;
  TextOut(40,80,'我是谁');
  end;
  endpath(canvas.Handle);
  RGN := pathtoRegion(canvas.Handle);
  setwindowrgn(handle,rgn,true);

解决方案 »

  1.   

      if not assigned(form2)  then 
      begin 
        application.CreateForm(Tform2,form2); 
        form2.Show; 
      end 
      else
      begin
        form2.Free; 
        form2:=nil;
      end;不过,感觉还是不太好
      

  2.   

    Font.Color :=clbtnface;无效?
    size:=40;有没有效果呢?
    是with的优先覆盖有问题?
    直接form.canvas.Font.Color :=clbtnface;
    或form.Font.Color :=clbtnface;
    ??
      

  3.   


    改别的都有用,就是改这个不行,不添加COLOR,也是绿色的,郁闷吧
      

  4.   


    加了那句以后,第二次点击按钮,form2都不消失了
      

  5.   

    form2.Color := clLime;//这里是绿色的
      Beginpath(canvas.Handle);
      SetBkMode(Canvas.Handle,TRANSPARENT );
      with canvas do
      begin
      Font.Name := '宋体';
      Font.Size := 40;
      Font.Color :=clbtnface;
      TextOut(40,80,'我是谁');
      end;
      endpath(canvas.Handle);
      RGN := pathtoRegion(canvas.Handle);
      setwindowrgn(handle,rgn,true);