Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.29;
Скачать: CL | DM;

Вниз

TreeView   Найти похожие ветки 

 
Neket   (2006-10-05 16:41) [0]

Народ подскажите пожалуйста.
1.Возможно ли в САБЖ разные путкты ветви сделать разными шрифтами если да то как?
2. Если я использую в САБЖ ImageList то когда я выделяю разные пункты деревьев то у меня отображается катинка рядом с названиями этих пунктов которая в ImageList нулевая, а не та которая должна быть если элемент не выделен. Как отключить эту неприятную функцию.
(Объяснил криво, не спорю. Если возникнут вопросы то с радостью отвечу.)
Help Plzzzz......


 
Neket   (2006-10-05 17:08) [1]

С вопросом 2 разобрался. Подскажите как со шрифтами можно работать?


 
Джо ©   (2006-10-05 17:13) [2]

OnCustomDrawItem
OnAdvancedCustomDrawItem


 
ProgRAMmer Dimonych   (2006-10-05 17:18) [3]

Из одного справочника...

Как сделать так, чтобы в TreeView текущий Node выделялся другим шрифтом, типа Underline и т.д.?

-----------------------------------------------------------------------------
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if cdsSelected in State then
begin
 Sender.Canvas.Font.Style := Sender.Canvas.Font.Style + [fsUnderline];
end;
end;

Или ещё что-то похожее...

Хочется выделять некотоpые стpочки в TTreeView жиpным или бледным. Как?

-----------------------------------------------------------------------------
procedure SetNodeState(node :TTreeNode; Flags: Integer);
var
tvi: TTVItem;
begin
FillChar(tvi, Sizeof(tvi), 0);
tvi.hItem := node.ItemID;
tvi.mask := TVIF_STATE;
tvi.stateMask := TVIS_BOLD or TVIS_CUT;
tvi.state := Flags;
TreeView_SetItem(node.Handle, tvi);
end;  

И вызываем:

----------------------------------------------------------------------------
SetNodeState(TreeView1.Selected, TVIS_BOLD); // Текст жиpным
SetNodeState(TreeView1.Selected, TVIS_CUT); // Иконкy бледной  

(Ctrl+X)

----------------------------------------------------------------------------
SetNodeState(TreeView1.Selected, TVIS_BOLD or TVIS_CUT); // Текст жиpным
SetNodeState(TreeView1.Selected, 0); // Hи того, ни дpyгого  

Когда-то (мечтательно закатив глаза в потолок) в API было еще и TVIS_DISABLE. Снесли собаки. А pекомендyемyю стилистикy yпотpебления этого добpа смотpи в MS Internet News.

Может быть, с изменениями подойдёт...


 
Neket   (2006-10-05 17:18) [4]

А можно немного поподробнее.
Plzzz....


 
Neket   (2006-10-05 17:20) [5]

Упс... Сори... Все спасибо..


 
Neket   (2006-10-05 17:22) [6]

А тип TTVItem в каком модуле находится?


 
ProgRAMmer Dimonych   (2006-10-05 17:26) [7]

Я тут глянул, кажись на сях пример. В VCL справке есть ссылки на типы, названия которых начинаются с TTV, но в соответствующих страницах эти неприличные слова присутствуют только в сишном примере. В Дельфовом - TTreeNode. Вот что значит из справочника копировать ([3])...


 
Neket   (2006-10-05 17:30) [8]

Я нашел что этот тип содержится в CommCtrls но когда я подключаю этот модуль то он пишет что CommCtrls.dcu не найден.


 
ProgRAMmer Dimonych   (2006-10-05 17:37) [9]

А TTreeNode получится?


 
Neket   (2006-10-05 17:43) [10]

Всмысле?


 
ProgRAMmer Dimonych   (2006-10-05 17:45) [11]

Ну этот tvi заменить как-нибудь нодом...


 
Neket   (2006-10-05 17:57) [12]

Все переустановил дельфи и все заработало. спасибо за помошщь.


 
ProgRAMmer Dimonych   (2006-10-05 18:34) [13]

> [12]
И не лень же было!!! :)


 
Neket   (2006-10-06 16:53) [14]

Вновь возвращаюсь к этой теме. А как можно цвет поменять. Ну к примеру чтобы текст был не черным а серым?


 
ProgRAMmer Dimonych   (2006-10-06 18:07) [15]

Из того же справочника...

Как сделать так, чтобы в TreeView текущий Node выделялся другим шрифтом, типа Underline и т.д.?

----------------------------------------------------------------------------
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if cdsSelected in State then
begin
 Sender.Canvas.Font.Style := Sender.Canvas.Font.Style + [fsUnderline];
end;
end;


 
Neket   (2006-10-07 14:48) [16]

Точнооо!!!
Если использовать  Sender.Canvas.Font.Color то можно менять цвет.
Спасибо. Очень помог.


 
ProgRAMmer Dimonych ©   (2006-10-07 20:11) [17]

Не за что. Помогать начинающим - священный долг программиста... Будут вопросы - сразу сюда...


 
Neket   (2006-10-11 10:01) [18]

И вновь проблемка.
На этапе формирования дерева я ветвям первого уровня устанавливаю жирным шрифтом:

procedure SetNodeState(node :TTreeNode; Flags: Integer);
var
tvi: TTVItem;
begin
FillChar(tvi, Sizeof(tvi), 0);
tvi.hItem := node.ItemID;
tvi.mask := TVIF_STATE;
tvi.stateMask := TVIS_BOLD or TVIS_OVERLAYMASK;
tvi.state := Flags;
TreeView_SetItem(node.Handle, tvi);
end;
...............
for k:=Low(sitemass[i].bc) to High(sitemass[i].bc) do if sitemass[i].bc[k].Build=0 then SetNodeState(MyTreeNode2, TVIS_BOLD);

И все нормально работает.

Но если я начинаю менять цвет некоторых пунктов в обработчике TreeView1CustomDrawItem то "Жирность" некоторых пунктов пропадает*.
If (SiteMass[i].Site_Name=Node.Text) and (CompareText(SiteMass[i].Etap,"55")=0) then node.TreeView.Canvas.Font.Color:=CLRed;

* Замечено что жирность пропадает только следующего пункта после замены предыддущего.
____Пункт1
|
|____Пункт2
|
|____Пункт3
|
|____Пункт4
|
|____Пункт5
Вот если менять цвет  В "Пункте1" или "Пункте4" то  в "Пункте2" или "Пункте5"  жирность пропадает.


 
Neket   (2006-10-11 10:37) [19]

Вот если менять цвет  В "Пункте1" или "Пункте4" то  в "Пункте2" или "Пункте5"  жирность пропадает. ---- Не правельно
Вот если менять цвет  В "Пункте1" или "Пункте3" то  в "Пункте2" или "Пункте4"  жирность пропадает.  ---- Правельно
Сори.... Ошибся не много :-)



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

Текущий архив: 2006.10.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.164 c
2-1160412563
Степан
2006-10-09 20:49
2006.10.29
И зачем нужна такая оптимизация...


15-1160447688
Slider007
2006-10-10 06:34
2006.10.29
С днем рождения ! 10 октября


2-1160909998
Вася
2006-10-15 14:59
2006.10.29
шестнадцатиричные значения ключей в реестре


2-1160791839
Incognito
2006-10-14 06:10
2006.10.29
Дождаться завершения выполнения другой функции


15-1160234043
moccom
2006-10-07 19:14
2006.10.29
COM