Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
3 / 3 / 1
Регистрация: 06.09.2010
Сообщений: 68

Доступ к индексу пиктограммы

23.03.2011, 22:02. Показов 1563. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При создании файла или папки непосредственно в программе надо что бы пиктограмма файла отличалась от пиктограммы папки, подскажите пожалуйста путь к индексу пиктограммы, создаю директории или файлы функцией AddChild.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.03.2011, 22:02
Ответы с готовыми решениями:

std::vector доступ по индексу vs доступ по итератору
std::vector<int> tmp; int i = 0; tmp.resize(1000000); std::vector<int>::iterator it = tmp.begin(); for (int m = 0;...

Создание пиктограммы пункта меню
Как создать пиктограмму пункта меню?

Инициализация List и доступ по индексу
Зная размер массива решил заранее инициализировать и раскидать данные по листу, но увы не получилось и не могу понять почему. Листом...

9
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
23.03.2011, 22:16
Цитата Сообщение от gashik1992 Посмотреть сообщение
1. При создании файла или папки непосредственно в программе надо что бы пиктограмма файла отличалась от пиктограммы папки, подскажите пожалуйста путь к индексу пиктограммы,
2. создаю директории или файлы функцией AddChild.
1. Пиктограммы (иконки ?) где - в файлах на диске, в ImageList?
2. Это как ? Покажите код.
0
3 / 3 / 1
Регистрация: 06.09.2010
Сообщений: 68
23.03.2011, 22:55  [ТС]
1. Да, иконки, типа папка или файл, картинки в ImageList, и у каждой индекс, который можно изначально ввести в дереве при создании ветви, но мне нужно добавлять в процессе выполнения, поэтому нужен путь к индексу пиктограммы строки дерева.
2. Ну в редакторе изначально создаешь корень типа С:\ и используя индексы итемов добавляешь дочерние, так как другого диска создать нельзя, поэтому только дочерние:
C++
1
Form1->TreeView1->Items->AddChild(Form1->TreeView1->Items->Item[c],Edit2->Text);
Добавляет подитем к итему индекса с с текстом из Edit2
0
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
23.03.2011, 22:59
gashik1992, имеджлист к дереву, да и указываете имеджиндекс для каждого узла
1
3 / 3 / 1
Регистрация: 06.09.2010
Сообщений: 68
23.03.2011, 23:03  [ТС]
Я это и хочу узнать как сделать, можешь сказать как указать этот индекс?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
23.03.2011, 23:38
ImageIndex
Класс TTreeNode имеет свойства ImageIndex, StateIndex ... - это всё порядковые номера пиктограмм в объекте ImageList, который обычно привязывают к объекту TreeView. Если ImageList загрузить картинками, а при формировании комплекта узлов (TreeNode) установить в каждом соответствующие свойства, всё будет жить.

Пример

//---------------------------------
// Условия
//---------------------------------

На форме размещены: TreeView, ImageList.

TreeView->Images = ImageList

//---------------------------------
// Часть 1 - подготовка пиктограмм
//---------------------------------

// ...

C++
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
// очистка от пиктограмм
Images->Clear();
 
// создать временный объект пиктограммы
TIcon * Icon = new TIcon;
 
// загрузить пиктограмму из ресурсов
Icon->Handle = ::LoadIcon(
HInstance,
"ICON_SAMPLE" // идентификатор пиктограммы
);
// добавить пиктограмму в список
Images->AddIcon( Icon );
 
if ( Icon->Handle == NULL ) // ресурс отсутствует
{
// обработка аварийной ситуации
// ...
}
 
// повторить для всех пиктограмм
// ...
 
delete Icon;
 
// ...
 
//---------------------------------
// Часть 2 - связывание пиктограмм
//---------------------------------
 
// добавить новый узел
// ...
 
// номер пиктограммы невыбранного элемента
AddedNode->ImageIndex = 1; // п/н пиктограммы объекта ImageIndex
 
// номер пиктограммы выбранного элемента
AddedNode->SelectedIndex = 2; // п/н пиктограммы объекта ImageIndex
 
//
2. Используй событие OnExpanded. В параметр Node - указатель на Node которая была рскрыта. И всё что нужно сделать это:

Node->ImageIndex = индекс иконки для развёрнутого узла;
Node->SelectedIndex = индекс иконки для развёрнутого узла(выбранного);

Аналогично OnCollapsed нужно менять иконку на соответствующую.
1
3 / 3 / 1
Регистрация: 06.09.2010
Сообщений: 68
24.03.2011, 00:16  [ТС]
Спасибо, это тоже помогло, но у меня при выполнении программы создать файл или директорию можно, выделив нужную папку, и при выборе создать папку или файл должна определиться иконка 1 или 0, именно при создании, и я пытался сделать так:
C++
1
2
3
4
// Создание в выделенной папке
Form1->TreeView1->Items->AddChild(Form1->TreeView1->Selected,Edit2->Text)
// Изменение картинки
Form1->TreeView1->Items->Item[x]->ImageIndex = 1;
Но проблема в том что вместо х должен стоять номер созданного итема...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.03.2011, 00:31
индексы присваиваются автоматически ? индекс последнего созданного итема соотвествует общему количеству итемов-1 ?

Добавлено через 2 минуты
TreeView - как создать подкатегорию?
1
3 / 3 / 1
Регистрация: 06.09.2010
Сообщений: 68
25.03.2011, 01:20  [ТС]
А ну с индексом я вроде разобрался, и как я понял каждая новая ветвь начинается с 0, и как определить скажем итему какой именно ветви я присваиваю индекс картинки, ведь ветвей много может быть, а через level не получилось, я делал так:
C++
1
2
3
4
5
6
c=0;
l=Form1->TreeView1->Selected->Level+1;
c=k[l];
Form1->TreeView1->Items->AddChild(Form1->TreeView1->Selected,Edit2->Text);
Form1->TreeView1->Items->Item[c]->ImageIndex = 1;
k[l]++;
где номер элемента в массиве k это уровень, а соответствующее ему значение - это номер итема на уровне.
И когда я создавал нулевой итем картинка присваивалась корню, подскажите как определить путь конкретного итема?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.03.2011, 01:29
Все , что ты хотел узнать, но боялся спросить про TreeView
http://promsite.us/TTreeView1_p1.html .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2011, 01:29
Помогаю со студенческими работами здесь

Доступ к произвольному элементу последовательности по индексу
Реализуйте процедуру доступа к произвольному элементу последовательности (правильного списка, вектора или строки) по индексу. Пусть...

Доступ к вектору по индексу как в Пайтоне?
Привет. Есть вектор с числами, хочу сначала его отсортировать, а потом вывести на экран первое число, то есть то что в индексе . В питоне...

Нужно дореализовать доступ по индексу в матрице
В общем, не могу доделать доступ по индексу - не знаю, как избавиться от ошибки. #include "iostream" #include...

Доступ по индексу после передачи дека в функцию
Здравствуйте. template<class P> void Input(deque<P> *MyD, P s) { int i = 0; int size = MyD->size(); for (P y = s;i <...

[WPF] Получить доступ к элементу в ItemsControl по его индексу
Есть код: <ItemsControl x:Name="mainList"> <ItemsControl.ItemTemplate> <DataTemplate> <Grid...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru