Как связать TreeView и PageControl?

На форме стоит TreeView, PageControl и кнопка.
При смене страницы - меняется текущий узел, а при смене узла меняется страница.

unit Unit1;

{©Drkb v.3(2007): <a href="http://www.drkb.ru" title="www.drkb.ru">www.drkb.ru</a>,

 ®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}


interface

uses

 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

 StdCtrls, ComCtrls;

type

 TForm1 = class(TForm)

  TreeView1: TTreeView;

  Button1: TButton;

  PageControl1: TPageControl;

  procedure Button1Click(Sender: TObject);

  procedure TreeView1Change(Sender: TObject; Node: TTreeNode);

  procedure PageControl1Change(Sender: TObject);

 private

  procedure addItem(t: String);

  { Private declarations }

 public

  { Public declarations }

 end;

var

 Form1: TForm1;

implementation

{$R *.DFM}

Procedure TForm1.addItem(t:String);

 var TabSheet:TTabSheet;

  Node:TTreenode;

begin

 TabSheet:=TTabSheet.Create(Self);

 TabSheet.PageControl:=PageControl1;

 TabSheet.caption:=t;

 Node:=TreeView1.Items.Add(nil, t);

 Node.data:=TabSheet; //ассоциируем узел с страницей

 TabSheet.tag:=Integer(Node); // ассоциируем страницу с узлом

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

 TreeView1.HideSelection:=false;

 addItem('Item1');

 addItem('Item2');

 addItem('Item3');

 addItem('Item4');

end;

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);

begin

 PageControl1.ActivePage:=TTabSheet(Node.data);// Доступ к ассоциированной странице через узел

end;

procedure TForm1.PageControl1Change(Sender: TObject);

begin

 TreeView1.Selected:=TTreeNode(Pointer(PageControl1.ActivePage.tag));// Доступ к ассоциированному узлу через страницу

end;

end.

Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Взято с Vingrad.ru http://forum.vingrad.ru

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...