Перейти к содержанию
Fire Monkey от А до Я
  • 0

[TTreeView] Почему мой созданный класс от TTreeViewItem не отображается?


david_yusupov

Вопрос

Точнее, как работает наследование.

  TNodeItem = class(TTreeViewItem)
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;
 
  TNodeItem2 = class(TNodeItem)
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

реализация

{ TNodeItem }

constructor TNodeItem.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

end;

destructor TNodeItem.Destroy;
begin

  inherited;
end;

{ TNodeItem2 }

constructor TNodeItem2.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

end;

destructor TNodeItem2.Destroy;
begin

  inherited;
end;

// Вот самое интересное, не много не понятно почему так

procedure TForm1.Button2Click(Sender: TObject);
var
  xTree: TTreeViewItem;
begin
  // Тут все работает
  xTree := TTreeViewItem.Create(nil);
  xTree.Text := 'Тест2';
  xTree.Parent := TreeView1;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  xTree: TNodeItem;
begin
  // И тут все работает
  xTree := TNodeItem.Create(nil);
  xTree.Text := 'Тест3';
  xTree.Parent := TreeView1;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
  xTree: TNodeItem2;
begin
  // А вот тут не работает, узел добавляется, а текста нет.
  xTree := TNodeItem2.Create(nil);
  xTree.Text := 'Тест4';
  xTree.Parent := TreeView1;
end;

 

Ссылка на комментарий

Рекомендуемые сообщения

  • 1
  • Администраторы

Скорее всего просто ваш класс итема не может найти стиль. Чтобы явно указать для класса, что нужно использовать дефолтный стиль "TreeViewItemStyle", нужно перекрыть метод GetDefaultStyleLookup и вернуть "TreeViewItemStyle"

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...