Конференция "Компоненты" » проблема с наследованием контролов в FireMonkey
 
  • 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);

    то все работает.
    В чем может быть дело?
  • DVM © (08.12.13 18:00) [1]

    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.


  • DVM © (08.12.13 18:07) [2]

    > DmitryA  

    Проблемы с наследованием тут нет. Кнопка создается и нажимается, в чем можно убедиться, назначив обработчик. Но без указания стиля, она просто не отрисовывается вот и все. Лучше всегда взять за правило для всех компонентов переопределять GetDefaultStyleLookupName.

    Вот, кстати, небольшая статейка как раз про кнопку: http://ginne.ru/node/61
  • имя (30.11.14 19:51) [3]
    Удалено модератором
 
Конференция "Компоненты" » проблема с наследованием контролов в FireMonkey
Есть новые Нет новых   [134427   +34][b:0][p:0.001]