JS+
Усиленный язык сценариев для Windows
с возможностью встраивания
в ваши приложения
О языке JS+ Справочник Скачать JS+ DLL
Контакты
СПРАВОЧНИК ПО ЯЗЫКУ JS+ Содержание

OnAdvancedCustomDrawItem

- событие TTreeView
Компонент TTreeView
Наступает перед отрисовкой узла.
Синтаксис
function OnAdvancedCustomDrawItem(
  Sender,
  Node,
  State,
  Stage,
  PaintImages,
  DefaultDraw
);

Параметры
Параметр Тип Описание
Sender TTreeView дескриптор компонента TTreeView
Node TTreeNode дескриптор узла
State Enumset состояние узла (см. ниже)
Stage Enum этап отрисовки компонента (см. ниже)
PaintImages TBoolean разрешить отрисовку пиктограмм узлов.
PaintImages.Value=true - разрешить (значение по умолчанию)
DefaultDraw TBoolean разрешить отрисовку по умолчанию.
DefaultDraw.Value=true - разрешить (значение по умолчанию)

Параметр State
Значение Описание
cdsSelected узел выделен
cdsDefault узел является элементом по умолчанию
cdsDisabled узел недоступен
cdsFocused узел имеет фокус ввода
cdsGrayed узел неактивен
cdsHot узел находится под указателем мыши
cdsIndeterminate узел находится в неопределенном состоянии
cdsMarked узел отмечен

Параметр Stage
Значение Описание
cdPreErase перед стиранием
cdPrePaint перед рисованием
cdPostErase после стирания
cdPostPaint после рисования
Пример (JS+)
// Главная форма
frm=new TForm();
frm.Caption="JS+ - событие TTreeView OnAdvancedCustomDrawItem";
frm.Width =450;
frm.Height=300;

// Строка состояния
stb=new TStatusBar(frm);
stb.SimpleText=" Оформление узлов в стиле WEB";

// TreeView
trv=new TTreeView(frm);
trv.BorderStyle=bsSingle;
trv.Left=trv.Top=10;
trv.Width=frm.ClientWidth-trv.Left*2;
trv.Height=stb.Top-trv.Top*2;
trv.OnAdvancedCustomDrawItem=trv_AdvCustomDrawItem;
trv.OnGetImageIndex=trv_GetImageIndex;
trv.OnGetSelectedIndex=trv_GetSelectedIndex;

// Список изображений
trv.Images=new TImageList(trv);
icn=new TIcon();
for (i=0;i<3;i++) {
  icn.LoadFromFile(JSPlus.HelpDir+"IMAGE\\TTreeView\\"+i+".ico");
  trv.Images.AddIcon(icn);
}
icn.Delete();

// Заполнение дерева
for (i=1;i<=5;i++) {
  tn1=new TTreeNode(trv);
  tn1.Text="Узел "+i;
  for (j=1;j<=i;j++) {
    tn2=new TTreeNode(tn1);
    tn2.Text="Узел "+i+"-"+j;
  }
}

trv.SetFocus();
frm.ShowModal();

// Обработчик события OnAdvancedCustomDrawItem
function trv_AdvCustomDrawItem(trv,trn,state,stage,PaintImages,DefaultDraw)
{
  var cnv=trv.Canvas,rct=trn.DisplayRect(true);

  cnv.Font.Name=trv.Font.Name;
  cnv.Font.Size=trv.Font.Size;

  // Если узел выбран
  if (state & cdsSelected) {
    PaintImages.Value=
    DefaultDraw.Value=true;// Необязательно
    return;
  }

  // Очистить фон
  cnv.Brush.Style=bsSolid;
  cnv.Brush.Color=trv.Color;
  cnv.FillRect(rct);

  // Вывести текст
  cnv.Font.Color=clBlue;
  cnv.Font.Style=fsUnderline;
  cnv.SetBkMode(TRANSPARENT);
  cnv.TextOut(
    rct.Left+(rct.Width() -cnv.TextWidth (trn.Text))/2+1,
    rct.Top +(rct.Height()-cnv.TextHeight(trn.Text))/2-1,
    trn.Text
  );

  PaintImages.Value=
  DefaultDraw.Value=true;// Необязательно
}

// Обработчик события OnGetImageIndex
function trv_GetImageIndex(trv,trn)
{
  if (trn.HasChildren) {
    trn.ImageIndex=(trn.Expanded) ? 1 : 0;
    return;
  }
  trn.ImageIndex=2;
}

// Обработчик события OnGetSelectedIndex
function trv_GetSelectedIndex(trv,trn)
{
  trn.SelectedIndex=trn.ImageIndex;
}
Совместимость
C++ Builder/Delphi
JS+Руководство пользователя
Адрес этой страницы: http://jsplus.ru/MANUAL/JSPlus/Component/TTreeView/Event/OnAdvancedCustomDrawItem.htm
© 2024,