我想创建一个自定义样式的 Delphi 项目,如下图。
正如您所看到的,MainForm是透明的,并且它内部有一些组件。如何创建透明的MainForm?P.S:我想创建VCL项目,我画了这个图像的Photoshop。
ddhy6vgd1#
假设您使用的是Firemonkey,因为您没有指定VCL或FMX。实际上,您不需要为此创建样式。更简单的方法是:1.将窗体透明属性设置为True1.在表单上放置一个TRectangle,使其与Most left对齐,并根据自己的喜好调整颜色等。1.在表单上放置另一个TRectangle,并将对齐方式设定为Client。然后,您可以调整透明度的Opacity属性、color的fill属性,以及border的stroke属性。1.我看到照片的左右两边有一小块空白。这可以通过在你放置的第二个TRectangle上设置一个margin left值来实现。现在,如果您禁用了窗体的边框,它应该看起来像您所希望的那样。我们还需要做一件事来避免控件显示为透明。我们需要在窗体上放置布局。而不是矩形。如果您将控件放置在不透明的矩形上,控件也将是透明的。如果希望控件具有相同的透明度值,请将其放置在矩形上。否则,请执行以下操作:1.在表单上放置一个TLayout,而不是矩形。1.将align属性设置为Contents。这将使其覆盖所有内容。1.将布局的margin left属性设置为所放置的左侧矩形的宽度+所放置的工作区矩形的边距值,以补偿较小的空间。1.将控件放置在布局上,它们应该以默认的不透明度显示。最后一件要做的事情是实现窗口拖动。假设您禁用了边框,则用户将根本无法移动窗口,因为没有边框可拖动。在您希望拖动开始的组件的MouseDown事件上添加以下代码:
True
TRectangle
Most left
Client
Opacity
color
fill
border
stroke
margin left
TLayout
procedure TForm1.rctngl1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin StartWindowDrag; end;
你现在应该都做好了。编辑:我做了一个例子后,张贴这个答案:FMX Semi Transparent Form
1条答案
按热度按时间ddhy6vgd1#
假设您使用的是Firemonkey,因为您没有指定VCL或FMX。
实际上,您不需要为此创建样式。更简单的方法是:
1.将窗体透明属性设置为
True
1.在表单上放置一个
TRectangle
,使其与Most left
对齐,并根据自己的喜好调整颜色等。1.在表单上放置另一个
TRectangle
,并将对齐方式设定为Client
。然后,您可以调整透明度的Opacity
属性、color
的fill
属性,以及border
的stroke
属性。1.我看到照片的左右两边有一小块空白。这可以通过在你放置的第二个
TRectangle
上设置一个margin left
值来实现。现在,如果您禁用了窗体的边框,它应该看起来像您所希望的那样。我们还需要做一件事来避免控件显示为透明。我们需要在窗体上放置布局。而不是矩形。如果您将控件放置在不透明的矩形上,控件也将是透明的。如果希望控件具有相同的透明度值,请将其放置在矩形上。否则,请执行以下操作:
1.在表单上放置一个
TLayout
,而不是矩形。1.将align属性设置为Contents。这将使其覆盖所有内容。
1.将布局的
margin left
属性设置为所放置的左侧矩形的宽度+所放置的工作区矩形的边距值,以补偿较小的空间。1.将控件放置在布局上,它们应该以默认的不透明度显示。
最后一件要做的事情是实现窗口拖动。假设您禁用了边框,则用户将根本无法移动窗口,因为没有边框可拖动。在您希望拖动开始的组件的MouseDown事件上添加以下代码:
你现在应该都做好了。
编辑:我做了一个例子后,张贴这个答案:FMX Semi Transparent Form