我有一个小问题。我正在尝试在这样的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的父母更改为Form1,我可以看到刷子。但是,随着父母更改为面板1,什么也没发生。对我该如何解决的任何想法?

提前致谢!

没有正确的解决方案

其他提示

TPANEL是否可以一开始?

另外,tpaintbox没有公众 Brush 财产(也许您正在考虑TSHAPE?)。 TwinControl确实如此,但Tpaintbox不是一个双感染者。它是TgraphicControl后代。

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

  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;

但是没有成功。.我的意思是,如果我将油漆框组件放到表单上,那么代码会像应做的那样生效,但动态创建了一个tpaintbox .... dunno。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top