Вниз
Скачать: CL | DM;

Не получается самому рисовать TTreeView :(   Найти похожие ветки 

 
Calm ©   (2003-02-15 16:41) [0]

В обработчике OnCustomDrawItem рисую узел дерева.
Но узел получается такой ширины, сколько занимает отрисованное свойство Node.Text
Получается, я не могу отрисовать узел несколькими шрифтами. Например, мне хочется первое слово рисовать жирным, а остальные обычным шрифтом. Точнее, отрисовать получается, но мышка чувствует только свойство Text.
Далее. Чтобы бы я ни рисовал, все равно выводится строка Text.
Как быть?

Чувствую, что упустил что-то важное. Но не могу понять что именно.

Далее...
Очень хотелось бы рисовать многострочный Node.
Помню, что на этой неделе (или в конце прошлой) в форуме обсуждался этот вопрос.
Не могу найти. Поиск на сайте НЕ РАБОТАЕТ!!! При поиске по данному форуму со словом "дерево" ничего не находится :((


Заранее спасибо за ответы.
С уважением


 
Song ©   (2003-02-15 17:39) [1]

Надо очищать клиентскую область - FillRect()


 
Calm ©   (2003-02-15 18:33) [2]


> Надо очищать клиентскую область - FillRect()

Я очищаю. Не помогает.

И потом, если бы дело только в очистке, то почему же узел реагирует на мышку (выбирается кликом) только в той области, где отрисовано значение свойства Node.Text?


 
Song ©   (2003-02-15 21:21) [3]

Ну так на это событие ты только отрисовываешь строки самостоятельно, ты вовсе этим не меняешь порядок работы мыши с деревом т.е. другими словами, даже если ты вообще ветку выводить не будешь, а кликнешь на то место где она должна быть, всё будет как надо т.е. появится фокусная рамка, сработает свойство Selected, все события и т.д.


 
Song ©   (2003-02-15 21:43) [4]

Ты знаешь, сколько я этих обработчиков не писал, никогда у меня не выводится старое начертание ветки.
1.Определяешь клиентскую область - TTreeNode.DisplayRect()
2.Очищаешь её.
3.С этого момента можешь писать текст различными шрифтами, да хоть чёрта с рогами через TBitMap выведи..

Какие сложности-то?


 
jack128 ©   (2003-02-15 22:50) [5]

А может DefaultDraw := False; забыл написать?


 
Song ©   (2003-02-16 10:19) [6]

2jack128 © (15.02.03 22:50)
Это не надо.


 
Calm ©   (2003-02-17 10:05) [7]


> Определяешь клиентскую область - TTreeNode.DisplayRect()

Вот! Клиентская область получается такая, чтобы туда поместилось свойство TTreeNode.Text.
А хотелось бы задать ее самому. Я могу это сделать? Если могу, то как?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
1-87369
BOA_KAA
2003-02-17 17:04
2003.02.27
Динамические массивы внутри записи


3-87352
Timur_2002
2003-02-11 12:20
2003.02.27
Проблемы с AutoIncrement в Access (BDE)


1-87521
DJ_Sedoy
2003-02-17 02:28
2003.02.27
TBitmap


1-87421
Nikolai_S
2003-02-18 11:44
2003.02.27
Как вызвать диалог для выбора даты?


3-87280
AndDem
2003-02-07 13:19
2003.02.27
Как в RunTime получить UserName из ADOConnection?




   Наверх