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

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

23.03.2011, 22:02. Показов 1575. Ответов 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
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru