在tpanel上创建tpaintbox的问题

时间:2010-11-14 12:40:18

标签: delphi delphi-7 panel paintbox

我有点问题。我正试图在TPanel上创建一个TPaintBox,如下所示:

procedure TForm1.mkPaint(S: string);
var PB: TPaintBox;
begin
  PB := TPaintBox.Create(Self);
  with PB do 
  begin
    Parent := Panel1;
    Visible := True;
    Name := S;
    Height := 100;
    Width := 100;
    Left := 8;
    Top := 8;
    // ParentColor := False;
    Brush.Style := bsSolid;
    Brush.Color := $00000000;
  end;
  Application.ProcessMessages;
end;

现在,如果我将PaintBox的Parent更改为Form1,我可以看到画笔。 但是,随着父级更改为Panel1,没有任何反应。我怎么能解决这个问题?

提前致谢!

2 个答案:

答案 0 :(得分:0)

TPanel开头是否可见?

此外,TPaintBox没有公共Brush属性(也许您正在考虑TShape?)。 TWinControl可以,但是TPaintBox不是TWinControl的后代。它是TGraphicControl的后代。

答案 1 :(得分:0)

是的,这是我的错误。我将代码更改为:

  pb := TPaintBox.Create(self);
  with pb do begin
    Parent := Form1;
    Visible := true;
    Top := 1;
    Left := 1;
    Width := 250;
    Height := 100;
    ParentColor := false;
    Canvas.Brush.Color := clBlack;
    Canvas.Font.Size := 12;
    Canvas.Font.Color := clWhite;
    Canvas.FillRect(ClientRect);
    Canvas.TextOut(1, 1, 'test');
  end;

但没有成功..我的意思是,如果我将一个PaintBox组件放到表单中,那么代码就会生效,但动态创建一个TPaintBox .... dunno。