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

THeaderControl

- визуальный компонент
Компоненты JS+
Определяет горизонтальную панель заголовков для вертикальных секций.

Создание объекта

hdrCntObj=new THeaderControl(Parent);

Собственные свойства
Свойство Тип Описание
CheckBoxes Boolean отображать переключатели в заголовках секций
DragReorder Boolean разрешить перетаскивание заголовков
FullDrag Boolean разрешить полную отрисовку перемещаемого заголовка секции
HotTrack Boolean подсвечивать заголовки секций при наведении указателя мыши
Images TImageList список изображений в заголовках секций
NoSizing Boolean запретить изменение размеров секций
OverFlow Boolean отображать кнопку пролистывания заголовков
Sections[] THeaderSection индексированный список заголовков секций
Style Enum стиль заголовков секций (см. ниже)
Только чтение
Canvas TCanvas дескриптор графической канвы

Свойство Style
hsButtons заголовки секций представлены кнопками (по умолчанию)
hsFlat плоские заголовки секций

Стандартные свойства

Стандартные методы

Собственные события
Событие Описание
OnDrawSection необходимо отрисовать заголовок секции, для которой установлен стиль hsOwnerDraw
OnSectionCheck произошел клик мышью по переключателю в заголовке секции
OnSectionClick произошел клик мышью по заголовку секции
OnSectionDrag заголовок секции перемещен в новую позицию
OnSectionEndDrag заголовки секций перестроены после перемещения одного из них в новую позицию
OnSectionResize изменились размеры секции
OnSectionTrack происходит изменение размеров секции

Стандартные события

Пример (JS+)
// Главная форма
frm=new TForm();
frm.Caption="JS+ - визуальный компонент THeaderControl";
frm.Width =600;
frm.Height=450;

// Строка состояния
stb=new TStatusBar(frm);
stb.SimpleText=
" Границы между секциями заголовка"+
" и сами заголовки интерактивны";

// Охватывающая панель
pn1=new TPanel(frm);
pn1.BevelInner=bvNone;
pn1.BevelOuter=bvLowered;
pn1.Top=100;
pn1.Height=frm.ClientHeight-pn1.Top*2;

// HeaderControl
hdc=new THeaderControl(pn1);
hdc.HotTrack=true;
hdc.Left=hdc.Top=1;
hdc.Height=TextHeight("Q")+6;
hdc.OnSectionClick=hdc_SectionClick;
hdc.OnSectionTrack=hdc_SectionTrack;

for (i=l=0;i<3;i++) {
  // Секция HeaderControl
  hds=new THeaderSection(hdc);
  hds.Text="Секция "+(i+1);
  hds.Width=hds.MinWidth=frm.TextWidth(hds.Text)+20;
  hds.MaxWidth=hds.Width*2;
  hds.numTag=i;

  // Панель под секцией
  pn2=hds.cmpTag=new TPanel(pn1);
  pn2.Left=hdc.Left+l;
  pn2.Top =hdc.Top+hdc.Height;
  pn2.Width =hds.Width;
  pn2.Height=pn1.ClientHeight-hdc.Height-hdc.Top*2;
  pn2.Color=((i==1) ? 0xD9D9D9 : 0xF0F0F0).toTColor();
  l+=(pn2.numTag=pn2.Width);
}
hdc.Width=l;

pn1.ClientWidth=hdc.Width+hdc.Left*2;
pn1.Left=(frm.ClientWidth-pn1.Width)/2;

frm.ShowModal();

// Обработчик события OnSectionClick
function hdc_SectionClick(hdc,hds)
{
  // Исходная ширина секции
  hds.Width=hds.cmpTag.numTag;

  // Обработать новую ширину секции
  hdc_SectionTrack(hdc,hds,tsTrackEnd);
}

// Обработчик события OnSectionTrack
function hdc_SectionTrack(hdc,hds,State)
{
  var d,i,j=hds.numTag,l,n=hdc.Sections.Count;
  var pn1=hdc.Parent,frm=pn1.Parent,pn2=hds.cmpTag;

  if ((hds.Width<hds.MinWidth) || (hds.Width>hds.MaxWidth))
    return;

  // Приращение ширины секции
  d=hds.Width-pn2.Width;

  // Новая ширина панели под секцией
  pn2.Width=hds.Width;

  // Подравнять позиции панелей под секциями
  for (i=j+1;i<n;i++)
    hdc.Sections[i].cmpTag.Left+=d;

  // Подравнять ширину охватывающей панели
  for (i=l=0;i<n;i++)
    l+=hdc.Sections[i].cmpTag.Width;
  pn1.ClientWidth=(hdc.Width=l)+hdc.Left*2;

  // Центрировать охватывающую панель
  if (State==tsTrackEnd) {
    pn1.Left=(frm.ClientWidth -pn1.Width )/2;
    pn1.Top =(frm.ClientHeight-pn1.Height)/2;
  }
}
Совместимость
C++ Builder/Delphi
См. также
JS+Руководство пользователя
Адрес этой страницы: http://jsplus.ru/MANUAL/JSPlus/Component/THeaderControl.htm
© 2024,