Иллюстрированный самоучитель по Delphi 7 для профессионалов

Компоненты TTreeView и TListView

Рассмотрим пример использования компонентов TTreeview и TListview. Где их совместное применение будет полезным? Выберем для этого отображение данных системного реестра. С одной стороны, ключи в реестре упорядочены иерархически. С другой, каждый из них может иметь несколько разнотипных значений. Таким образом, мы почти пришли к тому же решению, что и разработчики из Microsoft, создавшие утилиту Registry Editor – слева дерево ключей, справа – расширенный список их содержимого.

Конечно, нет смысла дублировать их труд. Здесь мы ограничимся только просмотром реестра, затратив на это совсем немного усилий – четыре компонента и пару десятков строк кода. Так выглядит главная (и единственная) форма приложения Mini-Registry browser (рис. 5.6).

Иллюстрированный самоучитель по Delphi 7 для профессионалов › Элементы управления Win32 › Компоненты TTreeView и TListView
Рис. 5.6. Приложение Mini-Registry browser А вот и весь его исходный код:

Листинг 5.1. Приложение Mini-Registry-browser, главный модуль.

unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCTRLs, Grids, Outline, ComCTRLs, ImgList, ExtCTRLs;
type
TForml = class(TForm)
TreeViewl: TTreeView;
ListViewl: TListView;
ImageListl: TImageList;
Splitterl: TSplitter;
procedure FormCreate(Sender: TObject);
procedure TreeViewlChange(Sender: TObject; Node: TTreeNode);
procedure FormDestroy(Sender: TObject);
procedure TreeViewlExpanded(Sender: TObject; Node: TTreeNode);
procedure TreeViewlGetlmagelndex(Sender: TObject; Node: TTreeNode);
private
{ Private declarations }
public
{ Public declarations }
procedure ShowSubKeys(ParentNode: TTreeNode;depth: Integer);
function GetFullNodeName(Node: TTreeNode):string;
end;
var
Forml: TForml;
implementation
uses registry;
{$R *.DFM}
var reg: TRegistry;
procedure TForml.FormCreate(Sender: TObject);
var root: TTreeNode;
begin
Reg: = TRegistry.Create;
ListViewl.ViewStyle: = vsReport;
with ListViewl do
begin
with Columns.Add do
begin
Width: = ListViewl.Width div 3-2;
Caption: = 'Name';
end;
with Columns.Add do
begin
Width: = ListViewl.Width div 3*2-2;
Caption: = 'Value';
end;
end;
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.