我有点问题。我正试图在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,没有任何反应。我怎么能解决这个问题?
提前致谢!
答案 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。