|
Вопрос # 246/ вопрос открыт / |
|
Компонент TTabControl...
Как на созданих рание вкладках изменить иконки в процесе выполнения програмы?
У меня есть 3 иконки...
Одна иконка используется при создании вкладки...
Вторая при изменении динамически созданых даных (которые связаны по индексу), когда вкладка не имеет фокуса...
Третья когда изменение динамических даних запрещено...
(Проблема в том что в этом компоненте иконки, я так понимаю, изменяются токо в процессе создания вкладки... Но может есть какието варианты, типа SendMessage(...) или что-то подобное чтобы заставить компонет сменить иконку созданой вкладки...)
 |
Вопрос задал: Alex_ROI (статус: Посетитель)
Вопрос отправлен: 8 января 2007, 01:01
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Новаковский Юрий Аврамович
Здравствуйте, Александр!
К TTabControl подключаете TImageList,наполняете его 25 иконками, если у Вас 5 вкладок, используются иконки NN 0,1,2,3,4.
При необходимости сменить иконку просто перемещаете ее
ImageList1.Move(25,0);,
а чтоб вернуть остальные иконки на место не забудьте
ImageList1.Move(1,25);
Удачи Вам.
 |
Ответ отправил: Новаковский Юрий Аврамович (статус: 4-ый класс)
Время отправки: 9 января 2007, 12:43
Оценка за ответ: 2
Комментарий к оценке: Расход памяти... Это минус...
|
Мини-форум вопроса
Всего сообщений: 13; последнее сообщение — 25 мая 2008, 15:00; участников в обсуждении: 3.
|
Knjazev (статус: 3-ий класс), 9 января 2007, 19:07 [#1]:
Новаковский Юрий Аврамович - это действительно работает?
|
|
Alex_ROI (статус: Посетитель), 9 января 2007, 22:27 [#2]:
Большое спасибо, но в моем случае этот вириант не подойдет, так как количество закладок меняется в процесе выполнения проги. И если я в такой способ буду изменять индекс самой иконки то иконки будут изменятся и на остальных закладках, а это не то что мне надо....
|
|
Новаковский Юрий Аврамович (статус: 4-ый класс), 10 января 2007, 11:43 [#3]:
На счет расхода памяти, у вас Александр стол и меню "пуск" загружен с сотней иконок,не говоря про прочее, а вы еще десяток боитесь загрузить. Или вы работаете на 386 с 16М озу?
Уважаемый Ласковый 3лоумышленник, я никогда не даю ответы из головы, а тем более с потолка,как некоторые другие эксперты,потому и сижу в 3 классе. Обязательно проверяю.
Уважаемый Александр! TImageList имеет методы
Insert и Delete,так что меняйте количество закладок и иконок себе на здоровье. Спрпвку по Delphi хоть иногда смотреть надо.
|
|
Alex_ROI (статус: Посетитель), 10 января 2007, 14:32 [#4]:
Спасиба - я в курсе!!!
Меня интересует событие OnGetImageIndex! В какой-то определенный момент (окромя добавления закладки) оно срабатывает и икон на закладках меняются, но что это за событие я незнаю...
Вот так я это событие обрабатываю:
procedure TPvF.TC1GetImageIndex(Sender: TObject; TabIndex: Integer;
var ImageIndex: Integer);
begin
if NOt(PPrivat(FUser.Items[TabIndex])^.NewMes) then ImageIndex:=1 else ImageIndex:=0;
end;
И меня это бесит так как мне интересно добится сути в этом направлении, а мне все предлагаю другой путь... (ОБЫДНО)
Пробывал расматривать исходник TTabControl в методах на обновление или на перерисовку компонета не предусмотрено изменение иконки...
Вот тут-то я и застрял....
|
|
Alex_ROI (статус: Посетитель), 11 января 2007, 22:06 [#5]:
Уважаемый Новаковский Юрий Аврамович, я таки послушал Вас! Все начало получатся! Но столкнулся с новой проблемой...
Закладки создаются с иконками и иконки меняются, но стоит, скажем, удалить первую закладку и все дальше начинается бардак...
Выражается:
Индекс TTabControl вказывает на 0, а иконка на закладке остается с индексом (указателем) на 1 - тоесть в дальнейшем получается что две закладки ссылаюся на одну иконку. И тд.
Что делать?
Как закладке сказать что индекс иконки сменился?
|
|
Knjazev (статус: 3-ий класс), 12 января 2007, 01:48 [#6]:
Александр, именно это я и имел ввиду в своём первом сообщении
|
|
Новаковский Юрий Аврамович (статус: 4-ый класс), 12 января 2007, 12:23 [#7]:
Уважаемый Александр!
Сначала действия с закладками,а потом с иконками. TImageList при любых своих изменениях инициирует всеобщую перерисовку.
Удачи!
|
|
Alex_ROI (статус: Посетитель), 12 января 2007, 14:32 [#9]:
Procedure TForm.TabControl1GetImageIndex(Sender: TObject; TabIndex: Integer;
var ImageIndex: Integer);
|
|
Alex_ROI (статус: Посетитель), 12 января 2007, 14:38 [#10]:
SetImage - используем в тех местах геде надо на закладке сметь иконку...
|
|
Alex_ROI (статус: Посетитель), 20 января 2007, 16:55 [#11]:
Ласковый 3лоумышленник.
Что скажеш... разобрался или как?
Или вариант Новаковского лутчше?
|
|
Knjazev (статус: 3-ий класс), 20 января 2007, 17:00 [#12]:
Мне сейчас это уже не надо, прогу на заказ делал, проект завершён. На эксперименты времени нет
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|