Delphi 5. Среда разработки


         

Фреймы


В Delphi 5 имеется одно очень полезное нововведение, позволяющее существенно облегчить  повторное использование форм. Эта версия Delphi позволяет создавать так называемые фреймы, представляющие собой визуальные контейнеры, которые можно в дальнейшем размещать на формах. Соответствующий эксперт имеется в репозитарии объектов Delphi 5. Выбрав его пиктограмму, можно создать наследник класса TFrame, на котором далее можно размещать интерфейсные элементы и создавать обработчики событий для них точно так же, как это делается в случае обычной формы (рис. 21).

Рисунок 21.  Фрейм на этапе разработки

После того как в проекте уже имеются все необходимые фреймы, можно размещать их на формах.

Это делается путем выбора со страницы Standard палитры компонентов "компонента" Frames. При этом появляется список доступных в данном проекте фреймов, из которого следует выбрать нужный. Далее можно изменять свойства как самого фрейма, так и входящих в него компонентов (рис. 22).

Рисунок 22.  Приложение, использующее фрейм: можно менять свойства компонентов фрейма.

При размещении фрейма на форме создается наследник класса исходного фрема (это наиболее важное отличие фреймов от шаблонов компонентов, использование которых базируется на копировании). Это означает, что при изменении свойств компонентов в исходном фрейме происходит изменение свойств его наследников. С другой стороны, свойства фремов-копий можно и переопределить.

Что касается обработчиков событий компонентов, содержащихся в фреймах-копиях, они по определению изначально содержат лишь ссылку на обработчик того же события исходного фрейма (в отличие от шаблонов, при использовании которых код целиком копируется в модуль, связанный с формой). Однако этот код можно заменить на другой или дополнить своим.

procedure TForm1.Frame22RadioGroup1Click(Sender: TObject);



begin

  Frame22.RadioGroup1Click(Sender);//original code

  ShowMessage('Hello!'); //custom code

end;

Отметим также, что при необходимости использования одного и того же фрейма в нескольких проектах можно зарегистрировать его в палитре компонентов. Для этого достаточно создать стандартную процедуру регистрации, аналогичную процедуре регистрации компонента:

unit fr2;

interface

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  StdCtrls, ExtCtrls, ImgList, ComCtrls;

type  TFrame2 = class(TFrame)

    ImageList1: TImageList;

    RadioGroup1: TRadioGroup;

    ListView1: TListView;

     procedure RadioGroup1Click(Sender: TObject);

   private

    { Private declarations }

  public

 { Public declarations }

  end;

procedure Register; //опишем процедуру регистрации в секции интерфейса

implementation

{$R *.DFM}

procedure TFrame2.RadioGroup1Click(Sender: TObject);

begin

  case RadioGroup1.ItemIndex of

    0:   ListView1.ViewStyle:=vsIcon;

    1:   ListView1.ViewStyle:=vsSmallIcon;

    2:   ListView1.ViewStyle:=vsList;

    3:   ListView1.ViewStyle:=vsReport;

  end;

end;

procedure Register; //реализация процедуры регистрации фрейма

begin

  RegisterComponents('FramePage',[TFrame2]);

end;

Затем можно выбрать из меню пункт Component/Install Component, выбрать "пакет" для установки компонента и скомпилировать его. В результате фрейм окажется на указанной в процедуре регистрации странице палитры компонентов.



Содержание раздела