
- •Министерство образования российской федерации
- •Северо-западный государственный заочный технический университет
- •В. Л. Макаров
- •Прикладное программирование
- •Конспект лекций с. Петербург 2003г
- •Окно формы. Форма является основой большинства приложений , так как на ней размещаются другие управляющие компоненты. Внешний вид окна формы показан на рисунке 1.3.
- •3.Основные свойства, методы и события формы
- •Компоненты vcl
- •5.1. Кнопки управления
- •5.2. Окно редактирования Edit
- •5.3 Многострочные окна редактирования Memo и RichEdit
- •5.4 Компоненты выбора из списков – ListBox, CheckListBox, ComboBox
- •5.5 Элемент управления Label (надпись или метка)
- •5.6 Элемент управления RadioButton (Радиокнопка)
- •5.7 Полосы прокрутки (ScrollBar)
- •5.9 Компонент Timer(Таймер)
- •5.10 Компонент StringGrid ( таблица строк)
- •5.11 Компонент Chart – графики и диаграммы
- •5.12 Компонент f1Book
- •6. Создание меню
- •7. Системные диалоги
- •7.1 Диалоги открытия и сохранения файлов
- •7.2 Диалог выбора шрифта(компонент FontDialog )
- •7.3 Диалог выбора цвета(компонент ColorDialog )
- •7.4Диалоги поиска и замены текста(компоненты FindDialog и ReplaceDialog )
- •8.1 Структура головного файла проекта
- •8.2 Структура файлов модулей форм
8.1 Структура головного файла проекта
Головной файл проекта генерируется автоматически и содержит функцию WinMain . текст которая предназначена для выполнения подготовительных операций , необходимых для начала работы приложения. Для просмотра кода исходного файла проекта, необходимо в главном меню Project выбрать пункт View Source. Типичный исходный файл проекта имеет следующий вид:
// директивы препроцессора
#include <vcl.h>
#pragma hdrstop
USERES("Project1.res");
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
// функция Main
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
Первые строки файла начинаются с символа # , который указывает на директивы препроцессора . Эти директивы подключают в данный файл тексты, указанных в них файлов. Ниже в файле размещаются макросы USERES и USEFORM, которые используются для подключения к проекту файлов форм, модулей, ресурсов и др. Далее расположена главная функция программы – WinMain( ).Ее первым параметром является дескриптор данного экземпляра приложения. Дескриптор – это уникальный указатель , позволяющий Widows разбираться во множестве открытых окон различных приложений. Второй параметр WinMain( ) – дескриптор предыдущего экземпляра этого приложения. Третий указатель на строку, содержащую , содержащую параметры передаваемые в программу через командную строку. Последний параметр определяет окно приложения. Все эти параметры функции WinMain( ) используются крайне редко. После заголовка функции следует ее тело , заключенное в фигурные скобки. Первый оператор Application->Initialize();- инициализирует объекты компонентов данного приложения , а последующие создают объекты соответствующих форм. Формы создаются в той последовательности , в которой следуют эти операторы, при этом первая из создаваемых форм считается главной. Последний оператор Application->Run(); начинает выполнять программы . После этого оператора программа ждет соответствующих событий , которые и управляют ее ходом. Перечисленные операторы тела функции заключены в блок try, после которого следует блок catch .Эта структура связана с обработкой исключений( аварийных ситуаций). При аварийной ситуации выполняются операторы , расположенные в блоке catch.
8.2 Структура файлов модулей форм
Каждый модуль состоит из двух файлов: заголовочного , содержащего описание класса формы и файла реализации. На рис.8.1 и 8.2 показаны тексты заголовочного файла и файла реализации для модуля формы , на которой размещены метка(Labele1 ) и кнопка (Button1).
//Заголовочный файл
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//Сюда могут помещаться дополнительные директивы препроцессора , не включаемые в файл автоматически
//---------------------------------------------------------------------------
//Объявление класса форм TForm1
class TForm1 : public TForm
{
__published: // IDE-managed Components
//Размещенные на форме компоненты
TLabel *Label1;
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
//Закрытый раздел класса. Сюда могут помещаться объявления типов переменных, функций, включаемых в класс формы , но недоступных для других модулей.
public: // User declarations
//Открытый раздел класса. Сюда могут помещаться объявления типов переменных, функций, включаемых в класс формы ,и доступных для других модулей.
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
// Сюда могут помещаться объявления типов переменных, функций, которые не //включаются в класс формы. Доступ к ним возможен только при соблюдении некоторых //дополнительных условий.
#endif
Рис. 8.1 Текст заголовочного файла
//Файл реализации
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//Сюда могут помещаться дополнительные директивы препроцессора , не включаемые в файл автоматически
TForm1 *Form1; //Объявление объекта формы TForm1
//---------------------------------------------------------------------------
//Вызов конструктора формы формы TForm1
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// Сюда можно поместить операторы,которые должны выполняться при создании //формы
}
//---------------------------------------------------------------------------
// Сюда могут помещаться объявления типов переменных, доступ к которым из других //модулей возможен только при соблюдении дополнительных условий. Тут же должны //размещаться реализации всех функций ,объявленных в заголовочном файле.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Close;
}
//---------------------------------------------------------------------------
Рис. 8.2 Текст файла реализации модуля формы
Заголовочный файл начинается с директив препроцессора , которые включаются в него автоматически. В редких случаях разработчик должен добавлять некоторые директивы вручную. После директив следует описание класса формы(TForm).Класс содержит три раздела: открытый раздел (__published),содержащий объявления размещенных на форме компонентов , закрытый раздел класса (private) и открытый раздел класса (public). Все что имеется в разделе published, включается в него автоматически в процессе проектирования формы. А в разделы private и public разработчик может добавлять свои объявления типов переменных и функций. То , что объявлено в разделе public будет доступно для других классов, а объявления в разделе private доступно только в пределах данного модуля.