Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Delphi изнутри arrow Использование метаклассов (компоненты Delphi: TTreeView, TTreeNode, TSpinEdit, TEdit, TLabel)
05.12.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Использование метаклассов (компоненты Delphi: TTreeView, TTreeNode, TSpinEdit, TEdit, TLabel) Печать E-mail
Автор 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 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги