Последние записи
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
13th
Апр
Работа с Index-ами в TreeView
Posted by obzor under Delphi
Разобрался сегодня как же все таки присвоить картинки созданным итемам в TreeView. Теперь мне нужно вот что.
Где-то в программе создается корневой узел так:
var
Node: TTreeNode;
begin
Node:=tv1.Items.Add(Nil,sLabel3.Caption);
Node.SelectedIndex:=0;
Node.ImageIndex:=0;
tv1.FullExpand;
end;
все нормально создается и картинка какая надо присваивается. Далее, в программе создаются в ранее созданном корневом узле подузлы так:
var
Node: TTreeNode;
begin
Node:=tv1.Items.AddChild(tv1.Items.Item[0],'Новый' +
IntToStr(tv1.Items.Count + 1));
Node.SelectedIndex:=tv1.Items.Count + 1;
Node.ImageIndex:=1;
tv1.FullExpand;
end;
тоже все ништяк создается и присваивается.
Теперь мне нужно вот что: присвоить созданным подузлам номер итема, что в дальнейшем, в самом дереве, я мог обращаться к ним для, например, удаления выбранного узла или дальнейших действий с этим индексом итема.
У TTreeNode есть свойство Data, куда можно засунуть такой номер
var Index: Integer;
...
Node:=TreeView1.Items.AddObject(Nil,'KKK',Pointer(Index));
Node:=TreeView1.Items.AddChildObject(Node,'GGG',Pointer(Index));
или
Node.Data:=Pointer(Index);
Прочитать значение можно так
Index:=Integer(Node.Data);
Поиск нужного TreeNode по номеру путем перебора
Пример:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
Label1: TLabel;
Button1: TButton;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var Node: TTreeNode;
begin
{Заполнение TreeView1}
TreeView1.HideSelection:=False;
Node:=TreeView1.Items.AddObject(nil,'Узел 1',Pointer(1));
TreeView1.Items.AddChildObject(Node,'Узел 1.1',Pointer(2));
TreeView1.Items.AddChildObject(Node,'Узел 1.2',Pointer(3));
Node:=TreeView1.Items.AddObject(nil,'Узел 2',Pointer(4));
TreeView1.Items.AddChildObject(Node,'Узел 2.1',Pointer(5));
TreeView1.Items.AddChildObject(Node,'Узел 2.2',Pointer(6));
TreeView1.FullExpand;
end;
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
{Отображение номера выделенного узла в Label1}
if Node=nil then Label1.Caption:='Not Selected'
else Label1.Caption:=Format('Номер узла = %d',[Integer(Node.Data)]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var Value,i: Integer;
Node: TTreeNode;
begin
{Поиск узла по номеру заданному Edit1}
if not TryStrToInt(Edit1.Text,Value) then Label1.Caption:='Введите целое число'
else begin
Node:=nil;
for i:=0 to TreeView1.Items.Count-1 do
if Integer(TreeView1.Items.Item.Data)=Value then begin
Node:=TreeView1.Items.Item;
Break;
end;
if Node=nil then Label1.Caption:='Узел не найден'
else TreeView1.Selected:=Node;
end;
end;
end.
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)