Форум: "Начинающим";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.042 c