А что Михалков запретил и книжки... Не ну вот же он П.....
- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ComCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button2: TButton;
Button3: TButton;
Memo1: TMemo;
TreeView1: TTreeView;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure TreeView1SelectionChanged(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.TreeView1SelectionChanged(Sender: TObject);
begin
if TreeView1.Selected=Nil then exit; //Ничего не выделено
Memo1.Lines.Clear;
Memo1.Lines.Add('Level= ' +IntToStr(TreeView1.Selected.Level));
Memo1.Lines.Add('Дочерних узлов = ' +IntToStr(TreeView1.Selected.Count));
Memo1.Lines.Add('Index = ' +IntToStr(TreeView1.Selected.Index));
Memo1.Lines.Add('Text = '+TreeView1.Selected.Text);
end;
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button =mbRight then
TreeView1.Selected:=TreeView1.GetNodeAt(X,Y);//Данный код позволит выделить
//узел при щелчке правой кнопки
//Нужно скажем когда есть меню связанное с определенный узлом
end;
procedure TForm1.Button3Click(Sender: TObject);
var I,J,C1,C2:Integer;
RootTreed:TTreeNode;
CTreed:TTreeNode;
begin
TreeView1.Items.Clear;
C1:=Random(100); //Родительских узлов
For I:=0 to C1 do
begin
RootTreed:=TreeView1.Items.Add(Nil,'C1='+IntToStr(I));
C2:=Random(20); //Дочерних
For J:=0 to C2 Do
begin
CTreed:=TreeView1.Items.AddChild(TreeView1.Items.FindNodeWithText('C1='+IntToStr(I)),'C2='+IntToStr(J));
CTreed.ImageIndex:=1; //Назначаем значки подробнее в хелпе или книге
CTreed.SelectedIndex:=1;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if TreeView1.Selected=Nil then exit; //Ничего не выделено
TreeView1.Selected.Free;
end;
end.
Для удаление при не выделенном узле необходимо пользоваться
TreeView.Items.Delete(Указатель на узел) Как найти узел:
TreeView1.Items.FindNodeWithText('Project') Где Project - имя (Text) узла в котором ищем.
Level позволяет узнать глубину узла Level=0 значит это корень. и т.п. смотри пример приложенный к ответу.
У вас нет необходимых прав для просмотра вложений в этом сообщении.