-
DmitryA (26.11.13 21:28) [0]Delphi XE3
Есть такой код в формеtype
TCornerButton1 = class(TCornerButton);
TCornerButton2 = class(TCornerButton1);
TForm1 = class(TForm)
...
private
Button: TCornerButton2;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button := TCornerButton2.Create(self);
Button.Parent := self;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Button.Free();
end;
Так вот эта кнопка не отображается на форме как TCornerButton.
Если заменитьTCornerButton2 = class(TCornerButton1);
наTCornerButton2 = class(TCornerButton);
то все работает.
В чем может быть дело? -
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.ExtCtrls;
type
TCornerButton1 = class(TCornerButton)
function GetDefaultStyleLookupName: string; override;
end;
TCornerButton2 = class(TCornerButton1)
function GetDefaultStyleLookupName: string; override;
end;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
public
Button: TCornerButton2;
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
function TCornerButton1.GetDefaultStyleLookupName: string;
begin
Result := 'buttonstyle';
end;
function TCornerButton2.GetDefaultStyleLookupName: string;
begin
Result := 'buttonstyle';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button := TCornerButton2.Create(self);
Button.Parent := self;
end;
end.
-
> DmitryA
Проблемы с наследованием тут нет. Кнопка создается и нажимается, в чем можно убедиться, назначив обработчик. Но без указания стиля, она просто не отрисовывается вот и все. Лучше всегда взять за правило для всех компонентов переопределять GetDefaultStyleLookupName.
Вот, кстати, небольшая статейка как раз про кнопку: http://ginne.ru/node/61 -
имя(30.11.14 19:51) [3]Удалено модератором