2.2.1 Визуальная компонентность
Данный подход является логическим развитием объектно-ориентированного программирования (ООП). Каждый компонент имеет свои события (events), методы (methods) и свойства (properties). Методы и события пришли из объектно-ориентированного программирования, а свойства являются привилегией компонентного подхода. Свойства позволяют изменить состояние компонента, причем как динамически - во время работы программы, так и статически - визуально во время разработки. Естественно, что компоненты имеет все те особенности, что и объекты в объектно-ориентированном программировании - наследование, полиморфизм и инкапсуляция. Таким образом, описание типичного компонента выглядит следующим образом:
TBitBtn = class(TButton)
private
FCanvas: TCanvas;
FGlyph: Pointer;
FStyle: TButtonStyle;
FKind: TBitBtnKind;
FLayout: TButtonLayout;
FSpacing: Integer;
FMargin: Integer;
IsFocused: Boolean;
FModifiedGlyph: Boolean;
procedure DrawItem(const DrawItemStruct: TDrawItemStruct);
procedure SetGlyph(Value: TBitmap);
function GetGlyph: TBitmap;
function GetNumGlyphs: TNumGlyphs;
procedure SetNumGlyphs(Value: TNumGlyphs);
procedure GlyphChanged(Sender: TObject);
function IsCustom: Boolean;
function IsCustomCaption: Boolean;
procedure SetStyle(Value: TButtonStyle);
procedure SetKind(Value: TBitBtnKind);
function GetKind: TBitBtnKind;
procedure SetLayout(Value: TButtonLayout);
procedure SetSpacing(Value: Integer);
procedure SetMargin(Value: Integer);
procedure CNMeasureItem(var Message: TWMMeasureItem); message CN_MEASUREITEM;
procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED;
procedure WMLButtonDblClk(var Message: TWMLButtonDblClk);
message WM_LBUTTONDBLCLK;
protected
procedure CreateHandle; override;
procedure CreateParams(var Params: TCreateParams); override;
function GetPalette: HPALETTE; override;
procedure SetButtonStyle(ADefault: Boolean); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Click; override;
published
property Cancel stored IsCustom;
property Caption stored IsCustomCaption;
property Default stored IsCustom;
property Enabled;
property Glyph: TBitmap read GetGlyph write SetGlyph stored IsCustom;
property Kind: TBitBtnKind read GetKind write SetKind default bkCustom;
property Layout: TButtonLayout read FLayout write SetLayout default blGlyphLeft;
property Margin: Integer read FMargin write SetMargin default -1;
property ModalResult stored IsCustom;
property NumGlyphs: TNumGlyphs read GetNumGlyphs write SetNumGlyphs stored IsCustom default 1;
property ParentShowHint;
property ShowHint;
property Style: TButtonStyle read FStyle write SetStyle default bsAutoDetect;
property Spacing: Integer read FSpacing write SetSpacing default 4;
property TabOrder;
property TabStop;
property Visible;
property OnEnter;
property OnExit;
end;
В данном примере описан стандартный компонент TBitBtn, наследующий от стандартного класса Tbutton - стандартная кнопка, используемая повсеместно в Windows. Он имеет четыре секции в описании - private, protected, published и public. Данные секции регламентируют доступ к методам, полям и свойствам, находящимся в них для других компонент и для программ пользователя.
2.2.2 Многократное использование кода
Термин «многократное использование кода» (code reuse) говорит сам за себя. Данная технология подразумевает возможность написания таких участков программ, которые затем с небольшими изменениями (или совсем без изменений) могут быть использованы в другой программе. Нельзя сказать, что такой подход является привилегией средств быстрой разработки приложений - еще раньше программисты поняли преимущества возможности выделения универсальных и часто используемых подпрограмм в отдельные библиотеки (модули). Таким образом появлялись библиотеки подпрограмм для различных языков программирования, работающие с графикой, базами данных, реализующие многие математические функции и прочие универсальные задачи. Но именно в RAD–средствах технология многократного использования кода приобрела законченный и целостный вид - существует широкий набор стандартных компонентов, которые могут использоваться во многих программах различного типа, а при необходимости получения какого-либо компонента с отличными от стандартных возможностями, его написание облегчается из-за механизма наследования от уже существующих компонентов их свойств и методов.
Сложность данного подхода в изменении идеологии программирования - разработчик должен изначально ориентироваться на создания кода, который затем можно будет многократно использовать. Особенно актуальна эта проблема для групп разработчиков. В этом случае необходимо мыслить глобально, с учетом требований всех членов группы и перспективы дальнейших разработок.
Кроме описанных особенностей средств быстрой разработки приложений, следует отметить наличие определенного инструментария, который призван помогать разработчику при создании стандартных элементов приложений. Эти средства автоматизируют рутинную работу при генерации например графического интерфейса. В различных средах они носят различное наименование - expert и master в средах фирмы Borland и wizard в средах, разработанных фирмой Microsoft.
2.3 Создание программ в среде DelphiБлагодаря всем вышеописанным преимуществам технологии быстрого проектирования приложений, создание программ в среде Delphi является удобным и необременительным делом. Для генерации программы первоначально необходимо создать файл проекта, имя которого будет совпадать с именем будущей программы. Причем Delphi сама сделает каркас программы - пользователю необходимо только выбрать соответствующий пункт в диалоговом окне New, которое показано на рис.6
Рис.6. Окно выбора объекта создания
Таким образом, выбрав тип создаваемой программы, программист получит готовый шаблон, который затем необходимо будет заполнить содержанием.
Каждое окно в Delphi называется формой. На форме располагаются различные визуальные и не визуальные компоненты. Весь набор компонент, доступных в системе, хранится в файле complib.dcl или в файле с другим именем и отображается в специальном окне среды Delphi, называемом «палитрой компонент» (component palette).
Рис.7. Палитра компонентов
Палитра разбивается на страницы, группирующие компоненты по каким-либо общим признакам.
Рис.8. Пример создания экранной формы
Например, на одной странице помещаются компоненты работы с данными, на другой - сетевые и т.д. Гибкость среды Delphi позволяет настраивать палитру по своему усмотрению - объединять, разбивать страницы, переносит компоненты с одной страницы на другую и т.п. Для того, чтобы поместить компонент на форму, необходимо нажать на его изображении на палитре компонент кнопку «мыши», затем переместить указатель «мыши» на нужное место и там отпустить. Это процесс приведет к тому, что у класса формы появится поле типа этого компонента. Собрав на одну форму несколько компонентов, можно получит сколь угодно сложные диалоговые окна с полями ввода, мемо-полями и прочими компонентами. Простой пример создаваемого окна (в режиме разработки) показан на рис.8.
На рис.8 показана разрабатываемая форма с несколькими визуальными компонентами. Хотя количество визуальных компонент на форме практически не ограничено, здравый смысл подсказывает, что перегружать форму ими не целесообразно, поскольку пользоваться программой с большим количеством кнопок, полей ввода и т.д. будет трудно из-за информационной перенасыщенности. Кроме того, рекомендуется каждый визуальный компонент снабжать строкой описания, чтобы пользователь мог догадаться, что же от него требуется.
Кроме визуальных, существуют также невизуальные компоненты. Поместив такой компонент на форму и запустив программу, мы ничего не увидим. Но некоторые компоненты во время работы себя отображают, правда для этого необходимо вызвать их методы. К таким компонентам относится всевозможные диалоговые компоненты, например OpenDialog, который является стандартным окном для открытия файла. Другие невизуальные компоненты внешне никак себя не проявляют, например компонент DataSet.
Свойства каждого компонента и формы в целом, а также события, на которые они откликаются, отображаются в окне инспектора объектов (object inspector). Инспектор объектов имеет две страницы - страницу со свойствами и страницу с событиями. Общий вид обеих страниц указан на рис.9
Рис.9. Инспектор объектов |
При редактировании свойства в инспекторе объектов учитывается тип этого свойства. Например, если свойство логического типа, то возможен будет выбор только лишь между значениями True и False. Для более сложных свойств, например, для списков строк, существуют свои редакторы свойств. Например, компонент ComboBox с рис.8 имеет свойство Items типа списка строк - TStrings. В этом случае нажатие на кнопку с многоточием, расположенную рядом с именем свойства, приведет к активизации редактора списка строк. Его вид показан на рис.10
Для нестандартных свойств, описанных программистом, существует возможность создания своего редактора свойств методами Delphi.
Рис.10. Редактор списка строк
Кроме задания значений свойств, инспектор помогает задавать реакцию на всевозможные события, которые могут происходить в программе - перемещение указателя «мыши», нажатие и отпускание клавиш клавиатуры и т.п. На соответствующей страничке инспектора есть список множества стандартных для компонента (или формы) событий. Каждому событию соответствует своя процедура обработки этого события. Причем одна процедура может обрабатывать несколько событий. Все это указывается с помощью инспектора событий.
Замечу, что визуальными средствами среды Delphi построить законченное приложение практически невозможно. Такими средствами можно только облегчить создание программы. Всю логику придется писать старым, испытанным методом - для каждой процедуры обработки событий вручную вписывать код.
В этом параграфе была рассмотрена упрощенная схема разработки программы в среде Delphi. Но кроме создания исходного текста необходимо помнить и об отладке программ.
... без применения компьютерной техники. Непрекращающееся развитие любого предприятия, учреждения или организации, а как следствие объёмов и сложности информации требует расширения компьютерных сетей и автоматизированных информационных систем. Но кроме очевидных выгод компьютерная техника несет в себе опасность здоровью и поэтому актуальной становится проблема охраны труда человека в процессе работы ...
... мы все сделали правильно, воспроизведем курс с начала, щелкнув кнопку Restart на панели управления. Создание кадров «Автор» и «Уч. пособ» идентично созданию кадра «Заголовок». Первый отображает фамилию и инициалы автора, а второй указывает, что это – электронный обучающий комплекс. Пятый и шестой кадр {Wait Icon и Erase Icon) весьма тесно связаны друг с другом. Эта пара обеспечивает управляемый ...
0 комментариев