我正在尝试一些非常微妙的东西,它现在看起来很糟糕。我正在尝试绘制一个TGroupBox的背景,我已经重载了它的绘制函数,这样角就可以通过它们的父对象显示出来。我有一堆嵌套的组框,没有XPThemes它们看起来很不错。
有没有办法在运行时将背景的一部分绘制为透明。我正在编写表单生成器,而不是使用Delphi设计视图。
发布于 2008-09-30 19:02:02
我尝试通过以下步骤重现这个问题:
1-将主题设置为Windows XP默认值
2-将对齐放在空表单上( TGroupBox = alNone)
3-使用align = alBottom和TGroupBoxes = alClient将两个对齐放入第一个对齐
但从视觉上看,它对我来说很好。
你能提供更多关于你是如何设计表单的信息吗?从.DFM粘贴一些代码就可以了。
以下是我的DFM的相关部分:
object GroupBox1: TGroupBox
Left = 64
Top = 56
Width = 481
Height = 361
Margins.Left = 10
Caption = 'GroupBox1'
ParentBackground = False
TabOrder = 0
object GroupBox2: TGroupBox
Left = 2
Top = 254
Width = 477
Height = 105
Align = alBottom
Caption = 'GroupBox2'
TabOrder = 0
end
object GroupBox3: TGroupBox
Left = 2
Top = 15
Width = 477
Height = 239
Align = alClient
Caption = 'GroupBox3'
TabOrder = 1
end
end发布于 2008-09-30 20:21:55
当我遇到这样的情况时,我最初使用TGroupBox,但后来决定使用TPaintBox (在本例中称为pb )并模拟TGroupBox的图形部分。
procedure TfraNewRTMDisplay.pbPaint(Sender: TObject);
const
icMarginPixels=0;
icCornerElipsisDiameterPixels=10;
begin
pb.Canvas.Pen.Color:=clDkGray;
pb.Canvas.Pen.Width:=1;
pb.Canvas.Pen.Style:=psSolid;
pb.Canvas.Brush.Color:=m_iDisplayColor;
pb.Canvas.Brush.Style:=bsSolid;
pb.Canvas.RoundRect(icMarginPixels,
icMarginPixels,
pb.Width-icMarginPixels*2,
pb.Height-icMarginPixels*2,
icCornerElipsisDiameterPixels,
icCornerElipsisDiameterPixels);
end;发布于 2008-10-02 14:21:36
哈,这太差劲了,我只需要在我的构造函数中不设置ParentBackground := false,并在适当的时候绘制分组框的内部。
https://stackoverflow.com/questions/154387
复制相似问题