Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
 Аватар для ZSFT
2 / 2 / 0
Регистрация: 13.10.2015
Сообщений: 65
Delphi 6-7

Ассоциировать TreeView и PageControl

13.02.2021, 12:17. Показов 4390. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте Уважаемые.
Помогите, пожалуйста, перестроить код.

Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// На форме стоит TreeView, PageControl и кнопка. 
// При смене страницы - меняется текущий узел, а при смене узла меняется страница. 
 
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;
 
type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    PageControl1: TPageControl;
    Button1: TButton;
    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.


Нашел в интернете нужную статью, но переделать под себя не получилось.
Прошу помощи в чрезвычайно легком для программистов вопросе.

Нужно переделать код, чтобы не создавались листы PageControl и узлы TreeView
а просто ассоциировались с уже имеющимися.

Т.е. что-то вроде этого:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
  TabSheet: TTabSheet;
begin
  Node.Data := TabSheet; //ассоциируем узел с страницей
    // Доступ к ассоциированной странице через узел
  PageControl1.ActivePage := TTabSheet(Node.Data);
end;
 
procedure TForm1.PageControl1Change(Sender: TObject);
var
  TabSheet: TTabSheet;
  Node: TTreeNode;
begin
  TabSheet.Tag := Integer(Node); // ассоциируем страницу с узлом
    // Доступ к ассоциированному узлу через страницу
  TreeView1.Selected := TTreeNode(Pointer(PageControl1.ActivePage.Tag));
end;
Вот, научите, пожалуйста, как создать простую ассоциацию TreeView и PageControl.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.02.2021, 12:17
Ответы с готовыми решениями:

Treeview и pagecontrol
Создание чего-то а-ля справочник. Нужно что бы при выборе пункта в treeview в pagecontrol открывалась соответствующая страница. Я в...

Размещение TreeView на PageControl
В общем в программе(учебник) есть TreeView, туда подгружается дерево из файла lect.txt ( лежит в папке Data), необходимо перекинуть...

По клику строки в TreeView открывать соответствующую вкладку в PageControl
Как связать, нужно по клику строки в TreeView- открывать соответствующую вкладку в PageControl. На кнопке я бы привязал к индексу и...

24
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
20.02.2021, 11:00
Студворк — интернет-сервис помощи студентам
Исходники скинуть не сложно, но меня интересовал результат запуска редактора. Все правильно работает? Устанавливать эту игру как-то не хочется, уж очень она древняя.
Вложения
Тип файла: rar XEditor.rar (888.8 Кб, 15 просмотров)
1
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
20.02.2021, 15:38
Забыл, что у вас D7. Вот адаптация под вашу версию.
Вложения
Тип файла: rar XEditorD7.rar (2.9 Кб, 11 просмотров)
1
 Аватар для ZSFT
2 / 2 / 0
Регистрация: 13.10.2015
Сообщений: 65
20.02.2021, 19:37  [ТС]
Ура! Ура! Теперь всё работает.
Спасибо Огромное!

Добавлено через 3 часа 35 минут
Братцы, большое спасибо за помощь, это всё работает, но под название темы не подходит.
Как связать TreeView и PageControl,
первый ответ связывает на основании компонента PageControl но ведь узлы TreeView есть главными.

Я в интернете нашел добавление:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
TreeView1.Items.Clear; // очистка списка
// добавление корневого узла 'производство' (индекс 0)
TreeView1.Items.Add(nil, 'производство');
{добавление дочерних узлов 'цех 1' — 'цех 3' (индексы 1 — 3)}
TreeView1.Items.AddChild(TreeView1.Items.Item[0], 'цех 1');
TreeView1.Items.AddChild(TreeView1.Items.Item[0], 'цех 2');
TreeView1.Items.AddChild(TreeView1.Items.Item[0], 'цех 3');
{добавление корневого узла 'управление' после узла 'производство' (индекс 4) }
TreeView1.Items.Add(TreeView1.Items.Item[0], 'управление');
{добавление дочерних узлов 'администрация' и 'бухгалтерия' узла 'управление' }
TreeView1.Items.AddChild(TreeView1.Items.Item[4], 'администрация');
TreeView1.Items.AddChild(TreeView1.Items.Item[4], 'бухгалтерия');
 
Дерево может быть сколь угодно разветвленным. Например, следующие операторы добавляют дочерние узлы «бригада 1» и «бригада 2» в сформированный ранее узел «цех 1»:
 
TreeView1.Items.AddChild(TreeView1.Items.Item[1], 'бригада 1');
TreeView1.Items.AddChild(TreeView1.Items.Item[1], 'бригада 2');
 
Текст, связанный с некоторым узлом, можно найти с помощью его свойства Text. Например, TreeView1.Items.Item[1].Text — это надпись «цех 1».
но как это связать с PageControl....

Добавлено через 17 минут
Нужно этот проект связать с PageControl:
Ассоциировать TreeView и PageControl
Простите за настойчивость, но пусть тема закончится ответом, если можно, конечно.
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
20.02.2021, 19:41
Цитата Сообщение от ZSFT Посмотреть сообщение
но как это связать с PageControl....
Вы или не читаете, что я вам писал ранее или не понимаете. Если первое, то читайте ранние посты, если второе, то снова читайте ранние посты, пока не поймете. Повторять все по третьему кругу нет никакого желания.
1
 Аватар для ZSFT
2 / 2 / 0
Регистрация: 13.10.2015
Сообщений: 65
20.02.2021, 21:37  [ТС]
Пытливый Ваши возможности интеллекта для меня как Космос, поэтому прошу прощения за свою непонятливость.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.02.2021, 21:37

Ассоциировать файл...
помогите сделать последнии штрихи , как формат MP3 ассоциировать со своим плейром чтоб при открытие файла музыки он добавлялся в listbox ...

Ассоциировать расширения с программами
Программа должна ассоциировать расширения с программами. После запуска ассоциации остаются прежними. Почему не работает? using...

Ассоциировать файлы с программой
Как сделать так, чтобы программа открывала определённый формат файла. Например Блокнот выбираем Открыть с помощью.. Выбрать программу и она...

Программно ассоциировать файл с программой
Здравствуйте, подскажите как лучше всего программно провернуть такое: при запуске файла определенного расширения, должна открыться...

Ассоциировать расширение со своим приложением
Добрый день! Вопрос, как присвоить иконку моего приложения файлу txt Заранее спасибо!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru