.
Использование метаклассов (компоненты Delphi: TTreeView, TTreeNode, TSpinEdit, TEdit, TLabel)
Автор megabax   
07.05.2010 г.
New Page 2

Использование метаклассов (компоненты Delphi: TTreeView, TTreeNode, TSpinEdit, TEdit, TLabel)

На предыдущем уроке я обещал рассказать о применении обработчика события OnCreateNodeClass у компонента TTreeView и использовании метакласса. Давайте рассмотрим пример:

unit TreeNodeSample;

interface

uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, Spin;

type
     TfrmTreeNodeSample = class(TForm)
     tvMyTree: TTreeView;
     btnAddNode: TButton;
     edNodeText: TEdit;
     seCount: TSpinEdit;
     lbSelection: TLabel;
     procedure tvMyTreeCreateNodeClass(Sender: TCustomTreeView; var NodeClass: TTreeNodeClass);
     procedure btnAddNodeClick(Sender: TObject);
     procedure tvMyTreeClick(Sender: TObject);
     private
        { Private declarations }
     public
        { Public declarations }
    end;

    TMyTreeNode=Class(TTreeNode)
    public
        Count:integer;
    end;


var
     frmTreeNodeSample: TfrmTreeNodeSample;

implementation

{$R *.dfm}
procedure TfrmTreeNodeSample.tvMyTreeCreateNodeClass(Sender: TCustomTreeView; var NodeClass: TTreeNodeClass);
begin
     NodeClass:=TMyTreeNode;
end;

procedure TfrmTreeNodeSample.btnAddNodeClick(Sender: TObject);
var Node:TMyTreeNode;
begin
     Node:=tvMyTree.Items.Add(nil,edNodeText.Text) as TMyTreeNode;
     Node.Count:=seCount.Value;
end;

procedure TfrmTreeNodeSample.tvMyTreeClick(Sender: TObject);
begin
    lbSelection.Caption:=tvMyTree.Selected.Text+' '+intToStr(TMyTreeNode(tvMyTree.Selected).Count)+' шт.';
end;

end.

В данном примере у нас на форме имеется компонент TTreeView, названный tvMyTree, метка lbSelection (компонент TLavel), кнопочка btnAddNode (TButton) и поле ввода edNodeText (компонент TEdit) и компонент TSipnEdit, названный seCount. Сама форма у нас названа frmTreeNodeSample*:

Использование метаклассов (компоненты Delphi: TTreeView, TTreeNode, TSpinEdit, TEdit, TLabel)

Компоненты  TLabel, TButton и TEdit можно найти на закладке Standard*:

Использование метаклассов (компоненты Delphi:TEdit, TLabel, TButton)

TTreeView на Win32*:

Использование метаклассов (компоненты Delphi: TTreeView, TTreeNode, TSpinEdit, TEdit, TLabel)

TSpinEdit на Samples*:

Компоненты Delphi: TTreeView, TTreeNode, TSpinEdit, TEdit, TLabel

Данный пример иллюстрирует, каким образом можно создать свой класс узлов дерева (потомок от TTreeNode), который хранит дополнительные данные. Для этих целей мы объявили класс TMyTreeNode с поле count для хранения количества:

Использование метаклассов (компоненты Delphl)

Обратите внимание на обработчик события OnCreateNodeClass визуального дерева:

procedure TfrmTreeNodeSample.tvMyTreeCreateNodeClass(Sender: TCustomTreeView; var NodeClass: TTreeNodeClass);
begin
     NodeClass:=TMyTreeNode;
end;

в нем мы указываем компоненту, что в качестве узлов дерева используем наш класс - TMyTreeNode.


Скриншоты, помеченные знаком * , являются цитатами и иллюстрациями  программного продукта "Delphi", авторское право на который принадлежит "Borland Software Corporation".


 

Последнее обновление ( 25.05.2013 г. )