Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с TTreeView в Delphi 2009 [D2005, XP]


Phoenix ©   (2009-12-09 14:39:00) 

Доброго времени суток. Начал осваивать Delphi 2009 и возникла такая проблема. Есть некий TTreeView с подключённым TImageList где имеется набор иконок. В TTreeView через метод TVModulGetImageIndex указываю какой индекс иконки присвоить. Всё нормально. Но стоит в заполненом дереве щёлкнуть на любой элемент, как изображение иконки на дереве меняется с нужной на ту что стоит в TImageList под индексом 0. Ничего понять не могу. Новая форма, обработчиков на onChange  и onClick нет. В чём может быть причина?


Phoenix   (2009-12-09 15:22:00) [1]

Разобрался. надо в GetSelectedIndex присваивать не imageindex а SelectedIndex тогда всё работает как надо


Медвежонок Пятачок   (2009-12-09 15:15:00) [2]

самый первый битмап в имаджлисте у меня - прозрачный.
я подобную ошибку заметил у себя когда поверх правильногно битмапа рисовался самый первый (нулевой)
он был тоже частично прозрачный, поэтому я сразу видел, что нужный мне все же рисуется, а не просто тупо рисуется только нулевой


Медвежонок Пятачок   (2009-12-09 15:11:00) [3]

я же написал как это пофиксено у меня


Phoenix   (2009-12-09 15:10:00) [4]


> это уже ответ.горбит имаджлист

Отсюда вопрос - этот момент как то можно поправить?


Медвежонок Пятачок   (2009-12-09 15:09:00) [5]

это уже ответ.
горбит имаджлист


Phoenix   (2009-12-09 15:08:00) [6]


> заведи у узла визуальный атрибут и вписывай в него текущий
> имаджиндекс.Сразу будет видно кто именно косячит.Либо твой
> код, который присваивает не то, когда узел в фокусе/не в
> фокусе.Либо имаджлист

Сделал. Мда. Отображает что ImageIndex соответсвует заданному, почему отображает неверно это вопрос.


Медвежонок Пятачок   (2009-12-09 15:02:00) [7]

заведи у узла визуальный атрибут и вписывай в него текущий имаджиндекс.
Сразу будет видно кто именно косячит.
Либо твой код, который присваивает не то, когда узел в фокусе/не в фокусе.
Либо имаджлист


Медвежонок Пятачок   (2009-12-09 15:00:00) [8]

что не решает?


Phoenix   (2009-12-09 14:55:00) [9]


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

Но проблему это не решает к сожалению - нужная иконка не отображатся.


Медвежонок Пятачок   (2009-12-09 14:54:00) [10]

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


Phoenix   (2009-12-09 14:52:00) [11]


> нефигово бы еще SelectedIndex задать

Задал , результат тот же.
procedure TfrmMain.TVModulGetImageIndex(Sender: TObject; Node: TTreeNode);
begin
 Node.ImageIndex:=5
end;

procedure TfrmMain.TVModulGetSelectedIndex(Sender: TObject; Node: TTreeNode);
begin
 Node.ImageIndex:=5;
end;

Так же скидывает на 0 .


clickmaker   (2009-12-09 14:49:00) [12]

нефигово бы еще SelectedIndex задать


MBo   (2009-12-09 14:49:00) [13]

OnGetSelectedIndex


Медвежонок Пятачок   (2009-12-09 14:48:00) [14]

Содержимого там одна стрка

тем лучше.
она и есть причина странностей


Phoenix   (2009-12-09 14:47:00) [15]


> причина может быть в содержимом TVModulGetImageIndex

Содержимого там одна стрка
Node.ImageIndex:=PModul(Node.Data).id+1;
Это уже сомтрел. Даже если руками выставляю
Node.ImageIndex:=5 то изначально проставляются картинки под индексом 5 но при клике скидываются на 0 :(


Медвежонок Пятачок   (2009-12-09 14:44:00) [16]

причина может быть в содержимом TVModulGetImageIndex


Наверх

Титульная страница Поиск, карта сайта Написать письмо