Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2010, 12:22   #1
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию TreeViewer и OnCustomDrawItem

Хотелось цвет выделения поменять делаю вот так:
Код:
procedure TMainForm.TVCathedrBrowserCustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
  NodeRect:TRect;
begin
  If not Node.Selected then
    Exit;
  with TTreeView(Sender).Canvas do
  begin
    NodeRect:=Node.DisplayRect(True);
    Brush.Color:=clBlue;
    Canvas.FillRect(NodeRect);
    TextOut(NodeRect.Left,NodeRect.Top,Node.Text);
  end;
end;
Все бы хорошо, но вот еще попутно у других Нодов (не всех) текст становиться жирным по не понятным мне причинам.. =( В чем фокус???? Заранее спасибо!!!!
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 15.01.2010, 12:30   #2
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Я в таких случаях обычно не заморачиваюсь и в конце процедуры прорисовки просто добавляю Sender.Canvas.Font.Assign( Self.Font ), тогда все отображается правильно.
maxionans вне форума Ответить с цитированием
Старый 15.01.2010, 17:26   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вы немного перемудрили...
Код:
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if cdsSelected in State then
with Sender.Canvas do
begin
Font.Color:=clYellow;
//Font.Style:=[fsBold];
Brush.Color:=clRed;
end else
Font.Color:=clRed;
end;
Делать разные стили для выделенных и невыделенных нодов не стоит - у них разная ширина канвы и поэтому при переходе выделения у выбранной ранее ноды останется окрашенной задняя часть.
(Попробуйте снять коммент и посмотрите сами)

Последний раз редактировалось mihali4; 15.01.2010 в 23:39.
mihali4 вне форума Ответить с цитированием
Старый 17.01.2010, 21:58   #4
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

mihali4
Все понял спасибо =))
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц