delphi – 从TButton继承的自定义按钮不显示
发布时间:2020-12-15 04:03:29 所属栏目:大数据 来源:网络整理
导读:我正在将一个大型项目转换为Firemonkey,并且我们有一些自定义按钮,这些按钮不会显示在表单上.我已将问题分离到一个非常简单的项目: 使用下面的代码,在移动和桌面上(使用Delphi XE6中的默认新应用程序),创建tTestButton1工作正常,但tTestButton2不显示在窗体
我正在将一个大型项目转换为Firemonkey,并且我们有一些自定义按钮,这些按钮不会显示在表单上.我已将问题分离到一个非常简单的项目:
使用下面的代码,在移动和桌面上(使用Delphi XE6中的默认新应用程序),创建tTestButton1工作正常,但tTestButton2不显示在窗体上.怎么可能? type tTestButton1 = class(TButton); tTestButton2 = class(tTestButton1); tMainForm = class(TForm) private fTestButton: TButton; public constructor Create(aOwner: TComponent); override; end; constructor tMainForm .Create(aOwner: TComponent); begin inherited; // fTestButton := tTestButton1.Create(Self); // this works fine (used instead of next line) fTestButton := tTestButton2.Create(Self); //this button does not show up fTestButton.Text := 'Test'; fTestButton.Parent := Self; fTestButton.Visible := True; fTestButton.Position.X := 20; fTestButton.Position.Y := 20; end; 解决方法
问题是控件没有为其注册的样式.因此,自然的解决方案就是为您做到这一点.
但这是一个合理的工作量,我希望你真正想做的就是安排控件使用与TButton相同的样式.像这样实现: type TButtonBase = class(TButton) protected function GetDefaultStyleLookupName: string; override; end; function TButtonBase.GetDefaultStyleLookupName: string; begin Result := 'Buttonstyle'; end; 现在从TButtonBase派生你的类. type tTestButton1 = class(TButtonBase); tTestButton2 = class(tTestButton1); 而不是根据控件的类名查找样式,从TButtonBase派生的类将使用名为Buttonstyle的样式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |