Разноцветные строчки в TreeView
От: Farik Россия http://irbis.dorms.spbu.ru
Дата: 21.12.03 17:45
Оценка:
Хочу сабж.

Вопросы следующие.

Попытался через AdvancedCustomDrawItem. Чего то не то получается. То есть явно надо через него, вот только что и как именно рисовать?
Ещё одно — линии соединения, они то кем прорисовываются и как добраться до их стиля?
Re: Разноцветные строчки в TreeView
От: DPP Россия  
Дата: 21.12.03 18:36
Оценка:
Здравствуйте, Farik, Вы писали:

F>Попытался через AdvancedCustomDrawItem. Чего то не то получается. То есть явно надо через него, вот только что и как именно рисовать?


присоединяюсь.
у меня тоже ничего не получается.
void __fastcall TEditForm::TreeView1CustomDrawItem(TCustomTreeView *Sender,
      TTreeNode *Node, TCustomDrawState State, bool &DefaultDraw)
{
    if(/* условие при котором отрисовываем другим стилем */){
        TRect NodeRect;
        NodeRect = Node->DisplayRect(true);
        TreeView1->Canvas->Font->Style=TFontStyles()<< fsBold << fsUnderline;
        TreeView1->Canvas->Font->Color = clRed;

        /// далее, все то, что закоментировано (если раскомментировать) вызывает всевозможные глюки отрисовки

        // можно изменить шрифт
        //TreeView1->Canvas->Font->Assign(EditForm->Font);
        // следующий узел будет выведен черти-каким шрифтом...

        // или цвет фона
        //TreeView1->Canvas->Brush->Color=clBlue;
        //TreeView1->Canvas->FillRect(NodeRect);
        // будут оставаться "куски" этой самой подложки...

        //TreeView1->Canvas->TextOut(NodeRect.Left, NodeRect.Top, Node->Text);
        // если раскоментировать эту строчку, то появляется очень странный эффект - 
        //     следующая за ней будет выведена каим-то мерзким шрифтом...
    }
}

я этот "странный эффект" обхожу так: допустим по нажатию какой-то кнопки мы рекурсивно пробегаем по дереву и по каким-либо признакам решаем, будем ли мы этот узел рисовать "особым" цветом или нет. если да, то устанавливаем соответствующий флажок в ((user structure*)Node->Data)->flag.
После окончания вызываем TreeView1->Refresh();


F>Ещё одно — линии соединения, они то кем прорисовываются и как добраться до их стиля?

обрати внимание >>
//Returns the bounding rectangle for a tree node.

Windows::TRect __fastcall DisplayRect(bool TextOnly);
/*
  Description
  If the TextOnly parameter is true, the bounding rectangle includes only the text of the node.
  Otherwise, it includes the entire line that the node occupies in the tree-view control.
*/

при помощи
TRect NodeRect;
NodeRect = Node->DisplayRect(false);

получаешь всю строку TreeView и можешь сам рисовать в ее начале что хочешь. Скорее всего можно проще...

---
хотелось бы услышать, как это надо делать правильно... а то все эти выкрутасы...
Re: Разноцветные строчки в TreeView
От: Diouzshev Россия  
Дата: 22.12.03 11:22
Оценка:
Hello, Farik!
You wrote on Sun, 21 Dec 2003 17:45:29 GMT:

F> Попытался через AdvancedCustomDrawItem. Чего то не то получается. То

F> есть явно надо через него, вот только что и как именно рисовать?
F> Ещё одно — линии соединения, они то кем прорисовываются и как
F> добраться до их стиля?

Посмотреть как сделано в примере
C:\Program Files\Borland\Delphi6\Demos\CustomDraw\

или сходить на delphi-gems.com и попробовать VirtualTreeView.

With best regards, Alexander Diouzshev-Maltsev.
Posted via RSDN NNTP Server 1.8 beta
Re: Разноцветные строчки в TreeView
От: Satrapp Россия  
Дата: 22.12.03 13:54
Оценка:
Здравствуйте, Farik, Вы писали:

F>Хочу сабж.


F>Вопросы следующие.


F>Попытался через AdvancedCustomDrawItem. Чего то не то получается. То есть явно надо через него, вот только что и как именно рисовать?


(Sender as TTreeView).Canvas.Brush.Color := clRed;
... << RSDN@Home 1.1.0 stable >>
Re[2]: Разноцветные строчки в TreeView
От: DPP Россия  
Дата: 22.12.03 14:19
Оценка:
Здравствуйте, Diouzshev, Вы писали:

D>Посмотреть как сделано в примере

D>c:\Program Files\Borland\CBuilder6\Examples\CustomDraw\
да... и куда я смотрел... ведь уже начинал разбираться с этим примером...
спасибо, что напомнили про него.

D>или сходить на delphi-gems.com и попробовать VirtualTreeView.

а не подскажите ли как (и возможно ли?) этот компонент подключить к CBuilder 6 ? я пробовал, но не получилось инсталлировать этот компонент, хотя другие компоненты инсталлируются без проблем. Я скачал "VirtualTreesBCB5-6 Packages.zip" и "VirtualTreeview.zip". Этого достаточно? Что-то еще может надо? На сайте написано (если я правильно понял), что в "VirtualTreeview.zip" включено все необходимое для BCB6.
перед тем как это отправить узрел что ему нужен Theme Manager. скачал. как и куда его пихать не могу понять.

Конечно, ответ RTFM.
но... выполняю все точно по шагам как написано в хэлпе — ничего не выходит.
то "internal error URW3532" то "Access violation in module dcc60.dll"

обидно... VirtualTreeView на картинке такой красивый...
Re[3]: Разноцветные строчки в TreeView
От: kavlad Россия http://www.wavesoft.ru
Дата: 22.12.03 14:22
Оценка:
Здравствуйте, DPP, Вы писали:

DPP>обидно... VirtualTreeView на картинке такой красивый...


Чтоб он был такой красивый, его придется красиво рисовать
Калабухов А.В.
Re[3]: Разноцветные строчки в TreeView
От: Diouzshev Россия  
Дата: 23.12.03 08:51
Оценка:
Hello, DPP!
You wrote on Mon, 22 Dec 2003 14:19:41 GMT:

D> Здравствуйте, Diouzshev, Вы писали:


D>> Посмотреть как сделано в примере c:\Program

D>> Files\Borland\CBuilder6\Examples\CustomDraw\
D> да... и куда я смотрел... ведь уже начинал разбираться с этим
D> примером...
D> спасибо, что напомнили про него.

D>> или сходить на delphi-gems.com и попробовать VirtualTreeView.

D> а не подскажите ли как (и возможно ли?) этот компонент подключить к
D> CBuilder 6 ? я пробовал, но не получилось инсталлировать этот
D> компонент, хотя другие компоненты инсталлируются без проблем. Я
D> скачал "VirtualTreesBCB5-6 Packages.zip" и "VirtualTreeview.zip".
D> Этого достаточно? Что-то еще может надо? На сайте написано (если я
D> правильно понял), что в "VirtualTreeview.zip" включено все
D> необходимое для BCB6.
D> перед тем как это отправить узрел что ему нужен Theme Manager.
D> скачал. как и куда его пихать не могу понять.
Просто класть на форму.

Я не ставил VTV, к сожалению, ни на BD ни на BCB, поэтому толком отсоветовать ничего не могу ((

With best regards, Alexander Diouzshev-Maltsev.
Posted via RSDN NNTP Server 1.8 beta
Re[4]: Разноцветные строчки в TreeView
От: DPP Россия  
Дата: 23.12.03 13:47
Оценка:
Здравствуйте, Diouzshev, Вы писали:

D>> Здравствуйте, Diouzshev, Вы писали:


D>>> или сходить на delphi-gems.com и попробовать VirtualTreeView.

D>> а не подскажите ли как (и возможно ли?) этот компонент подключить к
D>> CBuilder 6 ? я пробовал, но не получилось инсталлировать этот
D>> компонент, хотя другие компоненты инсталлируются без проблем. Я
D>> скачал "VirtualTreesBCB5-6 Packages.zip" и "VirtualTreeview.zip".
D>> Этого достаточно? Что-то еще может надо? На сайте написано (если я
D>> правильно понял), что в "VirtualTreeview.zip" включено все
D>> необходимое для BCB6.
D>> перед тем как это отправить узрел что ему нужен Theme Manager.
D>> скачал. как и куда его пихать не могу понять.

D>Просто класть на форму.

Ну дак для этого надо его сначала установить... А не выходит никак...

D>Я не ставил VTV, к сожалению, ни на BD ни на BCB, поэтому толком отсоветовать ничего не могу ((

жаль ... А я никак не могу разобраться...
Re[3]: Разноцветные строчки в TreeView
От: Denis_TST Россия www.transsys.ru
Дата: 07.01.04 23:26
Оценка:
Здравствуйте, DPP, Вы писали:

DPP>Здравствуйте, Diouzshev, Вы писали:


D>>Посмотреть как сделано в примере

D>>c:\Program Files\Borland\CBuilder6\Examples\CustomDraw\
DPP>да... и куда я смотрел... ведь уже начинал разбираться с этим примером...
DPP>спасибо, что напомнили про него.

D>>или сходить на delphi-gems.com и попробовать VirtualTreeView.

DPP>а не подскажите ли как (и возможно ли?) этот компонент подключить к CBuilder 6 ? я пробовал, но не получилось инсталлировать этот компонент, хотя другие компоненты инсталлируются без проблем. Я скачал "VirtualTreesBCB5-6 Packages.zip" и "VirtualTreeview.zip". Этого достаточно? Что-то еще может надо? На сайте написано (если я правильно понял), что в "VirtualTreeview.zip" включено все необходимое для BCB6.
DPP>перед тем как это отправить узрел что ему нужен Theme Manager. скачал. как и куда его пихать не могу понять.
— на С++Buildere не пишу, но на Delphi сделал бы так:

1)Theme Manager нужно тоже установить как компонет, либо добавить его исходники в пути
(можно попробовать прямо в каталог с VirtualTreeview)
чтобы при сборке VirtualTreeview находил те модули которые ему нужны.

2)попробовать добавить в пакет VirtualTreeview модули от Theme Manager'а
( ThemeSrv, TMSchema, UxTheme)
3) или еще так :
вот фрагмент из VirtualTreeview .pas
  {$ifdef ThemeSupport}
    {$ifndef COMPILER_7_UP}
      , ThemeSrv, TMSchema, UxTheme  // Windows XP themes support. Get these units from www.delphi-gems.com.
    {$else}
      , Themes, UxTheme
    {$endif COMPILE_7_UP}
  {$endif ThemeSupport}

т.е. если закоменитровать //{$define ThemeSupport}
то можно и без Theme Manager собирать
а вообще VirtualTreeview это
... << RSDN@Home 1.1.0 stable >>
Re[5]: Разноцветные строчки в TreeView
От: damiryaka  
Дата: 12.11.05 12:55
Оценка:
Пожалуйста, подскажите кто-нить, что я делаю неправильно.
Пытаюсь установить компонент VirtualTreeView в Borland С++ Builder 6.
При компиляции выдаёт ошибку, что не может найти VirtualTreeView.bpi
где его искать или как его сотворить?
P.S. В Delphi всё устанавливается без проблем.
Скачивал с сайта soft-gems.net, там есть дистрибутив, который сам
должен всё поставить и скомпилировать, но он компилирует только для Delphi,
а для Builder'а не получается.
в логе установщика вот такое сообщение.
Fatal: Unable to open file 'VIRTUALTREESC6.BPI'
то же самое, когда пытаюсь ручками скомпилировать.
пробовал установить компонент ThemeManager, скачанный с того же сайта.
С ним такая же беда.
Fatal: Unable to open file 'ThemeManagerC6.BPI'.
Понимаю, что проблема не в компоненте, а в моих действиях.
Нашёл похожую проблему на сайте community.borland.com :
Article #28154: Linker Fatal Error unable to locate BPI file.
так и не понял, что нужно делать.

ткните меня носом в мою ошибку, ПЛЗ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.