Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Pascal и Delphi / Иллюстрированный самоучитель по Delphi 6 / Часть III. Компоненты и программы / Использование компонентов общего назначения / Компоненты страницы Win32 /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


THeaderControl - управляющий заголовок - Программирование от RIN.RU
THeaderControl - управляющий заголовок

Компонент THeaderControl представляет собой многоколончатый заголовок с регулируемыми размерами колонок (секций). Каждая колонка (секция) заголовка может содержать текст и/или графику. Компонент способен обрабатывать событие onResize, которое возникает при каждом изменении размеров любой секции. В ходе обработки этого события программа обычно соответствующим образом изменяет линейные размеры столбцов таблицы или подобной структуры, с которой связан компонент.


В программе, окно которой показано на рис. 18.30, компонент THeaderControl используется для управления положением и линейными размерами трех других компонентов. Для реализации программы выполните следующее:


  • Положите на пустую форму компоненты THeaderControl, ТЕ-dit, TMemo и TButton. По умолчанию HeaderControll .Align =alTop - убедитесь в этом и установите свойство, если это не так. Положение и размеры других компонентов не имеют значения.

  • Создайте такие обработчики событий OnCreate для формы Form1, а также OnResize и OnSectionResize для компонента HeaderControll:

    Рис. 18.30. Пример использования компонента THeaderControl
    для управления положением и размерами других компонентов


    const
    Delta = 10;// Зазор между границами заголовка и компонентами
    procedure TFormI.FormCreate(Sender: TObject);
    var
    HSection: THeaderSection;
    k: Integer;
    begin
    // Создаем три секции заголовка:
    with HeaderControll do
    for k := 0 to 2 do
    begin
    HSection := Sections.Add;
    HSection.Text := 'Секция ?' + IntToStr(k);
    HSection.Width := Forml.Width div 3;
    HSection.MinWidth := 3 * Delta;
    end;
    end;


    procedure Tform1.HeaderControllResize(Sender: TObject);
    // Устанавливает положение и размеры компонентов
    begin
    with HeaderControll do
    begin
    Editl.Left := Delta;
    Editl.Top := HeaderControll.Height + 1;
    Editl.Width := Sections.Items[0].Width - 2 * Delta;
    Memol.Left := Sections.Items[1].Left + Delta;
    Memol.Top := HeaderControll.Height + 1;
    Memol.Width := Sections.Items[1].Width - 2 * Delta;
    Buttonl.Left := Sections.Items[2].Left + Delta;
    Buttonl.Top := HeaderControll.Height + 1;
    Buttonl.Width := Sections.Items[2].Width - 2 * Delta;
    end
    end;


    procedure TFormI.HeaderControllSectionResize(HeaderControl: THeaderControl;
    Section: THeaderSection);
    begin
    HeaderControllResize(Self)
    end;





He забудьте определить в области видимости обработчиков FormCreate И HeaderControllResize глобальную константу Delta.


Для заголовка создается объект класса THeadersections, определяющий секции заголовка. Его свойство


property Items[Index: Integer]: THeaderSection;


открывает доступ к индексированным объектам-секциям класса THeaderSection.


Свойства класса THeaderSection:
property Alignment: TAlignment;Определяет выравнивание текста: taLeftJustify - прижат влево; taCenter - центрирован по горизонтали; taRight Justify - прижат вправо
property AllowClick:.Boolean;Разрешает/запрещает генерацию события OnSectionClick при щелчке по секции
property Left: Integer;Определяет положение левой границы секции относительно границ компонента (в пикселях)
property MaxWidth: Integer;Определяет максимальную ширину секции в пикселях
property MinWidth: Integer;Определяет минимальную ширину секции в пикселях
property Right: Integer;Определяет положение правой границы секции относительно границ компонента (в пикселях)
THeaderSectionStyle = (hsText, hsOwnerDraw) ;property Style: THeaderSectionStyle;Определяет способ формирования секции: hsText - секция содержит только текст и изображается автоматически; hsOwnerDraw - секция прорисовывается программой
Property Width: Integer;Содержит текущую ширину секции в пикселях



Метод function THeaderSections.Add: THeaderSection; добавляет очередную секцию заголовка. Некоторые свойства класса THeaderSection:


property AllowClick: Boolean-property DisplayName: String; Если содержит True, разрешает щелкнуть по секции заголовка как по кнопке. В этом случае управление передается в обработчик события OnSectionClick Имя заголовка секции
property Imagelndex: TImageIndex;Указывает индекс изображения из хранилища images, которое будет появляться следом за текстом заголовка
property MaxWidth: Integer;Определяет максимальную и минимальную ширину секции
property MinWidth: Integer; type THeaderSectionStyle == (hsText, hsOwnerDraw);Определяет тип секции: hsText - секция содержит только текст; hsOwnerDraw - секция нуждается в программной прорисовке
property Style: THeaderSectionStyle; property Text: String;Содержит текст секции



Свойства Компонента THeaderControl:
property Canvas: TCanvas;С помощью этого свойства можно изображать графику в секциях заголовка
property HotTrack: Boolean;Разрешает/запрещает цвето выделение секции, над которой располагается указатель мыши
property Sections: THeaderSections;Содержит секции заголовка



Для компонента определены следующие события:


TDrawSectionEvent = procedure( Header-Control: THeaderControl; Section: THeaderSection; const Rect: TRect; Pressed: Boolean) of object; property OnDrawSection: TDrawSectionEvent;Возникает при необходимости прорисовать секцию, для которой установлен СТИЛЬ hsOwnerDraw: Section - объект-секция; Rect - прямоугольник прорисовки;Pressed -признак нажатой кнопки мыши
property OnResize: TNotifyEvent; TSectionNotifyEvent = procedure( HeaderControl: THeaderControl; Section: THeaderSection) of object; property OnSectionCli.ck: TSectionNotifyEvent;Возникает при изменении размеров компонента возникает при щелчке мышью по секции Section  
TSectionNotifyEvent = procedure( HeaderControl: THeaderControl; Section: THeaderSection) of object; property OnSectionResize: TSectionNotifyEvent;Возникает при изменении размеров
секции Section  
TSectionTrackState = (tsTrackBegin, tsTrackMove, tsTrackEnd) ; TSectionTrackEvent = procedure( HeaderControl: THeaderControl; Section: THeaderSection; Width: Integer; State: TSectionTrackState) of objects;
property OnSectionTrack: TSectionTrackEvent;
Возникает при изменении размеров секции и позволяет обработать три возможных состояния: tsTrackBegin - начало перемещения границы;tsTrackMove - идет перемещение границы; tsTrackEnd - конец перемещения границы



 8  Комментарии к статье  8 8  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь