我用Devexpress打破了我的软件,我发现标签是不透明的,因为它们有灰色的背景.
只有无休止的形式,所以我想知道是否有一种方法来做这个任务(将标签设置为透明)自动.
我以前做过类似的事情,表单上的Devexpress控件有LookAndFeel.NativeStyle = True,我使用Grep Search将其替换为所有dfm表单上的False.然而,在标签的情况下,透明属性不存在.
谢谢.
解决方法
全局屏幕变量跟踪所有窗体:
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属性,那么请忽略此检查:它的确不会太慢.