ebook img

Использование компонентов VCL в Borland Builder C++ для приложений Windows PDF

75 Pages·2.543 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Использование компонентов VCL в Borland Builder C++ для приложений Windows

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ЮЖНО-УРАЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ УДК 681.3.06 (07) К721 В. В. Костерин ИСПОЛЬЗОВАНИЕ КОМПОНЕНТОВ VCL В BORLAND BUILDER C++ ДЛЯ ПРИЛОЖЕНИЙ WINDOWS Учебное пособие к лабораторным работам Челябинск 2006 Министерство образования и науки Российской Федерации Федеральное агентство по образованию Южно-Уральский государственный университет Кафедра «Информационные системы» УДК 681.3.06 (07) К721 В. В. Костерин ИСПОЛЬЗОВАНИЕ КОМПОНЕНТОВ VCL В BORLAND BUILDER C++ ДЛЯ ПРИЛОЖЕНИЙ WINDOWS Учебное пособие к лабораторным работам Челябинск Издательство ЮУрГУ 2006 УДК 681.3.06:519.6 (075.8) К721 Одобрено учебно-методической комиссией факультета «Экономика и предпринимательство» Рецензеты: В.Д. Гунченко, Сафронова И.В. Костерин, В.В. К721 Использование компонентов VCL в Borland Builder C++ для приложений Windows: Учебное пособие к лабораторным работам / В.В. Костерин – Челябинск: Изд-во ЮУрГУ, 2006 – 73 с Учебное пособие «Использование компонентов VCL в Borland Builder C++ для приложений Windows» содержит руководство для выполнения пяти комплексов задач по практической отработке приёмов работы с компонентами библиотеки VCL. Необходимо отметить качественный подбор методического материала задач, который позволяет студентам практически освоить основные приемы решения типовых задач, связанных с традиционными вопросами информационных технологий, например, применение функций API для анализа ресурсов вычислительной системы, приёмы работы с базами данных различных форматов с использованием библиотеки BDE и ActivX Data Object (ADO). Особое внимание уделено методологии построения «дружественного» пользовательского интерфейса современного программного обеспечения. Для иллюстрации способов решения задач в пособии приведены возможные варианты исходного программного кода, которые предполагают не только слепое копирование, но позволяют студентам расширить исходную постановку задачи и проявить свои творческие способности. Более того, приведенный программный код может многократно использоваться в реальных приложениях для решения практических задач. УДК 681.3.05(075.8) + 681.3.068(075.8) © В.В. Костерин, 2006 © Издательство ЮУрГУ, 2006 ОГЛАВЛЕНИЕ ЛАБОРАТОРНАЯ РАБОТА №1. «ОДНОКНОПОЧНЫЙ БАНДИТ» – НАШЕ ПЕРВОЕ ПРИЛОЖЕНИЕ ..............................................................................................5 Упражнение 1.1. Запустим наш автомат...................................................................5 Упражнение 1.2. Работаем с картинками и добавим «вишенки» и «яблочки»...11 Упражнение 1.3. Определим условия выигрыша...................................................15 Отчет о лабораторной работе...................................................................................17 ЛАБОРАТОРНАЯ РАБОТА №2. Делаем заставки...................................................18 Упражнение 2.1. Создание простейшей заставки ..................................................18 Упражнение 2.2. Вывод на заставке информации о приложении........................20 Упражнение 2.3. Видеофрагмент на заставке.........................................................24 Упражнение 2.4. Видеофрагмент на полном экране..............................................26 Отчет о лабораторной работе...................................................................................27 ЛАБОРАТОРНАЯ РАБОТА №3. Внешние устройства и операционная система.28 Упражнение 3.1. Определение наличия дискеты или компакт-диска в дисководе ......................................................................................................................................28 Упражнение 3.2. Определение параметров текущего видеорежима....................30 Упражнение 3.3. Получение сведений о частоте развертки монитора................32 Упражнение 3.4. Инициирование перезагрузки Windows.....................................33 Упражнение 3.5. Отключение хранителя экрана....................................................34 Упражнение 3.6. Получение сведений об операционной системе.......................37 Отчет о лабораторной работе...................................................................................39 ЛАБОРАТОРНАЯ РАБОТА №4. Базы данных, Borland Database Engine (BDE). Настройка параметров доступа. Библиотека Borland Database Engine (BDE). Утилита настройки BDE...............................................................................................40 Особенности настройки BDE для работы с некоторыми источниками данных.48 dBase ........................................................................................................................48 Paradox.....................................................................................................................49 ODBC–источники...................................................................................................50 Oracle........................................................................................................................53 InterBase...................................................................................................................55 Упражнение 4.1. Формулировка задачи и создание базы данных для «Однокнопочного бандита»......................................................................................55 Упражнение 4.2. Создание отчетов..........................................................................56 Упражнение 4.3. Как изменить цвет строки в TDBGrid........................................56 Упражнение 4.4. Как заменить данные в столбце компонента TDBGrid............60 Упражнение 4.5. Как поместить графическое изображение в TDBGrid..............62 Отчет о лабораторной работе...................................................................................63 3 ЛАБОРАТОРНАЯ РАБОТА №5. MIDAS и "маленькие" настольные приложения .........................................................................................................................................64 Упражнение 5.1. Создание "маленького" приложения с базой данных без использования BDE...................................................................................................65 Упражнение 5.2. Как сэкономить место на форме при отображении связанных таблиц..........................................................................................................................68 Упражнение 5.3. Как произвести сортировку данных в компоненте TClientDataSet.............................................................................................................69 Упражнение 5.4. Создание универсального инструмента для сохранения содержимого таблиц в локальных файлах..............................................................70 Отчет о лабораторной работе...................................................................................73 ПРИЛОЖЕНИЕ.............................................................................................................74 4 ЛАБОРАТОРНАЯ РАБОТА №1. «ОДНОКНОПОЧНЫЙ БАНДИТ» – НАШЕ ПЕРВОЕ ПРИЛОЖЕНИЕ Итак, Вы знаете немного теории объектно-ориентированного программирования и уже сможете отличить класс от структуры. Пришла пора применить эти знания на практике и написать первое приложение на Builder C++. Кстати, предоставляется замечательный повод сравнить инструментарий для программирования на «Вижуал-Васике» и инструментарий настоящих программистов, уважающих себя и потенциального пользователя. Один из студентов второго курса факультета «Экономики и предпринимательства» признался, что практически всю свою стипендию он оставляет воротилам игорного бизнеса в игровых автоматах. Думается, что не он один стал рабом азарта. Так вот предлагаю Вам сделать такой автомат у себя на домашнем компьютере. Азарт тот же, а сохраненная стипендия будет вашим выигрышем. По теории вероятности – это гораздо больше, чем Вы сможете выиграть, тем более – все в Ваших руках и правила игры Вы сможете установить в свою пользу. Лабораторная работа состоит из трех упражнений. 1. Запустим наш автомат, где в 4–5 полях случайным образом появляются цифры в диапазоне от 0 до 9; 2. Работаем с картинками и добавим «вишенки» и «яблочки»; 3. Определим условия выигрыша и, самое главное, цифры выигрыша в подходящей для Вас валюте. Упражнение 1.1. Запустим наш автомат В этом упражнении мы сделаем игровой автомат (рис. 2), который в 5 полях случайным образом быстро меняет цифры в диапазоне от 0 до 9. Этот процесс запускает и останавливает пользователь, пытаясь добиться совпадения цифр в нескольких полях. Чем больше совпадений – тем больше выигрыш. Правила игры мы обсудим позже, в третьем упражнении, а сейчас начнем проектирование. После того как Вы загрузили Builder и увидели заготовку главной формы приложения, обратите своё внимание на инспектор объектов и задайте свойства этой формы. Запишите название «Однокнопочный бандит» – свойство Caption; для свойства BorderStyle выберите значение bsSingle; для Position – poScreenCenter; значение BorderIcons – Maximize переведите в true. В проекте произошли изменения – сразу же сохраните их. Во время сохранения определите свои имена файлов (здесь они останутся такими, какими их предложил Builder C++, т.е. Project1.bpr – для проекта и Unit1.cpp – для главной формы). 5 Рис. 1. Главная форма приложения на этапе проектирования Сейчас Вам потребуется минимум «выразительных» средств диалога – компонентов библиотеки VCL (Visual Component Library) Builder C++, расположенных на палитре. С закладки «Standart» палитры компонентов заберите и перенесите на форму: 1) кнопку – Button и 2) панель – Panel, а с закладки «System» – 3) таймер (Timer). Четвертый элемент, который Вы видите на рисунке – статусная строка StatusBar с закладки «Win32» палитры, потребуется нам в дальнейшем, а сейчас просто перенесите её на форму и на некоторое время о ней забудьте. Задача таймера заключается в том, что бы во время работы приложения создавать непрерывный поток отсчетов – прерываний с нужной частотой. Ваша задача в том, что бы написать функцию обработки этих прерываний, которая должна некоторым, типа, случайным образом генерировать 5 чисел. Кнопка предназначена для Включения/Выключения таймера, т.е. для запуска и остановки процесса создания случайных чисел. Панели, в дальнейшем их станет пять, предназначены для отображения значений случайных чисел. Вот такая основная идея нашего игрового автомата. Таймер компонент невидимый, поэтому его расположение на форме во время визуального проектирования не имеет никакого значения, а вот о кнопке и панели 6 надо побеспокоиться. Прежде всего, измените первоначальный размер панели с помощью манипулятора «мышь». Это делается точно так же как с любым окном Windows. Для точной подгонки размеров и положения компонента на форме можно использовать комбинации клавиш <Ctrl> или <Shift> в сочетании с клавишами «стрелок» дополнительной клавиатуры. В инспекторе объектов подберите для панели значения группы свойств Font. В конечном итоге, допейтесь того, что бы Ваша панель стала лучше, чем панель на рис. 1. Теперь копируем панель в буфер обмена (File–>Edit–>Copy) и вставляем несколько экземпляров на форму (File–>Edit–>Paste), равномерно их размещая. С кнопкой всё гораздо проще. В инспекторе объектов для неё задаются свойства Font и Caption. Для размещения кнопки в центре окна по горизонтали наведите указатель манипулятора «мышь» на кнопку, нажмите правую кнопку манипулятора и в меню следуйте подпунктами Position–>Align–>Center in Window. Визуальное проектирование закончено – пора приступить к коду, который Вы сможете увидеть ниже. Все это конечно можно переписать в свой проект и сохранить, но на этапе компиляции у Вас, скорее всего, будут проблемы, поэтому будем действовать последовательно – шаг за шагом. Builder требует некоторой аккуратности. Теперь, обсудим текст кода, а Вы попытайтесь понять как и почему все это работает. Пока ничего не редактируйте, а только смотрите. Переключитесь на закладку “Unit1.hhp” редактора кода и прочитайте текст, который был создан автоматически. //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <ComCtrls.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TPanel *Panel1; TPanel *Panel2; TPanel *Panel3; 7 TPanel *Panel4; TPanel *Panel5; TButton *Button1; TTimer *Timer1; TStatusBar *StatusBar1; private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif С операторами препроцессора, которые начинаются с символа # и выделены зелёным цветом, думаю всё понятно. Ключевые, зарезервированные слова, языка С++ выделены жирным черным цветом, а всё остальное Builder написал самостоятельно в соответствии с вашими дизайнерскими изысками во время визуального проектирования – перетаскивания компонентов с палитры на форму. Ваша форма описана как класс с именем TForm1 и является наследницей класса TForm из библиотеки VCL. В исходном коде к ней можно обращаться по имени Form1, что определяется строкой «extern PACKAGE TForm1 *Form1;». В секции __published: описания класса TForm1 Вы видите указатели на перенесенные вами компоненты: Panel1, Panel2, Panel3, Panel4, Panel5, Button1, Timer1 и StatusBar1. Так как описание находится в этой секции, то к экземплярам соответствующих классов Вы имеете доступ из инспектора объектов, в котором можете изменять свойства, а также назначать функции, определяющие реакцию приложения на события, созданные этими компонентами. В секции public описана всего одна функция «__fastcall TForm1(TComponent* Owner);» – конструктор класса TForm1. Файл Unit1.cpp содержит исполняемые операторы функций класса TForm1. Именно здесь Вы будете записывать свои операторы, а сейчас там только текст заготовки конструктора и описание интерфейса библиотеки VCL. //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; 8 //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } Механизм создания случайных чисел Вам уже известен – в приложении один единственный раз необходимо вызвать инициализирующую функцию random, а затем для каждого числа функцию rand. Но здесь воспользуйтесь современными функциями библиотеки VCL Randomize() и RandomRange(), о которых рекомендую прочитать в справочнике Builder. Для формы Form1 в инспекторе объектов переключитесь на закладку «Events» (События) и напротив строки OnCreate (Создание формы) дважды щелкните левой кнопкой «мышки». В окне редактора появиться заготовка кода функции реакции на событие «Создание формы». void __fastcall TForm1::FormCreate(TObject *Sender) { } Теперь между фигурными скобками, ограничивающими тело функции, запишите следующие ниже строки. Randomize(); Panel1->Caption = AnsiString(RandomRange(0,10)); Panel2->Caption = AnsiString(RandomRange(0,10)); Panel3->Caption = AnsiString(RandomRange(0,10)); Panel4->Caption = AnsiString(RandomRange(0,10)); Panel5->Caption = AnsiString(RandomRange(0,10)); Обратите внимание на то, что в файле Unit1.hpp в классе TForm1 появилось описание функции FormCreate. Сейчас можно нажать на клавишу <F9> и посмотреть, что же Вы натворили. Если все правильно, то приложение будет выполнено, а на панелях формы Вы увидите набор случайных цифр (рис. 2). Здесь, наверное, все понятно. Первая строчка инициализирует генератор псевдослучайных чисел, а в пяти последующих вызывается функция RandomRange(0,10) для создания случайного числа в диапазоне от 0 до 9 включительно. Результат работы этой функции выступает в качестве аргумента конструктора класса AnsiString, создающего экземпляр класса AnsiString, который присваивается свойству Captinon экземпляра класса TPanel. Заставим цифры изменяться. Для этого активизируем при проектировании компонент Timer1, переключимся на закладку Events инспектора объектов и дважды щелкнем левой кнопкой «мышки» на событии OnTimer. Далее в тело заготовки функции реакции на прерывание таймера скопируем четыре последних строчки предыдущей функции. void __fastcall TForm1::Timer1Timer(TObject *Sender) 9

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.