Out.close();//закрытие потока 9 глава




Его функции используются в этой программе */

CString Str;

Str.Format(“Нажата левая кнопка мыши в точке x=%d, y=%d”,

point.x,point.y);

/*MessageBox –метод класса CWnd, который является базовым для

* CFrameWnd, а значит и для CmainWin, содержит одноименную

* функцию вывода сообщении.

* Первый аргумент типа Str –текст сообщения,

* второй заголовок окна,

* третий –флаги определяющие стиль окна */

MessageBox(Str,” Пришло сообщение”, MB_OK| MB_ICONINFORMATION);

//Стандартный обработчик

CFrameWnd::OnLButtonDown(nFlags,point);

}

Вставьте указанные фрагменты кода в программу написанную ранее

 

 

Создание проекта Win32Application и библиотека MFC.Создание проекта Win32Application.

 

Библиотека MFC позволяет творить чудеса. Точнее те чудеса которые может творить Windows вместе со своими приложениями типа Word, Excel,Outlook, и т.п. Для того, чтобы создать приложение под ОС Windows в среде MS Visual Studio, нужно создать соответствующий проект. Для этого нужно в главном меню войти в File, затем выбрать New. После того как откроется панель

 

нужно выбрать тип приложения (проекта), в данном случае это Win32Application и дать имя проекту, например, MyWinApplication. Потом щелкнуть по кнопке ОК. В результате появится панель

где нужно выбрать тип приложения. Мы выберем “An empty project” – пустой, в смысле не содержащий никаких файлов, проект и щелкнем по кнопке Finish. Появится третья панель на которой буде указаны все перечисленные ранее требования к создаваемому проекту. Если все, что написано в этой панели нас удовлетворяет, то можно щелкнуть по кнопке ОК, иначе по кнопке Cancel.

После того как проект создан в него нужно поместить файл. Для этого вновь нужно обратиться к главному меню и вновь выбрать File/New, после чего откроется паеель на которой нужно выбрать тип файла. В данном случае это C++CourseFile. Перед тем как нажать кнопку ОК следует указать имя файла. Пусть это будет MyFileMFC.

В результате появится окно для записи программы.

Чтобы включить в создаваемый файл библиотеку MFC следует войти в пункт Project главного меню и выбрать Setting…, после чего щелкнуть по кнопке ОК.

 

 

Библиотека MFC.

Библиотека Microsoft Foundation Class Library (MFC) это базовый набор классов, написанный на языке С++ программистпми компании Microsoft. Классы библиотеки предназначены для упрощения и ускорения процесса пограммирования под ОС Windows. Библиотека представляет собой многоуровневую иерархию классов. Библиотека MFC позволяет творить чудеса. Точнее те чудеса, которые может творить Windows вместе со своими приложениями типа Word, Excel,Outlook, и т.п.

 

Имена классов библиотеки MFC начинаются с префикса “C”, а имена переменных класса с “m_”. Наиболее часто нам будут встречаться два класса CWinApp и CFrameWnd. Первый, - это класс, предназначенный для создания приложения, второй - класс для создания окна.

В простейшем случае программа, написанная с использованием MFC, содержит эти два класса, порождаемые от классов библиотеки. Первый порождается от класса CWinApp библиотеки MFC, второй от CFrameWnd.

Для того, чтобы создадь программу с использованием MFC необходимо выполнить следующие действия:

1. Создать класс определяющий окно, вляющийся наследником класса CFrameWnd. Например,

class MyWindow: public CFrameWnd{...};

2. Создать класс наследник CWinApp, определяющий приложение. Например, class MyApplcation: public CWinApp {...};

3. Создать карту сообщений.

4. Переопределить функцию InitInstance() класса CWinApp.

5. Создать экземпляр класса, определяющего приложение, - объект с любым удобным именем, например, appl.

Приведем пример для иллюстрации сказанного.

#include<afxwin.h> //библиотека, содержащая основные классы

class MyWindow: public CFrameWnd{ //класс формируюий окно

public:

MyWindow();

DECLARE_MESSAGE_MAP() //создание карты сообщений

};

MyWindow::MyWindow(){ //определение конструктора

Create(NULL, "Простое MFC приложение");

}

 

// Класс предназначенный для создания приложнения,т.е.

// для того, что должно быть видно в окне

class MyApplcation: public CWinApp {

public:

BOOL InitInstance();

};

BOOL MyApplcation::InitInstance(){

m_pMainWnd=new MyWindow;

m_pMainWnd->ShowWindow(m_nCmdShow);

m_pMainWnd->UpdateWindow();

 

return true;

}

 

BEGIN_MESSAGE_MAP(MyWindow, CFrameWnd)

END_MESSAGE_MAP()

 

MyApplcation theApllication;

Результатом выполнения программы является появление окна с заданным заголовком.

 

Рассмотрим подробнее код программы. Предле всего, в текст включен файл afxwin.h, который содержит описание классов библиотеки MFC и подключает многте другие библиотечные файлы, в том числе windows.h. Созданный класс MyWindow содержит конструктор MyWindow() и макрос DECLARE_MESSAGE_MAP(), который объявляет карту обработки сообщений создаваемого окна.

 

 

Например, можно в консольном приложении выводить цветной текст. Ниже приведен текст такой программы, но не спешите ее опробыватьопробовать, скорее всего вы получите непонятное сообщение о том, что компилятор чего то не нашел. Чуть позднее мы научимся подключать библиотеку MFC и тогда можно будет вернуться к нему.

#include <iostream.h>

#include <afxwin.h>

void main()

{

HANDLE hStdout=GetStdHandle(STD_OUTPUT_HANDLE); /* Функция возвращающая имя данное системой стандартному устойству ввода или вывода в данном случае STD_OUTPUT_HANDLE говорит о выводе*/

SMALL_RECT srct; /* структура определяющая координаты верхнего левого и нижнего правого угла прямоугольника */

CHAR_INFO chiBuffer[160]; /* структура определяющая использование юникода или ANSI цвет теста и подложки в данном случае это массив структур*/

COORD coord1, coord2; //структура дя записи координат экрана, начало координат сооьветствует верхнему левому углу консоли */

char text[500]; // символьный массив

CharToOem("3.1415926 – это число пи", text); // смена кодировки

DWORD cWritten; //32-х разрядное беззнаковое целое

coord1.Y= 0; coord1.X=0;

WriteConsoleOutputCharacter(hStdout, text, lstrlen(text), coord1, &cWritten );/* функцияя для копирования последовательности символов указанной длины в буфер консоли, сначала указывается имя, которое система присвоила окну консоли, потом следует указатель на буфер из которого будет записываться текст, третьим параметром идет число символов подлежащих для записи, четвертый номер первого символа последним идет указатель на размер одной ячейки подлежащей записи */

for (int i=0; i<lstrlen(text); i++) /* функция lstrlen возвращает число символов в строке не включая нуль конца строки */

{

WORD wColors=1+i*10; // запись номера цвета

coord1.X = i;

WriteConsoleOutputAttribute(hStdout,&wColors,1, coord1, &cWritten);

}

srct.Top=0; srct.Left=0; srct.Bottom=1; srct.Right=79;

coord1.Y=0; coord1.X=0;

coord2.Y=1; coord2.X=80;

ReadConsoleOutput(hStdout, chiBuffer, coord2, coord1, &srct);

for (i = 0; i < 50; i++)

{

srct.Left = (SHORT)((double)(79 - lstrlen(text)) * rand() / RAND_MAX);

srct.Top = (SHORT)((double)25 * rand() / RAND_MAX);

srct.Bottom = srct.Top + 1;

WriteConsoleOutput(hStdout, chiBuffer, coord2, coord1, &srct);

}

}

 

Не будем подробно останавливаться на этом примере. Как мы увидим позднее, он достаточно прост и приведен здесь для того, чтобы подтвердить новые свойства, которые появляются только в результате внесения только одной дополнительной строки #include <afxwin.h>.

 

Создадим проект под Windows. Для этого поступим подобно тому как мы это делали при создании консольного приложения. В главном меню укажем File/New. В появившемся окне на вкладке Project укажем Win32 Application.

В окне Project name следует ввести имя проекта и подтвердить его нажатием кнопки OK. Появится окошко мастера проектов. В нем, как и при создании консольного приложения, выберем пустой проект - An Empty Project. Пустой проектозначает, что в нем пока нет ни одного файла. Нажмем кнопочку Finish для подтверждения своего выбора. VC++ начнет генерацию серии файлов необходимых для работы с проектом и его сборки.

 

Теперь нужно создать файл (пока он будет пустой) в котором будет записан код программы, т.е. файл с расширением cpp в этом проекте. Для этого поступим так как это делали при создании консольного приложения, т.е. в главным меню нужно выбрать File/New и перейти на вкладку File, где выбрать С++Sourse File и в окне File name указать имя этого файла.

Язык С++ никаких окон не создает. Окна создает сама операционная система Windows. Наша задача состоит в том, чтобы создать объект класса в котором описано построение этого окна.

 

 

Теперь нужно настроить проект так, чтобы он использовал MFC. Это очень важно. MFC находится в DLL файлах. И если наш проект будет использовать MFC, мы должны это указать для того, чтобы компилятор мог подключить необходимые LIB файлы со ссылками на функции в DLL. Если этого не сделать, то проект не соберется. В окне Build будут такие ошибки.

Linking...nafxcw.lib(thrdcore.obj): error LNK2001: unresolved external symbol __endthreadexnafxcw.lib(thrdcore.obj): error LNK2001: unresolved external symbol __beginthreadexRelease/step1.exe: fatal error LNK1120: 2 unresolved externalsError executing link.exe.

Нужно войти в главное меню Project, а потом Setting.

Вот здесь и вот так. Не забудем проверить поддержку MFC для всех типов (Setting For).

Создаем код

В нашем файле запишем код.

//// Step1.cpp// Сайт Первые шаги (https://www.firststeps.ru/)// Каев Артем (1999-2001)// создано 1999 г.// обновление 24.06.2001#include "afxwin.h" // MFC Основные и стандартные компоненты class CMainWnd: public CFrameWnd{public: CMainWnd(); // Конструктор по умолчанию}; CMainWnd::CMainWnd(){ Create(NULL,"Step1",WS_OVERLAPPEDWINDOW,rectDefault, NULL,NULL); // Создать окно программы} class CMyApp: public CWinApp{public: CMyApp(); //конструктор по умолчанию virtual BOOL InitInstance();//стандартная инициализация}; CMyApp::CMyApp() // конструктор главного класса приложения{} BOOL CMyApp::InitInstance() // стандартная инициализация{ m_pMainWnd=new CMainWnd(); // создать класс окна ASSERT(m_pMainWnd); // проверить его правильность m_pMainWnd->ShowWindow(SW_SHOW);// Показать окно m_pMainWnd->UpdateWindow(); // Обновить окно return TRUE; // Вернуть что все нормально}; CMyApp theApp; // запуск приложения

Теперь попробуем во всем этом разобраться:

Первая строка включает необходимый файл заголовка с описанием классов, функций и переменных, он ссылается ещё на многие другие классы, а они на другие и так до windows.h. Вот почему windows.h в программе не понадобился.

В каждой программе на С++ есть главная функция программы, в Dos это main(), в Windows - WinMain(). Эта функция обеспечивает запуск программы. Она проверяет операционную среду, выполняет некоторые настройки и, если все нормально, непосредственно передает управление вашему коду. Но в созданной программе её нет. Дело в том, что в MFC есть класс CWinApp, который и включает главную функцию программы. Естественно, что в приложении она может быть только одна.

Мы с вами создали CMyApp, как производный от CWinApp и унаследовали все его свойства, методы и т.д. В своем классе мы объявили конструктор по умолчанию (без параметров). Он необходим, иначе вы не скомпилируете программу. Здесь все логично мы в коде объявляем статический класс производный от нашего CMyApp в строке CMyApp theApp;. Как видите он тоже без параметров.

CWinApp имеет виртуальный метод InitInstance(). Виртуальный он потому, что это только заглушка. Мы с вами написали свой метод в виде функции. Этот метод должен возвращать ненулевое значение, если инициализация прошла нормально, а иначе 0. Он предназначен, чтобы вы могли описать класс окна программы и отобразить окно на экране.

Дальше мы должны знать, что в CWinApp есть указатель на класс окна - m_pMainWnd. Этот указатель общедоступный и вы могли догадаться, так как он нигде не объявлен. Ситуация с ним такая - Если по окончанию InitInstance() он будет равен нулю, то приложение завершится. И естественно, когда приложение завершается он обнуляется. Строкой m_pMainWnd=new CMainWnd(); мы присваиваем этому указателю адрес класса CMainWnd, который порожден от CFrameWnd. Последний из них отвечает за работу окна программы в стиле одного документа (SDI - single document interface). Он создает окно, управляет сообщениями и т.д. В конструкторе этого класса мы вызвали функцию создания окна, в которой указали кучу параметров.

Первый параметр указывает на класс Windows, он нам не нужен, пока не нужен и поэтому NULL, дальше указали имя окна программы, WS_OVERLAPPEDWINDOW указывает, что окно имеет заголовок и рамку, rectDefault говорит о том, что размер окна присвоит Windows, и еще некоторые параметры, ими всеми мы займемся позже. Далее следует ASSERT(m_pMainWnd);. Очень хорошая и простая функция. Если создание объекта произойдет, то m_pMainWnd будет отличаться от нуля и всё будет нормально, а иначе вы получите сообщение о том, что в таком файле на такой-то строке ошибка. Вообще это намного лучше, чем смотреть дизассемблированный код или оказаться в исходном коде библиотеки MFC, если не повесим Windows конечно.

Так как m_pMaiWnd это сейчас тоже что и CMainWnd, то мы используем это переменную, чтобы вывести на экран окно:

m_pMainWnd->ShowWindow(SW_SHOW);

И показать окно.

m_pMainWnd->UpdateWindow();

Вот и все! При запуске приложения вот такое окно мы получим.

Шпаргалка

Включить описание классов MFC:

#include <afxwin.h>

Объявить класс производный от CWinApp:

class CMyApp: public CWinApp.......

Объявить переменную этого класса:

CMyApp theApp;

Объявить класс производный от CFrameWnd:

class CMainWnd: public CFrameWnd.......

В конструкторе класса производного от CFrameWnd вызвать функцию Create() и выбрать параметры в ней на свой вкус:

Create(NULL,"Step1",WS_OVERLAPPEDWINDOW,rectDefault,NULL,NULL);

Переопределить функцию InitInstance() класса производного от CWinApp.

В функции InitInstance() создать объект производный от CFrameWnd и присвоить указателю m_pMainWnd адрес этого объекта.

m_pMainWnd=new CMainWnd();

Проверить указатель на корректность:

ASSERT(m_pMainWnd);

Вызвать функции класса производного от CFrameWnd для прорисовки на экране:

m_pMainWnd->ShowWindow(SW_SHOW);// Показать окноm_pMainWnd->UpdateWindow(); // Обновить окно

Закончить выполнение функции, убедив MFC, что все нормально:

return TRUE;

Откомпилировать, собрать и запустить программу, насладившись пустым окном и именем Step1.

 

Программирование в среде Borland C++ Builder

Если вы уже попробовали создавать консольные приложения, то вероятно обращали внимание на то, что Builder предлагает создавать еще несколько типов программ. Остановимся на этом вопросе подробнее.

Прежде всего заметим, что Builder кроме файла с исходной программой создает дополнительный файл, который называется файлом проекта. Этот файл генерируется как только выбираются пункты меню File|New. Первоначально Builder присваивает файлу проекта имя Project1.cpp. Если в процессе разработки программы добавляются внешние файлы или библиотеки, то среда обновляет файл проекта. Для просмотра файла проекта следует выбирать пункт меню Project|View Source.

 

Программирование с помощью C++Builder 6.

 

Программирование в среде C++Builder 6 отличается от рассмотренного выше процесса программирования в среде Microsoft Visual C++. Более того, язык программирования C++ для программирования приложений немного отдичаетсяотличается от стандартного. Объясняется это не только тем, что C++Builder разработан другими программистами, а скорее тем, что цель, стоящая перед этой средой совсем иная. C++Builder предназначен для созданиядля создания программ с мощным интерфейсом. Причем задача, поставленная перед программистами была сформулирована так, чтобы разработка интерфейса была в максимальной степени автоматизирована. С этой целью была принята технология, которая сродни детскому конструктору. Вспомним, чточто, играя с конструкторомконструктором, ребенок берет подходящую деталь и присросабливаетприспосабливает ее к создаваемой конструкции. Технология программирования заключается в том, что, программист строит программу перетаскивая компоненты из соответствующего меню, и изменяет их свойства в соответствии с решаемой задачей. Для решения такой задачи были разработаны специальные библиотеки классов.

Интерфейс создается в виде окна (панели), которая называется формой. На форме располагаются элементы, которые обычно присутствуют обычно в такого рода программах такого рода – меню, кнопки, окна редактирования, полосы прокрутки, и т.п., словом то, что можно увидеть, например, в MS Word.

(a) Структуры файлов в C++ Builder

Наталия Елманова, Центр Информационных Технологий

Структура файла проекта

Для каждого приложения C++ Builder создается один файл проекта, один make-файл и один файл ресурсов. Файл проекта генерируется при выборе пункта меню File/New Application. Первоначально файлу проекта присваивается по умолчанию имя Project1.cpp. Если в процессе разработки приложения добавляются формы и модули, C++ Builder обновляет файл проекта.

Для просмотра файла проекта следует выбрать пункт меню View/Project Source. Эта операция выполнит загрузку исходного текста файла проекта в редактор кода (рис. 1).

Рис. 1. Просмотр файла проекта в редакторе кода

Файл проекта имеет такую же структуру, как и файл модуля. Подобно файлу модуля, это файл исходного кода на языке C++, который компилируется с другими файлами при создании исполняемого файла.

В файле проекта имеется определенный набор ключевых элементов:

  • Директива препроцессора #include <vcl\vcl.h> предназначена для включения в текст проекта заголовочного файла, ссылающегося на описания классов библиотеки компонентов.
  • Директива препроцессора #pragma hrdstop предназначена для ограничения списка заголовочных файлов, доступных для предварительной компиляции.
  • Директива USEFORM сообщает, какие модули и формы используются в проекте.
  • директива USERES компилятора присоединяет файлы ресурсов к выполняемому файлу. При создании проекта автоматически создается файл ресурсов с расширением *.res для хранения курсоров, пиктограммы приложения и др.
  • Application->Initialize() Это утверждение критично только в случае, если приложение является OLE automation-сервером. В остальных случаях оно фактически ничего не делает.
  • Application->CreateForm() Это утверждение создает форму приложения. По умолчанию, каждая форма в приложении имеет свое утверждение CreateForm.
  • Application->Run() Это утверждение запускает приложение (точнее, переводит его в состояние ожидания наступления одного из событий, на которое оно должно реагировать).
  • Конструкция try...catch используется для корректного завершения приложения в случае возникновения ошибки при инициализации, создании форм, запуске приложения.

Структура make-файла

Make-файл - это текстовый файл, содержащий макросы, директивы и инструкции по компиляции и сборке проекта для утилиты make.exe. Отметим, что make-файл по существу ничем не отличается от обычного знакомого пользователям С и С++ make-файла. Он генерируется автоматически при создании проекта, и его содержимое зависит от установок, указанных программистом в опциях проекта. Чтобы увидеть содержание make-файла, следует выбрать пункт меню View/Project Makefile (рис. 2).

Рис. 2. Пример структуры make-файла

Структура модуля

Модули являются основой создания библиотек и приложений в C++ Builder. Модуль содержит исходный текст на языке C++ и первоначально представляет собой файл с расширением *.CPP. В дальнейшем каждый такой файл компилируется в объектный файл с расширением *.OBJ. Объектные файлы, в свою очередь, собираются компоновщиком в выполняемый файл с расширением *.EXE.

При добавлении к проекту новой формы генерируется новый модуль. При добавлении модуля к проекту при помощи выбора пункта меню File/New Unit создается пустая структура модуля, в которой включены директивы: #include <vcl\vcl.h>; #pragma hdrstop; #include "Unit2.h"

Директива #include "Unit2.h" указывает на то, что в текст модуля должен быть включен соответствующий заголовочный файл.

При создании модуля используются следующие правила:

  • Имя должно быть уникальным. Два модуля с одним и тем же именем не могут использоваться одновременно в одном и том же проекте.
  • Если модуль связан с формой, то имя исходного файла модуля и файла формы (с расширением *.dfm) должны быть одинаковыми. При создании обработчика событий в инспекторе объектов в тексте файла модуля генерируется шаблон функции, в который разработчик должен вводить код, выполняемый при наступлении обрабатываемого события.

Структура h-файла

h-файл генерируется при создании нового модуля. В нем содержится информация о данных и функциях, которые можно использовать в модуле. h-файл для модуля, связанного с формой, содержит описания интерфейсных элементов и других компонентов этой формы и обработчиков событий для них (то есть, в терминологии объектно-ориентированного программирования, описание класса формы). Такие описания автоматически добавляются в h-файл при внесении в форму новых компонентов или генерации новых обработчиков событий. Иными словами, в h-файле содержится интерфейс, а в самом модуле - реализация.

Рис. 3. Пример структуры h-файла

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

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

Отметим, что в модуле могут содержаться функции, не описанные в h-файле, однако видимость их в этом случае ограничивается данным модулем.

Внутри модуля функции могут быть определены и ссылаться друг на друга в произвольном порядке. Если данный модуль ссылается на другие формы и модули, следует с помощью директивы препроцессора #include включить в него соответствующий h-файл с помощью пункта меню File/Include Unit Hdr.... После этого интерфейсные элементы другого модуля будут доступны в данном модуле.

Файл формы

Форма является одним из важнейших элементов приложения C++ Builder. Процесс редактирования формы происходит при добавлении к форме компонентов, изменении их свойств, создании обработчиков событий.

Рис. 4. Структура файла формы

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

Файл модуля (.cpp) - cодержит исходный код, связанный с формой.

h-файл(.h) - cодержит описание класса формы, то есть описания содержащихся на форме компонентов и обработчиков событий.

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

Хотя в C++ Builder файл.dfm сохраняется в двоичном формате, его содержание можно просмотреть с помощью редактора кода. Для этого нужно нажать правую клавишу мыши над формой и из контекстного меню формы выбрать пункт View as Text.

Отметим, что при изъятии какого-либо компонента с формы в буфер обмена в последнем реально оказывается часть тестового представления файла формы, содержащая описание данного компонента. В этом можно убедиться, выполнив затем операцию вставки из буфера обмена в любом текстовом редакторе. Модули Delphi 2.0

C++ Builder создан на основе визуальной библиотеки компонентов Borland Delphi, ставшей за последние два года весьма популярной среди разработчиков. По этой причине этот продукт имеет общую с Delphi библиотеку классов, часть из которых осталась написанной на Object Pascal. Из этого следует, что в приложениях можно использовать компоненты, созданные для Delphi 2.0.

Однако совместимость с Delphi этим не исчерпывается. В проектах C++ Builder можно использовать не только библиотеку компонентов Delphi, но и код, написанный на Object Pascal, а также формы и модули Delphi. Эти возможности появились благодаря включению в С++ Builder обоих компиляторов -- С++ и Object Pascal.

Рис. 5. Типы файлов, используемые в проектах С++ Builder

В соответствии с этим в качестве частей проекта могут быть использованы модули, написанные на Object Pascal. В этом можно убедиться, взяв формы какого-нибудь из примеров, созданных в Delphi 2.0 и включив их в проект С++ Builder. Возьмем в качестве такого примера приложение Graphex из набора примеров Delphi 2.0. Создадим новый проект, удалим из него созданную по умолчанию форму и добавим два модуля из приложения Graphex - Graphwin.pas и Bmpdlg.pas.

Рис. 6. Добавление модулей Delphi к проекту.

Скомпилируем проект. Можно убедиться в работоспособности полученного приложения, запустив и протестировав его.

В случае использования форм Delphi к проекту добавляются два файла - файл формы с расширением *.dfm и файл модуля с расширением *.pas. Описание класса формы содержится в самом модуле, следовательно, для этого не требуется отдельный файл заголовка.

Рассмотрим более подробно структуру модуля Delphi. В качестве простейшего примера приведем структуру модуля, связанного с формой, содержащей единственный интерфейсный элемент - кнопку закрытия окна: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin close; end; end.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: