我用 Devexpress 给我的软件换肤,发现标签不透明,导致它们具有灰色背景。
有无穷无尽的表单,所以我想知道是否有一种方法可以自动完成此任务(将标签设置为透明)。
我之前做了类似的事情,表单上的 Devexpress 控件有 LookAndFeel.NativeStyle = True,我使用 Grep Search 在所有 dfm 表单上将其替换为 False。然而,在标签的情况下,不存在透明属性。
谢谢。
最佳答案
全局Screen
变量跟踪所有表单:
procedure MakeLabelsTransparent(AParent: TWinControl);
var
I: Integer;
begin
with AParent do
for I := 0 to ControlCount - 1 do
if Controls[I] is TLabel then
TLabel(Controls[I]).Transparent := True
else if Controls[I] is TWinControl then
MakeLabelsTransparent(TWinControl(Controls[I]));
end;
procedure TMainForm.ActiveFormChange(Sender: TObject);
begin
with Screen do
if (ActiveCustomForm <> nil) and (ActiveCustomForm.Tag = 0) then
begin
MakeLabelsTransparent(ActiveCustomForm);
ActiveCustomForm.Tag := 1;
end;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
Screen.OnActiveFormChange := ActiveFormChange;
end;
如果您必须对特定表单使用 Tag 属性,请忽略此检查:它实际上不会变慢那么多。
关于delphi - 将 1.000 个表单中的多个标签设置为透明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6126578/