delphi - 将 1.000 个表单中的多个标签设置为透明?

标签 delphi delphi-2010 delphi-7 delphi-xe

我用 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/

相关文章:

mysql - 使用 SQL 参数保护我的应用程序免受注入(inject)攻击

delphi - TStringList名称-值对的特殊字符限制?

delphi - 如何使用 Delphi 2009 验证 SOAP 签名?

delphi - 如何确保 MAPI 客户端在启动时获得焦点?

delphi - 在 Delphi 中按值和按引用调用相同的函数

delphi - XML-RPC 和 Delphi 遇到问题

delphi - MessageBoxEx 停止更新操作

delphi - 关闭新的 Delphi 2010 查找功能

sql-server - TADOStoredProc 和 SQL Server 存储过程,参数作为默认值

delphi - 如何更改我的代码以获取正确的枚举名称值?