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

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

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

При создании файла или папки непосредственно в программе надо что бы пиктограмма файла отличалась от пиктограммы папки, подскажите пожалуйста путь к индексу пиктограммы, создаю директории или файлы функцией AddChild.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2011, 22:02
Ответы с готовыми решениями:

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

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

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

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

9
LK
Заблокирован
23.03.2011, 22:16 2
Цитата Сообщение от gashik1992 Посмотреть сообщение
1. При создании файла или папки непосредственно в программе надо что бы пиктограмма файла отличалась от пиктограммы папки, подскажите пожалуйста путь к индексу пиктограммы,
2. создаю директории или файлы функцией AddChild.
1. Пиктограммы (иконки ?) где - в файлах на диске, в ImageList?
2. Это как ? Покажите код.
0
3 / 3 / 1
Регистрация: 06.09.2010
Сообщений: 68
23.03.2011, 22:55  [ТС] 3
1. Да, иконки, типа папка или файл, картинки в ImageList, и у каждой индекс, который можно изначально ввести в дереве при создании ветви, но мне нужно добавлять в процессе выполнения, поэтому нужен путь к индексу пиктограммы строки дерева.
2. Ну в редакторе изначально создаешь корень типа С:\ и используя индексы итемов добавляешь дочерние, так как другого диска создать нельзя, поэтому только дочерние:
C++
1
Form1->TreeView1->Items->AddChild(Form1->TreeView1->Items->Item[c],Edit2->Text);
Добавляет подитем к итему индекса с с текстом из Edit2
0
1336 / 987 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
23.03.2011, 22:59 4
gashik1992, имеджлист к дереву, да и указываете имеджиндекс для каждого узла
1
3 / 3 / 1
Регистрация: 06.09.2010
Сообщений: 68
23.03.2011, 23:03  [ТС] 5
Я это и хочу узнать как сделать, можешь сказать как указать этот индекс?
0
LK
Заблокирован
23.03.2011, 23:38 6
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  [ТС] 7
Спасибо, это тоже помогло, но у меня при выполнении программы создать файл или директорию можно, выделив нужную папку, и при выборе создать папку или файл должна определиться иконка 1 или 0, именно при создании, и я пытался сделать так:
C++
1
2
3
4
// Создание в выделенной папке
Form1->TreeView1->Items->AddChild(Form1->TreeView1->Selected,Edit2->Text)
// Изменение картинки
Form1->TreeView1->Items->Item[x]->ImageIndex = 1;
Но проблема в том что вместо х должен стоять номер созданного итема...
0
LK
Заблокирован
24.03.2011, 00:31 8
индексы присваиваются автоматически ? индекс последнего созданного итема соотвествует общему количеству итемов-1 ?

Добавлено через 2 минуты
TreeView - как создать подкатегорию?
1
3 / 3 / 1
Регистрация: 06.09.2010
Сообщений: 68
25.03.2011, 01:20  [ТС] 9
А ну с индексом я вроде разобрался, и как я понял каждая новая ветвь начинается с 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
LK
Заблокирован
25.03.2011, 01:29 10
Все , что ты хотел узнать, но боялся спросить про TreeView
http://promsite.us/TTreeView1_p1.html .
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2011, 01:29

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.