Написание маленьких приложений на borland c builder


Содержание

Написание маленьких приложений на borland c builder

Виктор Алексанкин, Наталия Елманова

Введение

Borland C++ Builder — выпущенное недавно компанией Borland средство быстрой разработки приложений, позволяющее создавать приложения на языке C++, используя при этом среду разработки и библиотеку компонентов Delphi. В настоящей статье рассматривается среда разработки C++ Builder и основные приемы, применяемые при проектировании пользовательского интерфейса.

Среда разработки C++ Builder

C++ Builder представляет собой SDI-приложение, главное окно которого содержит настраиваемую инструментальную панель (слева) и палитру компонентов (справа). Помимо этого, по умолчанию при запуске C++ Builder появляются окно инспектора объектов (слева) и форма нового приложения (справа). Под окном формы приложения находится окно редактора кода.

Рис.1. Среда разработки C++ Builder

Формы являются основой приложений C++ Builder. Создание пользовательского интерфейса приложения заключается в добавлении в окно формы элементов объектов C++ Builder, называемых компонентами. Компоненты C++ Builder располагаются на палитре компонентов, выполненной в виде многостраничного блокнота. Важная особенность C++ Builder состоит в том, что он позволяет создавать собственные компоненты и настраивать палитру компонентов, а также создавать различные версии палитры компонентов для разных проектов.

Компоненты C++ Builder

Компоненты разделяются на видимые (визуальные) и невидимые (невизуальные). Визуальные компоненты появляются во время выполнения точно так же, как и во время проектирования. Примерами являются кнопки и редактируемые поля. Невизуальные компоненты появляются во время проектирования как пиктограммы на форме. Они никогда не видны во время выполнения, но обладают определенной функциональностью (например, обеспечивают доступ к данным, вызывают стандартные диалоги Windows 95 и др.)

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

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

Каждый компонент C++ Builder имеет три разновидности характеристик: свойства, события и методы.

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

Рис.3. Инспектор объектов

Свойства компонентов

Свойства являются атрибутами компонента, определяющими его внешний вид и поведение. Многие свойства компонента в колонке свойств имеют значение, устанав иваемое по умолчанию (например, высота кнопок). Свойства компонента отображаются а странице свойств (Properties). Инспектор объектов отображает опубликованные (published) свойства компонентов. Помимо published-свойств, компоненты могут и чаще всего имеют общие (public), опубликованные свойства, которые доступны только во время выполнения приложения. Инспектор объектов используется для установки свойств во время проектирования. Список свойств располагается на странице свойств инспектора объектов. Можно определить свойства во время проектирования или написать код для видоизменения свойств компонента во время выполнения приложения.

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

События

Страница событий (Events) инспектора объектов показывает список событий, распознаваемых компонентом (программирование для операционных систем с графическим пользовательским интерфейсом, в частности, для Windows 95 или Windows NT предполагает описание реакции приложения на те или иные события, а сама операционная система занимается постоянным опросом компьютера с целью выявления наступления какого-либо события). Каждый компонент имеет свой собственный набор обработчиков событий. В C++ Builder следует писать функции, называемые обработчиками событий, и связывать события с этими функциями. Создавая обработчик того или и ого события, вы поручаете программе выполнить написанную функцию, если это событие произойдет.

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

Рис.4. Прототип обработчика событий.

Методы

Метод является функцией, которая связана с компонентом, и которая объявляется как часть объекта. Создавая обработчики событий, можно вызывать методы, используя следующую нотацию: ->, например:

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

Менеджер проектов

Файлы, образующие приложение — формы и модули — собраны в проект. Менеджер проектов показывает списки файлов и модулей приложения и позволяет осуществ ять навигацию между ними. Можно вызвать менеджер проектов , выбрав пункт меню View/Project Manager. По умолчанию вновь созданный проект получает имя Project1.cpp.

Рис.5. Менеджер проектов

По умолчанию проект первоначально содержит файлы для одной формы и исходного кода одного модуля. Однако большинство проектов содержат несколько форм и модулей. Чтобы добавить модуль или форму к проекту, нужно щелкнуть правой кнопкой мыши и выбрать пункт New Form из контекстного меню. Можно также добавлять существующие формы и модули к проекту, используя кнопку Add контекстного меню менеджера проектов и выбирая модуль или форму, которую нужно добавить. Формы и модули можно удалить в любой момент в течение разработки проекта. Однако, из-за того, что форма связана всегда с модулем, нельзя удалить одно без удаления другого, за исключением случая, когда модуль не имеет связи с формой. Удалить модуль из проекта можно, используя кнопку Remove менеджера проектов.

Если выбрать кнопку Options в менеджере проектов, откроется диалоговая панель опций проекта, в которой можно выбрать главную форму приложения, определить, какие формы будут создаваться динамически, каковы параметры компиляции модулей (в том числе созданных в Delphi 2.0, так как C++ Builder может включать их в проекты) и компоновки.

Рис. 6. Установка опций проекта

Важным элементом среды разработки C++ Builder является контекстное меню, появляющееся при нажатии на правую клавишу мыши и предлагающее быстрый доступ к наиболее часто используемым командам.

Разумеется, C++ Builder обладает встроенной системой контекстно-зависимой помощи, доступной для любого элемента интерфейса и являющейся обширным источником справочной информации о C++ Builder.

Создание приложений в С++ Builder

Первым шагом в разработке приложения C++ Builder является создание проекта. Файлы проекта содержат сгенерированный автоматически исходный текст, который становится частью приложения, когда оно скомпилировано и подготовлено к выполнению. Чтобы создать новый проект, нужно выбрать пункт меню File/New Application.

C++ Builder создает файл проекта с именем по умолчанию Project1.cpp, а также make-файл с именем по умолчанию Project1.mak. При внесении изменений в проект, таких, как добавление новой формы, C++ Builder обновляет файл проекта.

Рис.7 Файл проекта

Проект или приложение обычно имеют несколько форм. Добавление формы к проекту создает следующие дополнительные файлы:

  • Файл формы с расширением.DFM, содержащий информацию о ресурсах окон для конструирования формы
  • Файл модуля с расширением.CPP, содержащий код на C++.
  • Заголовочный файл с расширением .H, содержащий описание класса формы.

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

Для того чтобы добавить одну или более форм к проекту , выберите пункт меню File/New Form. Появится пустая форма, которая будет добавлена к проекту. Можно воспользоваться пунктом меню File/New, выбрать страницу Forms и выбрать подходящий шаблон из репозитория объектов.

Рис.8 Шаблоны форм

Для того, чтобы просто откомпилировать текущий проект, из меню Compile нужно выбрать пункт меню Compile. Для того, чтобы откомпилировать проект и создать исполняемый файл для текущего проекта, из меню Run нужно выбрать пункт меню Run. Компоновка проекта является инкрементной (перекомпилируются только изменившиеся модули).

Если при выполнении приложения возникает ошибка времени выполнения, C++ Builder делает паузу в выполнении программы и показывает редактор кода с курсором, установленным на операторе, являющемся источником ошибки. Прежде чем делать необходимую коррекцию, следует перезапустить приложение, выбирая пункт меню Run из контекстного меню или из меню Run, закрыть приложение и лишь затем вносить изменения в проект. В этом случае уменьшится вероятность потери ресурсов Windows.

Пример: создание простейшего приложения

Теперь попробуем создать простейшее приложение, позволяющее вводить текст в редактируемое поле и добавлять этот текст к списку при нажатии мышью на кнопку. Выберем пункт меню File/New Application для создания проекта и сохраним его главную форму под именем samp1.cpp, а сам проект под именем samp.mak. Поместим на форму компоненты Button, Edit и ListBox со страницы Standard палитры компонент.

Рис. 9. Размещение компонентов на форме

После этого выберем на форме компонент Edit и удалим текущее значение свойства Text. Затем установим свойство Caption для Button1 равным «Добавить».

Чтобы добавить обработчик события OnClick для кнопки Добавить, нужно выбрать эту кнопку на форме, открыть страницу событий в инспекторе объектов и дважды щелкнуть мышью на колонке справа от события OnClick. В соответствующей строке ввода появится имя функции. C++ Builder сгенерирует прототип обработчика событий и покажет его в редакторе кода. После этого следует ввести следующий код в операторные скобки < . >тела функции:

Для компиляции приложения в меню Run выберем пункт Run. Теперь можно что-нибудь ввести в редактируемое поле, нажать мышью на кнопку Добавить и убедиться, что вводимые строки добавляются к списку.

Рис.10. Так выглядит готовое приложение.

Теперь модифицируем приложение, добавив кнопки Удалить и Выход. Для этого добавим еще две кнопки, изменим их свойство Caption и создадим обработчики событий, связанных с нажатием на эти кнопки:

Рис. 11. Модифицированное приложение

Для кнопки Удалить: Для кнопки Выход:

Сохраним и скомпилируем приложение, а затем протестируем его.

Итак, мы познакомились со средой разработки Borland C++ Builder и создали простое приложение. В следующих статьях этого цикла будут описаны приемы манипуляции компонентами на форме и более подробно рассмотрены особенности поведения различных компонентов в приложении.

Координаты автора: Центр Информационных Технологий,
тел. (095)932-92-12, 932-92-13,

Написание маленьких приложений на borland c builder

Знакомство со средой программирования Borland C++ Builder. Компоненты: форма, поле вывода текста, образ, электронная кнопка и их свойства. Событие и функция обработки события. Компиляция проекта

После запуска C++ Builder в верхней части экрана вашего компьютера вы увидите главное окно, содержащее систему меню и палитру компонентов, состоящую из множества вкладок, каждая из которых включает в себя свой набор компонентов (объектов). В главном окне расположены так же некоторые часто используемые быстрые кнопки, которые дублируют основные команды системы меню. Как правило, в левой части экрана расположено окно Object TreeView (Окно списка объектов). Немного ниже находится окно Object Inspector (Окно свойств объектов). Это окно разбито на две вкладки Properties (Свойства) и Events (События). В центре экрана вы увидите окно стартовой формы с именем Form1, это и есть ваше будущее приложение для Windows! Это самый главный компонент – фундамент, на котором вы будете строить вашу программу, используя другие необходимые компоненты. Ну и, конечно же, в этом строительстве вы непременно будете заниматься написанием программного кода, который будет отвечать за логику программы. Строки вашей программы вы будете размещать в окне редактирования программного кода, которое можно вызвать, например, кликнув два раза мышью по форме Form1. Это окно имеет и более короткое название – редактор кода. При наборе текста программы редактор кода автоматически выделяет ключевые слова полужирным шрифтом, а комментарии курсивом. Так с первого взгляда будет выглядеть мощная среда программирования Borland C++ Builder. Запустить проект вашего будущего приложение для Windows можно прямо сейчас. Для этого достаточно нажать на функциональную клавишу F9 или кликнуть мышью на кнопку Run в виде зеленого треугольника, находящейся в главном окне. И третья возможность – воспользуйтесь системой меню. После запуска проекта приложения не забудьте завершить его работу стандартным для Windows-приложений образом.

Для начала познакомимся с некоторыми свойствами компонента форма. В окне Object Inspector найдите свойство Color (Цвет) компонента Form1. Установите для этого свойства значение clPurple (фиолетовый). Значение этого же свойства можно изменить во время работы приложения программным способом. Вызовите окно программного кода, кликнув на форму два раза. Затем в окне Object Inspector выберите вторую вкладку Events и кликните на событие OnClick (одиночный клик мышью). Рядом появится небольшое поле ввода. Кликните по этому полю два раза – в окне программного кода появится функция FormClick обработки события OnClick (одиночный клик мышью по форме). В данную процедуру прерывания внутри фигурных скобок впишите инструкцию:

Сначала записывается компонент, затем выбранное его свойство и, наконец, значение этого свойства. Формат такой последовательности записи необходимо запомнить. Название компонента и названия его свойств необходимо записывать с большой буквы. В окне редактирования программного кода это будет выглядеть так:

void __fastcall TForm1::FormClick(TObject *Sender)

Form1->Color = clRed; //красный цвет для формы

Среда быстрой разработки C++ Builder автоматически оформляет подобным образом и другие функции обработки событий, понимаемых операционной системой Windows. Здесь словосочетание fastcall буквально означает – быстрый вызов. В нашем примере это быстрый вызов функции FormClick обработки события OnClick. Любая функция обработки события начинается с открывающейся фигурной скобки и завершается закрывающейся фигурной скобкой. Внутри этих скобок вы будете записывать одну или несколько инструкций, которые компьютер должен выполнить при наступлении указанного события. Запись каждой инструкции должна обязательно заканчиваться точкой с запятой.

Проверьте проект приложения в работе. После запуска приложения кликните на форму, ее цвет при этом изменится на красный. Таким образом, вызывая то или иное событие, пользователь будет управлять работой вашего приложения для Windows.

Измените заголовок формы вашего приложения. В окне Object Inspector выберите свойство Caption (Надпись) и запишите в поле ввода новое значение, например, «Мое первое приложение для Windows».

Разместите на форме какой-либо текст. Для чего во вкладке Standard (Стандартные компоненты) панели управления выберите компонент Label (Поле вывода текста), кликнув на значок с изображением буквы «А» и поместите объект Label1 на форме. В окне Object Inspector для свойства Caption задайте новое произвольное значение, например, «Волшебная страна Borland C++ Builder». Увеличьте размер шрифта надписи. Воспользовавшись составным свойством Font (Шрифт), кликните на «плюс» и ниже выберите Size (Размер). Измените размер шрифта с «8» на «24». Выкрасите надпись в желтый цвет: выберите свойство Color и измените его значение на clYellow.

Теперь разместите на форме вашего приложения два изображения. Достигнуть поставленной цели можно, применив компонент Image (Образ). Достаньте этот компонент из панели управления, кликнув по вкладке Additional (Дополнительные компоненты), а затем на кнопку Image. Для установки указанного компонента на форме вашего приложения, кликните по форме в любой ее свободной области. На форме появится область, очерченная пунктирной линией. Новый объект автоматически получает имя – Image1. Теперь необходимо загрузить в этот компонент какое-либо небольшое по размерам изображение, имеющееся на вашем компьютере. В окне Object Inspector, во вкладке Properties, воспользовавшись полосой прокрутки, выберите одно из многочисленных свойств компонента Image – свойство Picture (Рисунок), кликнув по нему мышью. Рядом вы увидите значение этого компонента – None (Нет). Кликните по кнопке с изображением многоточия, и тут же появится окно для загрузки изображения Picture Editor. Нажмите на кнопку Load (Загрузка) и выберите нужный вам рисунок или фотографию, например, с расширением BMP. После того как картинка окажется на форме, размеры полезной области объекта Image1 можно откорректировать вручную. Еще проще это сделать, если у свойства AutoSize (Авторазмер) его значение false (ложь) изменить на новое значение true (истина), например, кликнув по надписи false два раза. Перетащите изображение, удерживая мышью, в нужную вам часть формы. Подобным образом разместите на форме еще одно изображение. Если появится необходимость, то измените размеры самой формы с помощью мыши до запуска проекта. Запустите проект приложения на выполнение, а затем закройте его.

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

Если вы хотите изменить размеры изображения, то свойству Stretch (Растяжение) придайте значение true. При этом для свойства AutoSize обязательно установите значение false. К сожалению изображения формата BMP при изменении размера теряют в качестве, а вот виндовские резиновые файлы изображения формата WMF таким недостатком не обладают.

Посмотрим, как можно смонтировать на форму электронную кнопку. Во вкладке Standard панели управления выберите компонент Button (электронная кнопка) и разместите ее на форме. Кликните по вновь созданной кнопке Button1 два раза, и вы окажетесь в функции обработки Button1Click (кликнуть на кнопку). В эту событийную процедуру прерывания впишите инструкцию:

Image1->Visible = false; //скрыть первый рисунок

Это значит, что для компонента Image1 его свойству Visible (Видимость) будет присвоено значение false, что приведет к исчезновению первого рисунка. Запустите проект и проверьте работоспособность электронной кнопки. Изготовьте еще одну кнопку, которая будет заставлять рисунок вновь появляться. Для второй кнопки понадобится инструкция:

Image1->Visible = true; //показать первый рисунок

Создайте еще две кнопки для второго рисунка, которые будут работать аналогично. На каждой кнопке поместите подходящие на ваш взгляд надписи, поясняющие действие кнопок. Для этого у компонента Button свойству Caption придайте значение – название электронной кнопки на русском. И в завершении установите на форме пятую кнопку, которая позволит пользователю закрывать приложение, для чего наберите инструкцию:

Close(); //завершение работы приложения

Проверьте работоспособность созданной кнопки и поместите на ней надпись «Выход», изменив значение свойства Caption.

Для того чтобы сохранить проект приложения, в меню «File» (Файл) выберите команду «Save Project As…» (Сохранить проект как…), выберите нужные вам диск и папку. Сохраните проект. Если вы захотите доработать проект или просмотреть его программный код, кликните по файлу проекта с расширением BPR.

Для создания исполняемого файла вашей программы с расширением EXE зайдите в меню «Project», выберите команду «Make Project1» (Изготовить проект) или с клавиатуры отработать клавишный аккорд Ctrl+F9. Такой процесс сборки файлов проекта в единый EXE-файл называется компиляцией. Исполняемый самостоятельный файл можно перенести на другой компьютер. В том случае, если ваше приложение является мультимедийным, то файлы музыки, звука, видео, например, MID, MP3, WAV, AVI нужно будет скопировать вместе с исполняемым файлом. А вот файлы изображений переносить не надо, так как они впитываются в исполняемый файл в процессе компиляции.

Если вы хотите избавиться от проблем с установкой вашей программы на другом компьютере, связанных с отсутствием на нем необходимых библиотек, то следует изменить некоторые свойства проекта. Для этого войдите в меню «Project», выберите команду «Options…» во вкладке «Linker» уберите галочку «Use dynamic RTL», а во вкладке «Packages» уберите галочку «Build with runtime packages». В первом случае в EXE-файл включается RTL-библиотека времени выполнения, а во втором – динамические библиотеки в которых находятся используемые компоненты и системные функции. При этом размер исполняемого файла существенно увеличится, зато теперь вы сможете перенести его на другой компьютер простым копированием. Файл останется работоспособным также после переустановки операционной системы Windows на вашем компьютере.

Создание приложений в C++ Builder

приложение файл база данные

Первым шагом в разработке приложения C++ Builder является создание проекта. Файлы проекта содержат сгенерированный автоматически исходный текст, который становится частью приложения, когда оно скомпилировано и подготовлено к выполнению. Чтобы создать новый проект, нужно выбрать пункт меню File/New Application.

C++ Builder создает файл проекта с именем по умолчанию Project1.cpp, а также make-файл с именем по умолчанию Project1.mak. При внесении изменений в проект, таких, как добавление новой формы, C++ Builder обновляет файл проекта.

Проект или приложение обычно имеют несколько форм. Добавление формы к проекту создает следующие дополнительные файлы:

ѕ Файл формы с расширением.DFM, содержащий информацию о ресурсах окон для конструирования формы

ѕ Файл модуля с расширением.CPP, содержащий код на C++.

ѕ Заголовочный файл с расширением.H, содержащий описание класса формы.

Для того, чтобы просто откомпилировать текущий проект, из меню Compile нужно выбрать пункт меню Compile. Для того чтобы откомпилировать проект и создать исполняемый файл для текущего проекта, из меню Run нужно выбрать пункт меню Run. Компоновка проекта является инкрементной (перекомпилируются только изменившиеся модули).

Если при выполнении приложения возникает ошибка времени выполнения, C++ Builder делает паузу в выполнении программы и показывает редактор кода с курсором, установленным на операторе, являющемся источником ошибки. Прежде чем делать необходимую коррекцию, следует перезапустить приложение, выбирая пункт меню Run из контекстного меню или из меню Run, закрыть приложение и лишь затем вносить изменения в проект. В этом случае уменьшится вероятность потери ресурсов Windows. [Виктор Алексанкин, Наталия Елманова, Компьютер-Пресс, 2007, N 4.].

C++Builder XE — вопросы и ответы

Общие вопросы


Что такое Embarcadero C++Builder?


Какие редакции продукта доступны и чем они отличаются друг от друга?

C++Builder XE Professional

Редакция C++Builder XE Professional предназначена для создания высокопроизводительных приложений для настольных систем и рабочих станций и приложений с функциями сенсорного ввода, работающих под управлением Windows и использующих (или не использующих) встроенные и локальные базы данных. Благодаря объединению функций ANSI C++ библиотеки визуальных компонентов (VCL) и средств создания приложений, представляющих собой единый исполняемый файл, C++Builder полностью удовлетворяет потребности разработчиков на C++, которым необходимо создавать и поддерживать пакетные приложения Windows с графическим интерфейсом пользователя. Обеспечиваются следующие возможности:

  • подключение к локальным базам данных InterBase ® и MySQL;
  • библиотека визуальных компонентов (VCL) для веб-решений (ограниченная функциональность) с поддержкой только автономных приложений и не более пяти подключений; поддержка ISAPI и HTTPS отсутствует;
  • визуализация кода с использованием UML, упрощающая анализ исходного кода благодаря наглядному представлению.

C++Builder XE Enterprise

Редакция C++Builder XE Enterprise предназначена для разработчиков, применяющих C++ для создания активно работающих с данными многозвенных приложений с графическим интерфейсом, веб-приложений и клиент-серверных приложений, использующих различные источники данных и серверы баз данных. Высокая производительность и поддержка различных серверов баз данных превращают C++Builder Enterprise в идеальное решение для создания систем, использующих серверы баз данных разных производителей, и разработки надежных приложений, способных работать с разнородными серверами баз данных. C++Builder Enterprise поддерживает все возможности редакции Professional, а также следующие возможности создания веб-приложений, клиент-серверных приложений и приложений для работы с многоуровневыми базами данных:

  • подключение к серверам баз данных InterBase, Firebird, MySQL, Microsoft SQL Server, Oracle, DB2, Informix и Sybase;
  • разработка клиентов многозвенных приложений DataSnap;
  • FinalBuilder Embarcadero Edition и средства командной строки для автоматизации построения проектов;
  • библиотека визуальных компонентов (VCL) для веб-решений с поддержкой автономных приложений, служб, расширений ISAPI; поддерживается HTTPS, число подключений не ограничивается;
  • полное двустороннее UML-моделирование с несколькими типами диаграмм, синхронизацией кода и моделей, созданием документации и шаблонами разработки.

C++Builder XE Architect

Редакция C++Builder XE Architect предназначена для разработчиков и групп, использующих C++ для создания клиент-серверных веб-приложений и приложений с многоуровневым графическим интерфейсом, активно работающих с данными и являющихся частью сложных или крупномасштабных корпоративных систем баз данных. Объединяя возможности быстрой разработки управляемых данными приложений и высокоскоростного доступа к данным с мощными средствами визуального моделирования данных, C++Builder Architect помогает разработчикам анализировать, проектировать и максимально эффективно использовать существующие корпоративные базы данных и структуры данных. C++Builder Architect поддерживает все возможности выпуска Enterprise и предоставляет следующие дополнительные мощные средства моделирования и проектирования баз данных:

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

Что нового в C++Builder XE?

C++Builder XE содержит сотни новых возможностей и усовершенствований для быстрой разработки полнофункциональных приложений. С помощью C++Builder XE можно быстрее выполнять работу, создавать высококачественные приложения, реализовывать многозвенную архитектуру и облачные вычисления. Ниже представлены некоторые ключевые новые возможности.

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

  • Управление версиями Subversion интегрировано в IDE для управления исходным кодом пользователей и групп.
  • Инструменты FinalBuilder Embarcadero Edition, средства командной строки для аудита, метрик, средства форматирования и создания документов помогают автоматизировать и расширить процесс построения проекта.
  • Средства работы с профилями AQTime Standard помогают выявлять и устранять проблемы при создании высокопроизводительных приложений.
  • Расширенные возможности редактора кода для поиска, форматирования, навигации и сравнения файлов.
  • CodeSite Express — средства журналирования для отладки высококачественных приложений.

Разработка приложений с использованием технологий облачных вычислений и многозвенных систем

  • Новые компоненты упрощают работу с типами данных Microsoft Windows Azure, включая blobs, queues и tables.
  • Удобное развертывание в облачной инфраструктуре EC2.
  • Новые функции DataSnap, включая создание серверов с помощью C++Builder, новые мастера, поддержку серверов RESTful, шифрование, сжатие и новые параметры клиентских приложений.

Дополнительные возможности версии XE

  • Бесплатные лицензии на прежние версии: C++Builder 2010, 2009, 2007 и 6.
  • Сетевое лицензирование ToolCloud для упрощенного управления лицензиями и получения программных продуктов для организаций

Простое обновление до пакета All-Access, если требуется иметь полный набор современных средств разработки и управления базами данных.

Что означает XE в названии C++Builder XE?

XE — это обозначение новых версий основных продуктов Embarcadero. X означает разнородную среду, а E — Embarcadero. Обозначение XE показывает, что продукт является частью семейства инструментов Embarcadero для разработки разнородных приложений и баз данных. Такое обозначение, кроме того, подчеркивает уникальное преимущество решений Embarcadero, которое заключается в поддержке подключения к разнородным базам данных и платформам, а также в готовности к развертыванию.

Для C++Builder обозначение XE означает возможность взаимодействия с разнородными базами данных и возможности облачного развертывания DataSnap; в будущих выпусках будет поддерживаться возможность развертывания клиент-серверных компонентов на различные платформы и архитектуры ОС. Продукты с обозначением XE также поддерживают ToolCloud или содержат возможности ToolCloud для упрощенного доступа к инструментам по запросу и управления лицензиями.

Использование обозначения XE также дает возможность объединить различные схемы нумерации и обозначения версий, использовавшиеся в двух десятках разных продуктов Embarcadero. Например, в некоторых выпущенных ранее продуктах номер года (к примеру, 2010) означал год, когда был выпущен продукт; в других продуктах номер года означал будущий год, на который запланирован выпуск продукта. Кроме того, использовались различные цифровые и десятичные обозначения версий, например версия 3 или версия 7.5.2, причем в одних случаях каждый год увеличивался основной номер версии, а в других — второе число в номере версии.

Начиная с продуктов, выпущенных в 2010 календарном году, все основные продукты Embarcadero XE будут обозначаться кодом версии XE, а последующие основные версии будут обозначаться XE2, XE3, XE4 и т. п. Для более удобной поддержки и определения последовательностей версий продукты будут по-прежнему содержать внутренние технические номера версий, аналогичные использованным ранее. Например, для C++Builder 2010 в окне «О программе» отображается внутренний технический номер версии v14.0.XXXX, а внутренний технический номер версии C++Builder XE имеет аналогичный формат: v15.0.XXXX.

Состав C++Builder

C++Builder XE . Embarcadero® C++Builder® XE — это единственная среда C++, которая полностью соответствует концепции быстрой разработки приложений (RAD), объединяет мощные средства ANSI C++ и многофункциональную расширяемую инфраструктуру визуальных компонентов, а также предоставляет удобные средства для быстрого создания Windows-приложений.

ER/Studio 8.5 Developer Edition (в C++Builder Architect — полная лицензия, в C++Builder Professional и Enterprise — лицензия на ознакомительную версию). ER/Studio помогает проектировщикам баз данных анализировать, документировать и повторно использовать данные и предоставляет средства обратного проектирования, анализа и оптимизации баз данных.

InterBase SMP 2009 Developer Edition . InterBase SMP 2009 Developer Edition предоставляет разработчикам лучшую межплатформенную базу данных для создания и тестирования приложений для встраиваемых приложений и приложений для малых и средних предприятий.
Дополнительные программы. C++Builder XE включает широкий набор дополнительных программ, предоставляющих различные возможности.

  • InstallAware Express предоставляет уникальные средства, позволяющие пользователям, которые не имеют навыков программирования и разработки сценариев, быстро создавать сложные установочные пакеты.
  • Rave Reports компании Nevrona — широкий набор решений для создания отчетов.
  • TeeChart Standard компании Steema — компоненты для быстрого и простого создания диаграмм.
  • Библиотека визуальных компонентов (VCL) для веб-решений (IntraWeb) компании AtoZed — полнофункциональная платформа веб-приложений RAD.
  • FinalBuilder Embarcadero Edition служит для автоматизации процесса построения проекта.
  • CodeSite Express — средства ведения журнала для сборки высококачественных приложений.
  • AQTime Standard компании SmartBear — создание профилей производительности.
  • Beyond Compare — сравнение файлов исходного кода.

ПО партнеров . Пользователи C++Builder получают доступ к широкому кругу бесплатных и пробных версий средств и компонентов, выпускаемых партнерами Embarcadero Technology. Соответствующие программы доступны с помощью средства запуска продукта, а также в ISO-образе DVD-диска с партнерским ПО и на сайте Embarcadero Developer Network.

Вместе с C++Builder XE предоставляются лицензии на прежние версии ПО?

Да. Вместе с C++Builder XE предоставляются лицензии на прежние версии этого программного продукта — C++Builder 2010, C++Builder 2009, C++Builder 2007 и C++Builder 6.

При приобретении индивидуальных именованных пользовательских лицензий, а также пакетов из 5 или 10 лицензий необходимо перейти по адресу http://www.embarcadero.com/xe-earlier-versions после регистрации серийного номера продукта XE. Можно ввести зарегистрированный серийный номер XE и получить серийные номера прежних версий, а также файлы для их загрузки. Эти лицензии будут привязаны к вашей учетной записи пользователя, их нельзя передавать и продавать. Если ваша лицензия на версию XE является обновлением, то вы не получите лицензии на прежние версии продуктов, с которых выполнено обновление.

Запросить лицензии на прежние версии необходимо в течение 180 дней с момента приобретения продукта XE.

При приобретении лицензий Network Named ToolCloud или Network Concurrent ToolCloud лицензии на прежние версии (2007-2010) будут входить в состав сетевой лицензии. Каждая сетевая лицензия считается лицензией на пакет, ее можно использовать, чтобы запускать только одну из версий продукта в один момент времени. C++Builder 6 не входит в состав сетевых лицензий, поэтому на каждую приобретенную лицензию вы получите один серийный номер C++Builder 6. Лицензиями C++Builder 6 невозможно управлять при помощи сервера лицензий, эти продукты нельзя использовать параллельно.

Лицензии на прежние версии не предоставляются вместе с лицензиями Academic License.

Чтотакое Embarcadero® RAD Studio XE?

Embarcadero RAD Studio XE представляет собой полнофункциональный пакет для разработки приложений и позволяет быстро и наглядно создавать приложения с графическим пользовательским интерфейсом для Windows, .NET, PHP и веб-решений. В состав RAD Studio XE входят продукты Delphi ® , C++Builder®, Delphi Prism ™ и RadPHP ™ , позволяющие создавать приложения для различных платформ Windows, веб-систем и баз данных до пяти раз быстрее.

Чтотакое Embarcadero All-Access XE?

Если требуется C++Builder XE вместе со средствами разработки для языка программирования Delphi, .NET, Java, PHP, Ruby on Rails; а также полный набор средств создания баз данных, управления и повышения их производительности, то самым подходящим решением является Embarcadero All-Access. Embarcadero All-Access XE предоставляет полный набор средств разработки приложений и баз данных. Это простое в использовании универсальное решение для групп (любого размера) разработчиков, архитекторов, тестировщиков и администраторов баз данных. All-Access отлично подходит для крупных корпоративных групп, работающих над различными технологиями, и для небольших групп, консультантов и специалистов, занимающихся разными этапами жизненного цикла разработки ПО.

Где можно приобрести C++Builder XE? Сколько стоит этот продукт?

Узнать цены и приобрести C++Builder XE можно в нашем интернет-магазине.

Что такое поддержка и техническое обслуживание C++Builder?

Пакет поддержки и технического обслуживания можно приобрести при покупке или обновлении продукта C++Builder. Соглашение о поддержке и техническом обслуживании дает право в течение года получать обновления (включая основные обновления) и определенное число обращений в службу поддержки. Дополнительные сведения см. в пункте Support («Поддержка») раскрывающегося меню на веб-сайте Embarcadero.

Как получить последние обновления для C++Builder?

Зарегистрированные пользователи могут загрузить обновления и дополнительное ПО для пользователей C++Builder по адресу http://cc.embarcadero.com/reg/c_builder . Дополнительные обновления, существенно расширяющие возможности продукта, доступны только пользователям, заключившим соглашение на техническое обслуживание. Уведомления об этих обновлениях рассылаются по электронной почте, а сами обновления можно загрузить с портала поддержки, следуя инструкциям, содержащимся в письме с уведомлением.

Доступно ли ПО C++Builder на каких-либо языках, кроме английского?

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

Какие типы лицензий доступны?

Предлагаются следующие типы лицензий C++Builder:

  • Именная лицензия — для индивидуальных пользователей и небольших групп.
  • 5- и 10-пользовательские пакеты именных лицензий.
  • Сетевые лицензии — именные и с одновременным доступом на основе ELS (Embarcadero License Server) и с поддержкой технологии ToolCloud. Обеспечивают дополнительную гибкость управления лицензиями, доступность и управление продуктами.
  • Сетевые лицензии — именные и с одновременным доступом на основе FLEXNet. Предназначены для тех организаций, где управление ПО от различных поставщиков ведется на основе сервера лицензирования FLEXNet.
  • Образовательные индивидуальные лицензии типа ESD — для студентов и преподавателей.
  • Образовательные лицензии для использования в учебных классах — сетевые лицензии на основе сервера ELS.

Какие ограничения имеют редакции для учебных заведений?

Выпуски Academic разрешается использовать только в учебных целях в учебных и образовательных учреждениях. Учебные и образовательные учреждения не имеют права использовать выпуски Academic для разработки программного обеспечения, предназначенного для внутреннего применения. Ценовое предложение обновления не распространяется на продукты для учебных заведений. Лицензии Academic License не предусматривают доступ к лицензиям на более старые версии. На лицензии Academic License не распространяются цены на обновление, действующие для коммерческих лицензий.

Кто имеет право приобрести C++Builder XE по ценам обновления?


  • Обновление редакции Professional — цены обновления доступны для зарегистрированных владельцев лицензий RAD Studio, Delphi или C++Builder версий 2007-2010. В течение ограниченного времени (по 31 декабря 2010 года) зарегистрированные владельцы лицензий на версии 2006 продуктов Delphi, C++Builder, Borland Developer Studio (выпуски Professional, Enterprise или Architect), а также продуктов Turbo Professional могут воспользоваться ценами обновления.
  • Обновление Enterprise — цены обновления доступны для зарегистрированных владельцев лицензий RAD Studio, Delphi или C++Builder версий 2007-2010 (редакции Professional, Enterprise или Architect). В течение ограниченного времени (по 31 декабря 2010 года) зарегистрированные владельцы лицензий на версии 2006 продуктов Delphi, C++Builder, Borland Developer Studio (редакции Professional, Enterprise или Architect) могут воспользоваться ценами обновления.
  • Обновление редакции Architect — цены обновления доступны для зарегистрированных владельцев лицензий RAD Studio, Delphi или C++Builder версий 2007-2010 (редакции Enterprise или Architect). В течение ограниченного времени (по 31 декабря 2010 года) зарегистрированные владельцы лицензий на версии 2006 продуктов Delphi, C++Builder, Borland Developer Studio (редакции Enterprise или Architect) могут воспользоваться ценами обновления.

Ценовое предложение обновления не распространяется на продукты для учебных заведений.

Blackfish SQL по-прежнему входит в состав C++BuilderXE?

Blackfish SQL не входит в состав C++Builder начиная с версии XE. Обладатели лицензии на Blackfish SQL из предыдущей версии могут по-прежнему использовать этот продукт. В качестве замены рекомендуется использовать продукт InterBase, доступный во множестве конфигураций и представляющий собой отличную встроенную БД.

Каким образом лицензируется ПО InterBase, входящее в состав C++Builder XE?

InterBase 2009 Developer Edition — это сервер InterBase SMP 2009 Server, поддерживающий до 20 пользователей и до 80 логических подключений. Чтобы в тестовых целях установить на сервере ПО InterBase Developer Edition, можно воспользоваться серийным номером, указанным в файле Readme C++Builder XE, или загрузить InterBase и запросить серийный номер на странице загрузки по адресу https://downloads.embarcadero.com/free/interbase https://downloads.embarcadero.com/free/interbase .

Разработчикам, которые готовы разворачивать приложения, использующие InterBase, Embarcadero предлагает различные редакции (Desktop, Server и To-Go) и варианты лицензирования (гибкое лицензирование сервера, пакеты лицензий и OEM-лицензии). Для получения дополнительных сведений обращайтесь в отдел продаж компании Embarcadero и к ее партнерам. Дополнительную информацию о лицензировании см. в условиях лицензирования в файле license.rtf, поставляемом в составе C++Builder.

Технические вопросы


Можно ли развертывать приложения под управлением версии Windows, отличающейся от версии, в которой велась разработка?

Да. Разрабатывая приложения, можно использовать наиболее удобную для вас версию Windows: Windows 7, Windows Vista, Windows XP, Windows Server 2008 или Windows Server 2003. А приложения, созданные с помощью C++Builder, будут работать под управлением любой из этих операционных систем, а также под управлением Windows 2000.

Будут ли приложения, созданные с помощью C++Builder XE, работать под управлением более старых версий Windows, включая Windows 2000, Windows 95, Windows 98 и Windows ME?

Поскольку в приложениях, созданных в C++Builder XE, в качестве строкового типа по умолчанию используются строки Юникода, Windows 95, 98 и ME не могут выполнять такие приложения. Эти операционные системы не поддерживают строки Юникода, корпорация Майкрософт их не поддерживает. Приложения, созданные с помощью C++Builder XE, будут работать под управлением Windows 2000.

Можно ли переносить существующий код в Юникод? Как это сделать?

Основная часть кода сохранит работоспособность, используя по умолчанию новый тип данных UnicodeString. Код, использующий операции со строковыми данными на уровне байтов или перенос данных в строковых переменных, возможно, потребует анализа и, вероятно, обновления для соответствия новым размерам символов, используемых в строковых данных Юникода. Дополнительные сведения о переносе кода в Юникод см. в документации и на сайте Embarcadero Developer Network.

Нужно ли регистрировать свою копию C++Builder XE?

Да. При первом запуске продукта откроется небольшое приложение и будет предложено пройти регистрацию. Затем будет проверена подлинность ключа продукта, и продукт будет зарегистрирован и установлен.

Можно ли в C++Builder XE открывать проекты, созданные с помощью предыдущих версий C++Builder?

Да, такая возможность должна быть, но зависит от того, установлены ли необходимые компоненты для таких проектов. В C++Builder XE для сборки используется система MSBuild, поэтому при обновлении с версии 2007 или более ранней версии потребуется новый файл проекта. Однако интегрированная среда разработки позволяет преобразовывать проекты в новый формат.

Почему с C++Builder нужно устанавливать среду времени выполнения Microsoft .NET и пакет SDK?

Эти пакеты используются некоторыми функциями интегрированной среды разработки.

Нужно ли пользователям и заказчикам, которые хотят выполнять приложения, созданные с помощью C++Builder, устанавливать пакет SDK и среду времени выполнения .NET?

Нет, для приложений, созданных с помощью C++Builder XE, поддержка .NET не требуется. Этот продукт создает приложения исключительно с кодом Win32.

Чем отличаются функции моделирования данных ER/Studio Developer Edition в выпуске C++Builder Architect и стандартном продукте ER/Studio?

Выпуск C++Builder Architect включает ER/Studio 8.5 Developer Edition — это только часть средств моделирования и визуализации данных полного продукта ER/Studio. В C++Builder Architect не входят средства импорта и экспорта метаданных и доступа к серверам хранилищ рабочих групп ER/Studio, а средства создания отчетов поддерживают только формат HTML. Функции ER/Studio в C++Builder Architect поддерживают определенный набор баз данных, поддерживаемых dbExpress, в то время как полные версии продуктов ER/Studio предлагают гибкие конфигурации для этих баз данных и ряд других возможностей.

Можно ли установить C++Builder XE на компьютер с предыдущими версиями RAD Studio, Delphi или C++Builder?

Да. Предыдущие версии RAD Studio, C++Builder и Delphi не мешают работе C++Builder XE.

Что такое Standard Library Technical Report 1?

Технический отчет TR1 — это первое официальное расширение стандартной библиотеки C++, подготовленное Международной организацией по стандартизации (ISO) и включающее различные компоненты, призванные улучшить использование и разработку библиотеки, в том числе следующие: интеллектуальный указатель с подсчетом ссылок и оболочку вызова функции для улучшения управления ресурсами; контейнеры кортежей и массивов, а также хэшированные контейнеры; регулярные выражения; случайные числа; улучшенную привязку функций для упрощения вызова алгоритмов библиотеки; признаки типов.

Дополнительные сведения см. в итоговом черновике, опубликованном на веб-сайте ISO по адресу: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf

C++0x — это неофициальное название следующей версии стандарта C++. Дополнительные сведения см. на веб-сайте комитета ISO. Начальные сведения можно найти на странице http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2705.html

Что отличает C++Builder от продукции конкурентов?

C++Builder — это единственная инфраструктура и среда C++, полностью соответствующая концепции быстрой разработки приложений (RAD) и обеспечивающая сверхбыструю разработку удобных в сопровождении Windows-приложений с графическим интерфейсом пользователя. Никакие другие среды разработки на C++ не предлагают такие всеобъемлющие возможности, включая библиотеку визуальных компонентов, ускоряющую создание многофункциональных пользовательских интерфейсов, множество дополнительных компонентов и средств, а также средства быстрой разработки приложений, работающих с базами данных.

Ссылки по теме

Популярные статьи
Информационная безопасность Microsoft Офисное ПО Антивирусное ПО и защита от спама Eset Software


Бестселлеры
Курсы обучения «Atlassian JIRA — система управления проектами и задачами на предприятии»
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год. Электронный ключ
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2020. Все языки. Электронный ключ
Курс «Oracle. Программирование на SQL и PL/SQL»
Курс «Основы TOGAF® 9»
Microsoft Windows Professional 10 Sngl OLP 1 License No Level Legalization GetGenuine wCOA (FQC-09481)
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Windows Server 2020 Standard
Курс «Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации»
Антивирус ESET NOD32 Antivirus Business Edition
Corel CorelDRAW Home & Student Suite X8

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям.

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

Программирование стандартного интерфейса пользователя в среде Borland C++ Builder

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ВОРОНЕЖСКАЯ ГОСУДАРСТВЕННАЯ ТЕХНОЛОГИЧЕСКАЯ АКАДЕМИЯ

КАФЕДРА ИНФОРМАЦИОННЫХ И УПРАВЛЯЮЩИХ СИСТЕМ

ПРОГРАММИРОВАНИЕ СТАНДАРТНОГО ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ В СРЕДЕ BORLAND C++ BUILDER

Методические указания для выполнения лабораторной работы по дисциплине “Информатика. Современные средства разработки программных продуктов”

Для студентов специальности 210200 – “Автоматизация технологических процессов и производств”

дневной формы обучения

Программирование стандартного интерфейса пользователя в среде Borland C++ Builder. Часть 1: Метод. указания к лаб. работе по дисципли­не «Информатика. Современные средства разработки программных продуктов»/ Воронеж. гос. технол. акад.; Сост. , , . — Воронеж, 2000. – 20 с.

Указания разработаны в соответствии с требованиями, предъявляемыми квалификационной характеристикой ГОС ВПО подготовки инженеров по специальности 210200. Они предназначены для закрепления теоретических знаний дисциплины цикла ЕН. Методические указания посвящены разработке Windows-приложений с использованием стандартных средств интерфейса: кнопок, полей ввода, текстовых меток и т. д. в интегриро­ванной среде программирования Borland C++ Builder корпорации Inprise.

Для студентов специальности 210200 заочной формы обучения.

Табл. 2. Ил. 9. Библиогр.: 4.

Составители доцент С. Г. ТИХОМИРОВ, ст. преподаватели А. А.ХВОСТОВ, И. А. ХАУСТОВ

Рецензент – профессор, д. т.н. О. Я. КРАВЕЦ

Научный редактор профессор В. Ф. ЛЕБЕДЕВ

Печатается по решению редакционно-издательского совета Воронежской государственной технологической академии

© Воронежская государственная технологическая академия, 2000

1. Освоение методики построения Windows-приложений;

2. Освоение программных средств реализации интерфейса пользователя с использованием стандартных библиотек.

1. Изучить методические указания.

2. Включить компьютер, создать и сохранить на диске в рабочем каталоге новый проект.

3. Проделать упражнения 1¸3.

4. Проделать контрольный пример. Откомпилировать и запустить приложение. Протестировать приложение.

5. Выполнить свой вариант задания.

6. Оформить отчёт.

Borland C++ Builder относится к новому поколению сред быстрой разработки приложений (RAD Rapid Application Development), появившемуся после представления на рынке Microsoft Visual Basic.

Основное отличие и преимущество таких сред перед изученными ранее интегрированными средами (IDE) состоит в возможности избавить программиста от рутины написания программного кода для разработки интерфейса пользователя (как известно при обычном подходе на разработку интерфейса уходит 80¸90% объёма программного кода). Это обеспечивается стандартизацией интерфейса всех Windows-приложений, возможностью автоматической генерации кода в средах визуального программирования и огромным количеством библиотек, описывающих практически все элементы пользовательского интерфейса Windows.

2. Интегрированная среда Borland C++ Builder

После запуска Borland C++ Builder нажатием пиктограммы Borland C++ Builder в меню Пуск->Программы->Borland C++ Builder открывается основное окно интегрированной среды Borland C++ Builder (рис. 1).

Главное окно состоит из нескольких плавающих окон и главного меню.

В главном меню будут использоваться пункты: File, View.

Названия плавающих окон представлены на рис. 1.

3. Создание и сохранение нового проекта

Прежде чем начать работу в интегрированной среде необходимо создать и сохранить новый проект:

1. включите компьютер.

2. зарегистрируйтесь под своим паролем.

3. В меню Пуск->Программы->Borland C++ Builder запустите Borland C++ Builder.

4. В меню File выберите “Save All…”.

5. Укажите для сохранения свой рабочий каталог (выделяется сетевым администратором для каждой группы).

6. Нажмите кнопку “Сохранить”.

4. Основные элементы главного окна

Панель управления содержит следующие часто используемые кнопки: Open (открытие файла); Open Project (открытие проекта); Run (выполнить приложение). Чтобы увидеть название кнопки необходимо подержать указатель мыши над кнопкой некоторое время, пока не появится ярлычок-подсказка.

Палитра компонентов – зрительное (в виде пиктограмм) представление библиотеки визуальных компонентов от Borland (Visual Component Library VCL). Представляет собой много страничный блокнот с закладками. На закладках обозначена функциональная группа компонент. Например, в закладке Standard содержатся стандартные интерфейсные элементы Windows (кнопки, окна ввода и т. д.).

Окно формы приложения – это первое, вызываемое при запуске приложения окно. Оно является стандартным окном Windows и снабжено кнопками закрытия, свёртывания и развёртывания на весь экран. При каждом запуске Borland C++ Builder появляется новая форма с именем Form1.

Упражнение 1. “Перемещение библиотечной компоненты на форму приложения”.

Для того чтобы переместить компоненту на форму приложения необходимо щёлкнуть левой клавишей мыши на пиктограмме компоненты на палитре компонент, после чего щёлкнуть на форме приложения.

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

Переместите на форму приложения компоненту Button из закладки Standard.

Редактор кода – это текстовый редактор, предназначенный для работы с текстовыми файлами программ. В верхних закладках отображается название редактируемого файла.

Инспектор объектов – это интерфейс для визуального управления свойствами объектов и управления событиями, на которые этот объект может реагировать.

Нажав на закладку Properties можно увидеть в левой колонке доступные в инспекторе объектов свойства выделенного мышью объекта, а в правой колонке их значения, причём значения можно редактировать.

Нажав на закладку Events можно увидеть в левой колонке все события, на которые может реагировать объект, а в правой названия функций обработчиков событий.

Обработчик какого-либо события – это функция, которая выполняется, если это событие произойдёт.

Упражнение 2 “Изменение свойств объекта с помощью инспектора объектов”.

Например, необходимо изменить надпись на кнопке, расположенной на форме (см. упражнение 1). За надпись на кнопке отвечает свойство Caption компоненты Button. Чтобы изменить это свойство необходимо: выделить мышью компоненту Button; щёлкнуть в инспекторе объектов закладку Properties; щёлкнуть мышью напротив свойства Caption и ввести необходимый текст в правое окошко.

Измените надпись на кнопке с “Button1” на “Кнопка№1”.

Упражнение 3 “Добавление обработчика событий с помощью инспектора объектов”.

Для добавления обработчика какого-либо события какой-либо компоненты необходимо выделить мышью компоненту, выбрать в инспекторе объектов закладку Events, щёлкнуть мышью на названии соответствующего события, после чего дважды щёлкнуть напротив этого события в правом окошке. В результате этих действий в редакторе кода в соответствующем файле будет сгенерирована пустая функция обработчика этого события для данной компоненты. Тело функции будет выполнено лишь в том случае, если это событие произойдёт.

Например, необходимо добавить обработчик события OnClick (одиночное нажатие) для компоненты Button. Для этого выделим компоненту Button мышью, в инспекторе объектов выберем закладку Events, щёлкнем на надписи OnClick и два раза щёлкнем в правом окошке. После чего сгенерируется обработчик события OnClick для компоненты Button1.

void __fastcall TForm1::Button1Click(TObject *Sender)

Для читаемости программы название обработчика включает название компоненты и название события.

5. Компиляция проекта и запуск приложения

Компиляция и запуск приложения осуществляется нажатием кнопки Run на панели управления. Визуально запущенное приложения отличается от своего макета отсутствие точек на форме.

6. Организация проекта в Borland C++ Builder

Сохранив проект, в своём рабочем каталоге необходимо открыть этот каталог в проводнике и посмотреть на количество сгенерированных средой файлов.

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

*.cpp – файл реализации модуля (создаётся для каждой формы и используется для размещения обработчиков событий), так же отдельный модуль создаётся Borland C++ Builder для головной функции WinMain;

*.h – заголовочный файл модуля, описывает класс формы;

*.dfm – двоичный файл, хранящий информацию о компонентах, размещённых на форме;

*.res – файл ресурсов, хранит информацию о использующихся пиктограммах, курсорах мыши и т. д.

*.mak – файл компоновки проекта, хранит информацию о файлах, входящих в проект.

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

Структура проекта представлена на рис. 2.

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

С позиций объектно-ориентированного программирования компоненты представляют собой указатели на класс, инкапсулированные в класс формы, а обработчики событий являются методами класса. Сама форма является производной от родительского класса TForm. Например, при переносе на форму одной кнопки и создания обработчика события OnClick будет автоматически сгенерирован следующий код в файле Unit1.h.

class TForm1 : public TForm

__published: // IDE-managed Components

void __fastcall Button1Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm1(TComponent* Owner);

Ключевое слово published(опубликованный) используется в Borland C++ Builder для определения объектов, чьи свойства будут доступны через инспектор объектов. Область их видимости аналогична public.

Модификатор __fastcall обозначает, что первые три параметра при вызове этой функции передаются не через стек, а через процессорные регистры AX, BX, DX. Если значение параметра не умещается в регистр.

7. Навигация по проекту

Средством, позволяющим просмотреть файлы, входящие в проект, удалить и добавить в проект файлы является утилита Project Manager. Вызывается из пункта главного меню View->Project Manager. Дважды щёлкнув на любом файле можно просмотреть его содержимое в редакторе кода, щёлкнув на имени формы отобразить макет формы. Для добавления файла в проект служит кнопка”+”, а для удаления “-”.

8. Программирование Windows-приложения со стандартными интерфейсными элементами

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

Условно можно выделить три основные задачи приложения для работы с данными: отображение данных, ввод данных, реакция на действия пользователя. В простейшем случае эти функции могут быть выполнены с использованием компонент Label(текстовая метка), Memo(область отображения текста), Edit(поле ввода), Button(кнопка), RadioButton(радиокнопка), CheckBox(флажок).

Label – cлужит для отображения однострочной надписи на форме приложения. За текст надписи отвечает свойство Caption. За цвет и шрифт надписи отвечают соответственно свойства Color и Font. Memo – используется для отображения нескольких строк текста. За строки отвечает свойство Lines, в которое инкапсулированы метод Add() – добавление строки и данное Strings[Index], содержащее текст строки, указанной в Index. В объект Memo инкапсулирован метод Clear(), позволяющий очистить окно. Так же для объекта Lines доступны свойства Color, Font.

Edit – предназначено для ввода текста. Объект Edit имеет свойство Text, которое является данным типа AnsiString и содержит значение, введенное в поле ввода на форме приложе­ния.

Тип AnsiString позволяет непосредственно сравнивать стро­ки с использованием логической операции = =. Ввод числовых значений осуществляется аналогичным образом с последующим последовательным преобразованием значения типа AnsiString к типу символьной строки, а затем к числовому. Например, фрагмент программы

позволяет преобразовать значение переменной Edit2->Text типа AnsiString в символьную строку с использованием метода с_str(). Метод с_str() инкапсулирован в класс AnsiString. Доступ к методу осуществляется через. поскольку данное Edit2->Text является переменной, а не указателем.

Button – основное предназначение вызывать обработчик события OnClick.

RadioButton – предназначено для организации логического выбора пользователем одной из альтернатив. Из расположенных на форме нескольких радиокнопок пользователь может выбрать только одну, т. е. аналогично логическому ИЛИ. За выбор кнопки отвечает свойство Checked, которое принимает значения true или false.

CheckBox – аналогичен RadioButton, отличается возможностью организации множественного выбора, т. е. пользователь может выбрать одновременно несколько альтернатив.

Имя объекта в программе, т. е. указатель на соответствующий класс определяется свойством Name (по умолчанию состоит из имени компоненты и порядкового номера, 1-я перенесённая на форму компонента Label будет иметь имя Label1)

Программное изменение свойств компонент

Часто требуется изменить свойства компонент в ходе выполнения программы. Для этого необходимо использовать соответствующие имена объектов, их свойства и изменять их значения в соответствующих обработчиках событий.

Например, чтобы изменить текст, выводимый на форму при нажатии кнопки Button1 необходимо в обработчик события OnClick компоненты Button1 ввести следующий код:

Label1->Caption=”Расчёт вязкости шихты”;

Для добавления строки в Memo;

Для проверки нажатия первой радиокнопки:

9. Пример использования интерфейсных элементов в приложении

Задача: Необходимо ввести в окно ввода строку, которая после нажатия на кнопку Button будет выводится на компоненту Label, если нажата первая радиокнопка и в Memo, если нажата вторая радиокнопка.

1. Создадим и сохраним в рабочем каталоге новый проект.

2.
Разместим на форме все необходимые компоненты: Edit, Button, Label, Memo, 2 шт. RadioButton. Внешний вид макета формы на рис. 3.

Написание маленьких приложений на borland c builder

Разработка Систем Управления Базами Данных (СУБД) раньше всегда была очень трудоемким и медленным процессом, отягощенным необходимостью учитывать массу специфических деталей подсистем обслуживания различных баз данных на низком уровне. C++Builder принимает на себя выполнение этих рутинных операций позволяя сосредоточиться на решении основной задачи.

Все приложения СУБД, создаваемые в среде C++Builder, являются клиентами в архитектуре программного взаимодействия клиент/сервер. Клиент выдает запросы к серверу базы данных на получение или передачу информации. Сервер обрабатывает запросы от множества клиентов одновременно, координируя доступ к данным и их обновление.

Все приложения СУБД, создаваемые в среде C++Builder, основаны на компонентах пользовательского интерфейса с некоторой базой данных, которые предоставляют удивительно легкие в использовании средства разработки специальных приложений. Львиная доля времени процесса разработки уходит на визуальную установку свойств выбранных компонент. Удачно спроектированное приложение всегда обеспечивает простоту просмотра и редактирования данных пользователем, независимо от сложности структуры используемой модели данных. Данная глава с очевидностью покажет, что формы приложений СУБД для типично сложной системы в архитектуре взаимодействия клиент/сервер действительно могут быть созданы в интегрированной среде C++Builder весьма быстро и с малыми усилиями.

Воздействия на компоненты многогранны: их реакция на события обеспечивается стандартными методами, а установка значений свойств может производиться во время работы приложения. Таким образом, простое вначале приложение в процессе разработки постепенно усложняется, чтобы в конце концов выглядеть совершенно профессиональным программным изделием.

5.1 Организация доступа к базам данных

C++Builder организует доступ приложения к данным таким образом, чтобы полностью отстранить разработчика от специфики обслуживания конкретной базы дан

5.1.1 Механизм BDE

Ключевой механизм BDE (Borland Database Engine), обеспечивающий работу визуальных компонент баз данных, действует как интерфейс между вашим приложением и самой базой данных. BDE реализован в виде набора системных DLL файлов. Взаимодействие компонентных объектов с BDE никак не специфицирует конкретную базу данных и не зависит от реализации обмена информацией на нижнем уровне иерархии. Именно BDE обращается в свою очередь к драйверам, специфическим для базы данных указанного типа, возвращая вашему приложению запрошенные фактические данные. BDE играет роль, аналогичную контроллеру драйверов ODBC (Open Database Connectivity) производства фирмы Microsoft, изолируя приложения от нижнего уровня взаимодействия с базой данных и увеличивая общую производительность связи за счет использования кэш-памяти. Используя BDE, вы получаете доступ ко всем локальным стандартным базам данных вашего компьютера, к источникам данных ODBC и к SQL серверам баз данных в архитектуре сетевой связи клиент/сервер.

Унифицированная технология BDE применяется во всех продуктах производства корпорации Borland: C++Builder, Borland C++, Delphi, IntraBuilder и JBuilder. Чтобы получить доступ к содержимому базы данных, приложению необходимо знать только идентификатор ее псевдонима (alias).

Рис. 5.1 изображает иерархическую структуру взаимодействия вашего приложения с базами данных.

Приложение с компонентами баз данных

Рис. 5.1. Структура взаимодействия приложений с базами данных.

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

5.1.2 Конфигурация BDE

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

Рис. 5.2. Основная страница Drivers утилиты конфигурации BDE.

5.1.2.1 Страница Drivers

Используется для модификации установок, применяемых драйверами BDE при создании, сортировке и обслуживании таблиц базы данных. В графе Driver Name перечисляются типы драйверов, инсталлированных на вашей рабочей станции. Драйверы STANDARD обеспечивают доступ к базам данных Paradox и dBASE, а прочие драйверы — соединения с серверами SQL и ODBC. В графе

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

Чтобы получить доступ к ODBC (например, к базе данных Microsoft Access), надо сначала создать соответствующий источник данных, и только потом вызвать утилиту конфигурации BDE для подключения к этому источнику. Кнопка New ODBC Driver открывает диалог добавления соединения ODBC к имеющемуся списку (Рис. 5.3). Кнопка Delete ODBC Driver разрешает вычеркнуть выбранный драйвер.

Рис. 5.3. Диалог добавления драйвера соединения ODBC.

5.1.2.2 Страница Aliases

Используется для выполнения операций вычеркивания и модификации псевдонимов баз данных типа STANDARD, SQL или ODBC. Alias Names перечисляет все имеющиеся псевдонимы. Позже вы будете использовать псевдоним для указания имени нужной базы данных в свойстве DatabaseName компонент таблицы TTable или запроса TQuery. Графа Parameters содержит, в частности, тип сервера и полный путь к каталогу, содержащему нужные таблицы. В графе Description кратко описывается назначение выбранного параметра.

Кнопка New Alias открывает диалог добавления нового псевдонима выбранного типа к имеющемуся списку (Рис. 5.4). Кнопка Delete Alias разрешает вычеркнуть выбранный псевдоним.

Рис. 5.4. Дисиог добавления псевдониме!.

5.1.2.3 Страница System

Используется для модификации установок системных и сетевых параметров, которые BDE использует при запуске приложения. Эта информация хранится в регистрационном файле Windows. В графе Parameters перечислены все прослеженные утилитой системные и сетевые параметры вместе с их текущими значениями. Чтобы изменить установку, выберите нужный параметр и измените его старое значение. В графе Description кратко описывается назначение выбранного параметра.

5.1.2.4 Страница Date

Используется для установки формата отображения даты. В графе Parameters перечислены все прослеженные утилитой параметры даты вместе с их текущими значениями. Чтобы изменить установку, выберите нужный параметр и измените его старое значение. В графе Description кратко описывается назначение выбранного параметра.

5.1.2.5 Страница Time

Используется для установки формата отображения времени. В графе Parameters перечислены все прослеженные утилитой параметры времени вместе с их текущими значениями. Чтобы изменить установку, выберите нужный параметр и измените его старое значение. В графе Description кратко описывается назначение выбранного параметра.

5.1.2.6 Страница Number

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

нужный параметр и измените его старое значение. В графе Description кратко описывается назначение выбранного параметра.

5.1.3 «Живые данные»

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

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

Иначе обстоит дело при работе в визуальной среде C++Builder, компоненты которой поддерживают поступление «живых данных». Когда вы поместите на форму компоненты доступа и управления, определите их свойства, отвечающие за связь с базой данных, вам будут представлены данные точно так же, как их увидит пользователь. C++Builder объединяет три этапа разработки в единый производственный процесс. В результате удается строить СУБД, базирующиеся на текущих требованиях заказчика, вместе с тем гибкие настолько, чтобы быстро адаптировать их к новым запросам пользователей.

Форма приложения будет выглядеть одинаково на стадии проектирования и во время работы программы. Вы сможете производить необходимые коррекции экранного представления базы данных и запросов к ней, даже не компилируя программу. Способность интерактивного испытания запросов ставит процесс разработки СУБД на самый высокий качественный уровень.

5*2 Использование визуальных компонент

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

C++Builder предоставляет разработчикам интерфейсные элементы баз данных из Библиотеки Визуальных Компонент на следующих двух вкладках Палитры компонент:

• Компоненты управления данными Data Control (такие как область редактирования TDBEdit или сетка TDBGrid) обеспечивают отображение и редактирования записей на форме приложения.

• Компоненты доступа к данным Data Access (такие как таблица TTable или запрос TQuery) адресуют фактические данные, хранящиеся в файле базы данных, а компонента источника TDataSource служит как интерфейс межкомпонентной связи.

Для. работы с базами данных необходимо проанализировать и правильно установить значения ключевых свойств компонент доступа и управления. В дальнейшем будем выделять ключевые свойства, методы и события подчеркиванием.

C++Builder поддерживает «трехступенчатую» модель разработки приложения баз данных. В этой модели компонента управления связана с компонентой источника, а та, в свою очередь, получает фактические данные таблицы или запроса посредством механизма BDE. Рис. 5.5 показывает пример взаимосвязи компонент.

Рис. 5.5. Взаимосвязь компонент управления и доступа к содержимому баз данных.

Среднее звено, компонента TDataSource, допускает менять фактическую таблицу на стадии проектирования формы без какого бы то ни было перепрограммирования самого приложения — все отображаемые элементы связаны с источником, а не с питающими его таблицей или запросом. Кроме того, компоненты источников берут на себя задачу синхронизации обмена данными между парами таблиц по принципу master-detail.

5.2.1 Компоненты доступа к данным

В этом разделе мы подробно рассмотрим работу пяти компонент доступа, первые три из которых составляют основу любого приложения баз данных. Описание остальных компонент можно найти в главе 4.

5.2.1.1 Источники данных

Как уже было сказано, невидимая компонента TDataSource действует как интерфейс между некоторым объектом набора данных (таблица, запрос) и визуальной компонентой управления. С одной стороны, все наборы данных должны быть ассоциированы с некоторым источником. С другой стороны, каждая компонента управления должна быть ассоциирована с источником, чтобы получать данные для отображения и редактирования. Каждой компоненте набора данных должна соответствовать по меньшей мере одна компонента источника. Далее мы увидим, что все компоненты управления имеют свойство DataSource, значение которого замыкает трехступенчатую связь. Рис. 5.6 показывает свойства компоненты источника в окне Инспектора объектов:

Рис. 5.6. Свойства источники.

AutoEdit разрешает или запрещает режим редактирования записей, вводимых в поля компонент управления. Значение true включает режим редактирования по умолчанию.

DataSet определяет имя конкретного набора данных (таблицы или запроса), который питает данный источник. Можно переключаться с одного набора данных на другой «на лету», во время выполнения программы. Следующий простейший код реализует попеременное подключение объекта источника DataSourcel к таблице заказчиков «Заказчики» или к таблице «Заказы»:

if (DataSourcel->DataSet == «Заказчики»)

Чтобы синхронизировать работу компонент управления на двух формах, достаточно установить свойство DataSet на один и тот же набор данных:

void_fastcall TForm2::FormCreate (TObject *Sender)

Name определяет содержательное название данной компоненты, отличающее ее от других источников данных вашего приложения. Целесообразно давать источнику имя. которое отражает название ассоциированного с ним набора данных. Например, если вы собираетесь работать с таблицей клиентов «Clients», заданной свойством DataSet, то пусть значением свойства Name будет «ClientsSource» или подобное имя.

С компонентой TDataSource связаны три события:

OnDdlciC/iange возникает при перемещении курсора на новую запись и используется при необходимости «ручной» синхронизации поведения компонент управления.

OnStciteChcinse возникает при изменении свойства State наборов данных. Например, обработчик события (Листинг 5.1) будет отслеживать изменения состояния таблицы MyTable, выводя па форму соответствующие текстовые отметки.

void_fastcall TFormI::StateChange(TObject *Sender)

strcpy(S, «Таблица неактивна»);

strcpytS, «Идет просмотр»);

strcpytS, «Идет редактирование»);

strcpy(S, «Идет вставка записи»);

> // Вывод текстовой строки S

Листинг 5.1. Обработчик события OnStateChange источника.

OnUpdateData возникает перед обновлением текущей записи и используется при необходимости синхронизации поведения обычных компонент с изменениями некоторого набора данных.

Компонента таблицы представляет собой один из самых фундаментальных и гибких компонентных классов. TTable устанавливает прямую связь с таблицей базы данных посредством BDE, причем все записи или столбцы этой таблицы становятся доступными для приложения — как раздельно, так и внутри определенного интервала адресов. Рис. 5.7 показывает свойства компоненты таблицы в окне Инспектора объектов:

Рис. 5.7. Свойства таблицы.

Active разрешает или запрещает режим просмотра «живых данных» таблицы на этапе проектирования. Значение true или метод Open открывают просмотр таблицы. Значение false (устанавливается по умолчанию) или метод Close закрывают просмотр.

DatabaseName содержит псевдоним базы данных или полный путь к ее каталогу. Использование псевдонима всегда предпочтительнее: вы можете переназначить физический носитель данных, например, заменив локальный дисковод на сетевой. Перекомпиляция приложения не требуется — просто измените путь на вкладке Aliases в утилите конфигурации BDE.


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

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

IndexFiles открывает диалог выбора индексного файла для таблицы.

IndexName задает правило отображаемых сортировки данных, отличное от упорядочивания по первичному ключу (primary key order).

Filter позволяет устанавливать критерий фильтрации, в соответствии с которым адресуется некоторое подмножество записей таблицы.

ReadOnly управляет правами доступа в процессе выполнения программы. Значение false разрешает запись по умолчанию.

MasterFields и MasterSource участвуют в образовании связи двух таблиц (ведущей и ведомой) по принципу master-detail. Следующая процедура иллюстрирует процесс создания простой формы для демонстрационной базы данных BCDEMOS, в которой пользователь может прокручивать записи таблицы заказчиков CUSTOMER с отображением всех заказов таблицы ORDERS, сделанных текущим заказчиком:дексного файла для таблицы.

IndexName задает правило отображаемых сортировки данных, отличное от упорядочивания по первичному ключу (primary key order).

Filter позволяет устанавливать критерий фильтрации, в соответствии с которым адресуется некоторое подмножество записей таблицы.

ReadOnly управляет правами доступа в процессе выполнения программы. Значение false разрешает запись по умолчанию.

MasterFields и MasterSource участвуют в образовании связи двух таблиц (ведущей и ведомой) по принципу master-detail. Следующая процедура иллюстрирует процесс создания простой формы для демонстрационной базы данных BCDEMOS, в которой пользователь может прокручивать записи таблицы заказчиков CUSTOMER с отображением всех заказов таблицы ORDERS, сделанных текущим заказчиком:

1. Выполните команду главного меню File | New Data Module, чтобы открыть контейнер нового модуля данных DataModule2. В этот модуль поместите две пары компонент доступа к базам данных TTable и TDataSource (Рис. 5.8).

2. Установите свойства объекта ведущей таблицы Tablet

DatabaseName = BCDEMOS TableName = CUSTOMER.DB Name = CustomersTable

Рис. 5.8. Модуль данных.

3. Установите свойства объекта ведомой таблицы Table2

DatabaseName = BCDEMOS TableName = ORDERS.DB Name = OrdersTable

4. Установите свойства объекта источника DataSourcel DataSet = CustomersTable Name = CustomersSource

5. Установите свойства объекта источника DataSource2 DataSet = OrdersTable Name = OrdersSource

6. Поместите на форму пару компонент управления сеткой TDBGrid.

7. Выполните команду File | Include Unit Hdr, чтобы указать, что данная форма должна использовать созданный модуль данных.

8. Установите свойство объекта первой сетки DBGridI

DataSource = DataModule2->CustomersSource и свойство объекта второй сетки DBGrid2

9. Активизируйте таблицу OrdersTable модуля данных и установите свойство

MasterSource = CustomersSource, чтобы связать ведущую таблицу CUSTOMER с ведомой таблицей ORDERS.

10. Дважды щелкните мышью в графе значений свойства MasterFields, и в открывшемся окне дизайнера связи полей

— выберите номер заказчика CustNo (связующее поле таблиц) из выпадающего списка Available Indexes;

— задайте CustNo в списках Detail Fields и Master Fields;

— нажмите кнопку Add, чтобы добавить в список Joined Fields соединение CustNo -> CustNo;

— нажмите кнопку OK, подтверждая сделанный выбор.

11. Установите свойство Active = true для таблиц CustomersTable и OrdersTable с тем, чтобы сразу же отобразить живые данные в сетках на форме.

12. Скомпилируйте и запустите приложение. Рис. 5.9 показывает работу связанных таблиц: при прокрутке записей таблицы заказчиков вы увидите только те записи в таблице заказов, которые относятся к текущему заказчику.

Рис. 5.9. Связь таблич по принципу muster-detail.

Методы Locate и Lookup используются для поиска указанных записей как в индексных таблицах, так в таблицах с ключами: эти методы реализуют самый быстрый из возможных способов поиска в данной таблице. Если столбцы для поиска индексированы и индекс совместим с указанными опциями, используется способ индексного поиска. В противном случае методы создают для BDE соответствующий фильтр.

Locate производит поиск специфической записи и позиционирует курсор на нее. В простейшем варианте вы передаете методу название столбца для поиска, искомое значение ключа записи и флаг опций. Листинг 5.2 содержит фрагмент кода, обеспечивающего поиск в столбце «Имя» таблицы MyTable первой записи со значением «Иван». Если поиск завершился успешно. Locate возвращает значение true, и найденная запись становится текущей. Если искомая запись не найдена. Locate возвращает значение false, и позиция курсора не меняется.

Success = MyTable->Locate («Имя», «Иван», Options);

Листинг 5.2. Простейший пример использования метода Locate.

Возможности метода проявляются при поиске вариантных значений записи в нескольких столбцах таблицы. Обобщенный синтаксис описания метода имеет следующий вид:

bool _fastcall Locate(const AnsiString KeyFields, const Variant SKeyValues, TLocateOptions Options);

В главе 3 отмечалось, что различные типы искомых значений объявляются в шаблонном классе Variant (с помощью которого C++Builder реализует одноименный встроенный тип Delphi). Названия столбцов для поиска разделяются в текстовой строке параметра KeyFields символом точка с запятой.

Lookup выбирает значения столбца той записи, которая удовлетворяет заданным значениям поиска. Позиция курсора не меняется. В простейшем варианте вы передаете методу название столбца для поиска, искомое значение ключа записи и возвращаемые поля этой записи. Листинг 5.3 содержит фрагмент кода, обеспечивающего поиск в таблице MyTable первой записи, у которой в столбце «Фирма» имеется значение «Borland». Если поиск завершился успешно. Lookup возвращает в массиве типа Variant название фирмы, фамилию ее представителя и номер телефона. Если искомая запись не найдена. Lookup возвращает значение Null.

Results = MyTable->Lookup («Фирма», «Borland»,

Листинг 5.3. Простейший пример использования метода Lookup.

Возможности метода проявляются при поиске вариантных значений полей записи в нескольких столбцах таблицы. Обобщенный синтаксис описания метода имеет следующий вид:

Variant _fastcall Lookup(const AnsiString KeyFields, const Variant sKeyValues, const AnsiString ResultFields);

Названия столбцов для поиска разделяются в текстовой строке параметра KeyFields символом точка с запятой.

С компонентой TTable также связаны следующие методы:

• GotoCurrent синхронизирует перемещения курсора по нескольким табличным компонентам, ассоциированным с одной и той же фактической таблицей базы данных.

• First, Next, Prior, Last и MoveBy используются для навигации по данным таблицы.

• SetKey, FindKey, FindNearest, GotoKey и GotoNearest используются для поиска по специфическим значениям ключей.

• Append, Insert, AppendRecord и InsertRecord добавляют новую запись к таблице. Delete вычеркивает текущую запись. Edit разрешает приложению модифицировать записи, a Post вызывает фактическое изменение содержимого базы данных.

• EditRangeStart, EditRangeEnd, SetRangeStart, SetRangeEnd, ApplyRange и SetRange устанавливают границы интервала адресов записей, возвращаемых приложению при групповом доступе.

Компоненты таблиц являются полноправными, гибкими и легкими в использовании компонентами доступа, достаточными для многих приложении СУБД. TTable возвращает все строки и столбцы единственной таблицы, если доступ не ограничивается установкой интервалов и фильтров. Компоненты запросов предоставляют разработчикам альтернативные возможности. TQuery обеспечивает доступ к нескольким таблицам одновременно и способна адресовать некоторое подмножество записей. Вид возвращаемого набора данных (result set) зависит от формы запроса, который может быть либо статическим, когда все параметры запроса задаются на стадии проектирования, или динамическим, когда параметры определяются во время выполнения программы.

Указанные действия записываются и реализуются на стандартизованном языке структурированных запросов SQL (Structured Query Language), принятом большинством удаленных серверов реляционных баз данных, таких как Sybase, Oracle, InterBase и SQL Server. Ha SQL можно сформулировать весьма изощренные запросы к базам данных. C++Builder передает запросы серверу, который интерпретирует их и возвращает результаты вашему приложению.

Рис. 5.10 показывает свойства компоненты запроса в окне Инспектора объектов:

Рис. 5.10. Свойства запроса. Active разрешает или запрещает режим просмотра «живых данных», возвращаемых запросом на этапе проектирования. Значение false устанавливается по умолчанию.

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

RequestLive разрешает или запрещает BDE сделать попытку возвратить «живой» результирующий набор. Значение false (устанавливается по умолчанию) указывает, что результаты запроса нельзя модифицировать. Значение true гарантирует возврат результирующего набора при условии, что синтаксис команды SELECT согласуется с требованиями запрашиваемых данных.

SQL используется для ввода команды SQL посредством строчного редактора списка, который открывается двойным щелчком мышью в графе значений этого свойства. Локальные и удаленные серверы баз данных обеспечивают выполнение четырех команд SQL: SELECT — для выбора существующих данных из таблиц; INSERT — для добавления

новых данных в таблицы; UPDATE — для модификации данных таблиц; DELETE -для удаления данных из таблиц. Результаты обработки запроса возвращаются приложению клиента. Следующая процедура иллюстрирует процесс создания формы со статическим запросом к таблице EMPLOYEE всей информации о служащих, зарплата которых превышает заданную величину:

1. Поместите компоненту TQuery на форму.

2. Установите псевдоним адресуемой базы данных сервера в свойстве DatabaseName. В примере используется псевдоним BCDEMOS локальной демонстрационный базы данных, содержащей, в частности, таблицу служащих некоторого предприятия.

3. Откройте строчный редактор списка, введите команду SQL

SELECT * FROM EMPLOYEE WHERE Salary>40000 и нажмите кнопку ОК.

4. Поместите на форму компоненту TDataSource и установите ее свойство DataSet = Queryl.

5. Поместите на форму компоненту управления сеткой TDBGrid и установите ее свойство DataSource = DataSourcel.

6. Установите свойство Active = true для запроса Queryl с тем, чтобы сразу же отобразить живые данные в сетке (Рис. 5.11).

Рис. 5.] ]. Форма приложения со статическим запросом к таблице служащих.

Свойство SQL имеет объектный тип TStrings и заключает список текстовых строк наподобие массива. Листинг 5.4 показывает обработчик события ButtonlClick, реализующий ввод запроса пользователем при нажатии кнопки на форме. Введенная команда SQL записывается в строчный массив (того же типа TStrings) свойства Memol->Lines компоненты редактирования TMemo. Результаты запроса можно, как и в предыдущем примере, отобразить на сетке.

void_fastcall TFormI::ButtonlClick(TObject *Sender) <

// Проверить, введена ли какая-то строка в Memol if (strcmp(Memol->Lines->Strings[0].c_str(), «») == 0) (

MessageBox(0, «No SQL Statement Entered», «Error», MB_OK) ;

// Деактивировать предыдущий запрос, если он имел место Queryl->Close ();

// Очистить свойство SQL от предыдущего запроса Queryl->SQL->Clear () ;

// Присвоить введенный в Memol текст свойству SQL Queryl->SQL->Add(Memol->Lines->Strings[0].c_str()) ;

Queryl->0pen(); // выполнить команду SQI >

catch(EDBEngineError* dbError) .// обработка ошибок BDE <

for (int i=0; i ErrorCount; i++) MessageBox (0, dbError[i].Message.c_str(), «SQL Error», MB_OK) ;

Листинг 5.4. Ввод и исполнение команды SQL.

Params позволяет специфицировать имена, типы и начальные значения параметров запроса. C++Builder дает возможность конструировать команду SQL динамического запроса с параметрами. Чтобы указать нужный параметр динамического запроса, используйте символ двоеточия перед именем этого параметра. Например, параметр номера служащего в таблице employee идентифицируется следующей командой SQL: SELECT * FROM employee WHERE EmpNo = :EmpNo.

Увидеть или поменять атрибуты выбранного параметра можно посредством диалогового редактора (Рис. 5.12), который открывается двойным щелчком мышью в графе значений этого свойства. Нажатие кнопки ОК подготавливает SQL сервер к запросу и вызывает попытку его выполнения на стадии проектирования приложения.

Рис. 5.12. Редактор параметров запроса.

Свойство Params содержи-. указатель на объект типа TParams. Поэтому изменить значение параметра во время выполнения программы можно по ^ндексу в массиве I terns объекта типа TParams: ;

или по имени параметра, посредством метода ParamByName:

Queryl->ParamFjyName («FirstName») ->AsString = «John»;

Листинг 5.5 дает законченный пример использования метода ParamByName во время исполнения программы. Параметр имени служащего FirstName идентифицируется следующей командой SQL:

SELECT * FROM EMPLOYEE WHERE FirstName = :FirstName

Заметим, что обработчик события первым делом обращается к методу подготовки запроса Prepare, посылая команду SQL серверу. Сервер выделяет ресурсы и оптимизирует динамический запрос только однажды, до первого исполнения. Все, что необходимо теперь, — это подставлять новые значения параметров и выполнять команду запроса с помощью метода Open.

void_fastcall TFormI::ButtonlClick(TObject *Sender) <

// Деактивировать предыдущий запрос, если он имел место Queryl->Close () ;

Queryl->Prepare(); // подготовить запрос // Заменить значение параметра на введенное пользователем Queryl->ParamByName(«FirstName»)->AsString =

Query 1 ->0pen(); // выполнить команду SQL >

catch(EDBEngineError* dbError) // обработка ошибок BDE <

for (int i=0; i ErrorCount; i++)

MessageBox(0, dbError[i].Message.c_str(), «SQL Error», MB_OK) ;

Листинг 5.5. Изменение значения параметра динамического запроса.

Рис. 5.13 показывает работу предыдущего примера: пользователь вводит значение параметра FirstName и в результате выполнения запроса получает список всех служащих с указанным именем.

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

DataSource указывает на источник другого набора данных, отличный от источника данного запроса, из которого вам надо выбрать значения текущего поля. Объект запроса будет сравнивать имя параметра в команде SQL с именами полей дочернего набора данных. Когда имена совпадают, параметр автоматически приобретает значение соответствующего поля. Следующая процедура иллюстрирует процесс создания формы, в которой запрос к таблице заказчиков CUSTOMER соединяется с таблицей заказов ORDERS по номеру заказчика CustNo:

1. Поместите компоненты TQuery и TTable на форму и установите псевдоним

BCDEMOS в их свойствах DatabaseName.

void _fastcall TPormI::DataSource2DataChange(TObject

*Sender, TField *Field) <

// Связь запроса с таблицей ORDERS установлена? if (Queryl->DataSource != NULL)

return; // да, возврат // Деактивировать предыдущий запрос , если он имел место Queryl->Close() ;

Queryl->Prepare(); // подготовить запрос // Выбрать значение параметра запроса из поля таблицы Queryl->ParamByName(«CustNo»)->AsInteger =

Query 1 ->0pen(); // выполнить команду SQL >

catch(EDBEngineError* dbError) // обработка ошибок BDE (

for (int i=0; i ErrorCount; i++)

MessageBox(0, dbError[i].Message.c_str(), «SQL Error», MB_OK) ;

Листинг 5.6. Соединение запроса с таблицей по событию источника.

Для динамического формирования текста командной строки SQL во время исполнения программы удобно использовать стандартную функцию Windows sprintf. Эта функция замещает параметры форматирования (%s, %d, %n и т.д.) передаваемыми значениями, например, в результате подстановки значений параметров форматирования:

sprintf(sqls, «SELECT * FROM %s WHERE %s = %d», tbIName, fIdName, fIdValue)

символьный массив sqls будет содержать следующую команду:

«SELECT * FROM EMPLOYEE WHERE EmpNo =3»

Листинг 5.7 иллюстрирует применение функции sprintf для формирования команды SELECT динамического запроса к таблице EMPLOYEE. Методы Clear и Add используются для занесения этой команды в свойство SQL. Поскольку подготовленный запрос использует ресурсы сервера и нет никакой гарантии, что новый запрос будет работать с данными одной и той же таблицы, C++Builder снимает готовность при любом изменении свойства SQL (т.е. устанавливает значение false свойства Prepared). При очередном исполнении запроса готовность автоматически восстанавливается.

void _fastcall TFormI::ButtonlClick(TObject *Sender)

char sqls[250]; // массив для хранения команды SQL

char fmts[50]; // массив для значения зарплаты

// Присвоить fmts значение, введенное пользователем

if ( i (strcmp(SalaryEdit->Text .c_str () , » «) ==0)) strcpytfmts, SalaryEdit->Text.c_str()) ;

strcpy(fmts, «100000»); // максимальная зарплата

// Деактивировать предыдущий запрос , если он имел место

// Очистить свойство SQL от предыдущего запроса

// Построить команду SELECT с помощью функции sprintf

sprintf(sqls, «SELECT * FROM EMPLOYEE WHERE Salary Присвоить сформированную команду SELECT свойству SQL

Query 1 ->0pen(); // выполнить команду SELECT )

catch(EDBEngineError* dbError) // обработка ошибок BDE <

for (int i=0; i ErrorCount; i++) MessageBox(0, dbError[i].Message.c_str(), «SQL Error»,

Листинг 5.7. Формирование команды SQL с помощью функции sprintf.

Рис. 5.15 показывает работу предыдущего примера: в результате выполнения сформированного запроса пользователь получает список всех служащих, зарплата которых (выбранная из столбца Salary таблицы) оказывается меньше введенного значения.

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

Методы Open и ExecSQL предназначены для передачи серверу команды SQL для исполнения. В предыдущих примерах все запросы выдавали единственную команду SELECT. Результат запроса по команде select рассматривается как набор данных, точно так же, как при работе с таблицей. Существуют другие команды SQL, например, команда UPDATE, которая обновляет содержимое некоторой записи, но не возвращает какой бы то ни было результат. Для исполнения сервером таких запросов следует использовать метод ExecSQL вместо метода Open.

Листинг 5.8 представляет собой некоторое обобщение всех рассмотренных ранее операций с динамическими запросами и их параметрами.

Внимание: это приложение предназначено для управляемой модификации столбца Salary таблицы служащих EMPLOYEE из демонстрационной базы данных BCDEMOS. Изменения, внесенные командой UPDATE, необратимы, поэтому перед запуском собранного приложения позаботьтесь о том, чтобы сохранить копию оригинальной таблицы. По умолчанию С-н-Builder помещает все таблицы в каталоге инсталляции \.. .\CBuilder\Examples\Data.

void_fastcall TFormI::ButtonlClick(TObject *Sender) < •

char sqls[250]; // массив для хранения команды SELECT char fmts[50]; // массив для зарплаты и надбавки int mins, adds; // десятичные эквиваленты

// Присвоить fmts зарплату, введенную пользователем

// Деактивировать предыдущий запрос и очистить SQL

sprintf(sqls, «SELECT * FROM EMPLOYEE WHERE Salary Присвоить сформированную команду SELECT свойству SQL

Queryl->0pen (); // выполнить команду SELECT

> catch(EDBEngineError* dbError) // обработка ошибок BDE

for (int i=0; i ErrorCount; i++) MessageBox(0, dbError[i].Message.c_str(), «SQL Error», MB_OK) ;

// Присвоить fmts надбавку [в %] , введенную пользователем

// Деактивировать предыдущий запрос и очистить SQL Queryl->Close () ;

// Присвоить команду UPDATE свойству SQL Queryl->SQL->Add(«UPDATE EMPLOYEE set Salary =

(Salary+((Salary*:adds))/100) WHERE (Salary ParamByName(«mins»)->AsInteger = mins;

< Queryl->ExecSQL(); // выполнить команду UPDATE

catch(EDBEngineError* dbError) // обработка ошибок BDE

for (int i=0; i ErrorCount; i++) MessageBox(0, dbError[i].Message.c_str(), «SQL Error», •MB_OK) ;

) // Деактивировать предыдущий запрос и очистить SQL

// Восстановить команду SELECT Queryl->SQL->Add(sqls) ;

Queryl->0pen (); // выполнить команду SELECT >

catch(EDBEngineError* dbError) // обработка ошибок BDE <

for (int i=0; i ErrorCount; i++)

MessageBox(0, dbError[i].Message.c_str(), «SQL Error», MB_OK) ;

Листинг 5.8. Использование метода ExecSQL с командой UPDATE.

Рис. 5.16 показывает пример работы приложения, вызывающего повышение заданной параметром mins минимальной зарплаты на величину процентной надбавки, определяемой параметром adds. Приложение представляет пользователю список служащих, зарплата которых осталась меньше установленного минимума. Сравните последний столбец таблицы с оригинальными значениями (Рис. 5.15).

Рис. 5.16. Результат выполнения динамического запроса с модификацией данных.

Аналогично таблице, компонента запроса также инкапсулирует следующие методы:

• First, Next, Prior, Last и MoveBy используются для навигации по результатам динамического запроса.

• Append, Insert, AppendRecord и InsertRecord добавляют новую запись к таблице. Delete вычеркивает текущую запись. Edit разрешает приложению модифицировать записи, a Post вызывает фактическое изменение содержимого базы данных.

5.2.1.4 Хранимые процедуры

Хранимая процедура представляет собой инкапсуляцию команд и данных (таблиц, индексов, областей значений) в некотором мета-объекте базы данных удаленного сервера. Компонента TStoredProc позволяет выполнить часто повторяющуюся процедуру, хранимую на сервере, и передать результаты приложению клиента.

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

Для примера рассмотрим приложение, задачей которого является вычисление единственной величины — среднеквадратичного отклонения значений по большой выборке записей. Для реализации этой функции ваше приложение должно получить по сети от сервера все значения, участвующие в вычислении, а затем произвести подсчет СКО. Цель вашего приложения — конечный результат в виде единственного числа — можно было бы достичь гораздо более эффективно с помощью хранимой на сервере процедуры, которая считывает данные «на месте» и передает именно то конечное значение, которое требовалось вашим приложением.

Рис. 5.17 показывает свойства компоненты хранимой процедуры в окне Инспектора объектов:

Рис. 5.17. Свойства хранимой процедуры. Active разрешает или запрещает режим просмотра «живых данных», возвращаемых процедурой на этапе проектирования. Значение false устанавливается по умолчанию.

DatabaseName содержит псевдоним адресуемого сервера базы данных.

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

ParamBindMode задает метод, по которому фактические параметры ставятся в соответствие формальным параметрам в описании хранимой процедуры. Значение pbByName (по умолчанию) определяет соответствие по именам, а значение pbByNumber — по порядку перечисления в процедуре.

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

полная информация, необходимая для запуска хранимой процедуры, может оказаться недоступной. В таком случае вам придется самому определить тип каждого параметра (Input, Output, Result), тип его данных и, возможно, значения входных параметров. Редактор параметров отображает параметры в том поряд-

ке, в котором они перечислены в описании данной хранимой процедуры (Рис. 5.18). Нажатие кнопки ОК подготавливает сервер и вызывает запуск хранимой процедуры на стадии проектирования приложения. Только база данных Oracle позволяет добавлять, вычеркивать или удалять все параметры в определении хранимой на сервере процедуры, производя таким образом ее перегрузку. Отвечающие за такие действия кнопки редактора параметров Add, Delete и Clear обычно запрещены, поскольку ваше приложение клиента не может модифицировать хранимые процедуры других серверов.

Рис. 5.18. Редактор параметров хранимой процедуры.

Аналогично запросу, свойство Params содержит указатель на массив объектного типа TParams. Поэтому изменить значение параметра во время выполнения программы можно по индексу в массиве Items объектов типа TParams:

или по имени параметра, посредством метода ParamByName:

StoredProcl->ParamByName («ЧИСЛО_СЛУЖАЩИХ») ->AsInteger++;

а затем подготовить сервер методом Prepare и выполнить процедуру методом ЕхесРгос:

Хранимая процедура возвращает результаты через выходные параметры или через результирующий набор. Доступ к выходным параметрам во время выполнения программы (как и модификация значений входных параметров перед запуском хранимой процедуры) осуществляется по индексам в массиве Items объектов типа TParams:

или по имени параметра, посредством метода ParamByName:

StoredProcl->ParamByName («ЧИСЛО_СЛУЖАЩИХ») ->AsInteger;

Хранимые процедуры некоторых серверов (например, Sybase) возвращают, подобно запросу, результирующий набор, для отображения которого надо использовать подходящую компоненту управления — чаще всего сетку. Процедура проектирования формы приложения с компонентой TStoredProc аналогична той, которую мы использовали для отображения результатов запроса:

1. Установите псевдоним адресуемой базы данных сервера в свойстве DatabaseName.

2. Поместите на форму компоненту TDataSource и установите ее свойство DataSet = StoredProcl.’

3. Поместите на форму компоненту управления сеткой TDBGrid и установите ее свойство DataSource = DataSourcel.

4. Поместите компоненту TStoredProc на форму.

5. Укажите имя процедуры в свойстве StoredProcName.

6. Установите свойство Active = true для процедуры StoredProcl с тем, чтобы сразу же отобразить результаты в сетке.

7. Откройте редактор параметров, введите (если надо) их значения и нажмите кнопку ОК.

5.2.1.5 Соединения с базой данных и транзакции

Компонента TDatabase позволяет создавать в приложении локальный BDE псевдоним базы данных, таким образом не требуя его наличия в конфигурационном файле BDE. Этот локальный псевдоним может использоваться другими компонентами доступа. Кроме того, с помощью TDatabase можно разработать оригинальный процесс первого соединения с сервером (login), подавляя некоторые подсказки и автоматически подставляя значения необходимых параметров. Наконец, и что наиболее важно, TDatabase способна поддерживать одиночное соединение с базой данных, концентрируя в себе все необходимые операции для поддержания транзакции.

Классическим примером транзакции является перевод денежных средств банковских счетов. Такая транзакция обычно состоит в добавлении определенной суммы перевода к новому счету и вычитании этой суммы из исходящего счета. Если выполнение любой из этих операций терпит неудачу, весь трансферт считается незавершенным. SQL серверы дают возможность «прокручивать назад» команды при возникновении ошибки, не производя никаких изменений в базе данных. Именно управление транзакциями является функцией компоненты TDatabase. Как правило, транзакция содержит несколько команд, поэтому начало транзакции надо отметить методом StartTransaction. Как только транзакция началась, все ее исполняемые команды находятся во временном состоянии, до тех пор, пока один из методов Commit или Rollback () не отметят конец транзакции. Вызов Commit фактически модифицирует данные, а вызов Rollback отменяет всякие изменения.

Рис. 5.19 показывает свойства компоненты соединения с базой данных в окне Инспектора объектов:

Рис. 5.19. Свойства соединения с базой дачных. AliasName содержит псевдоним существующей базы данных, определенный утилитой конфигурации BDE. Указание этого свойства является альтернативой значения DriverName.

DatabaseName позволяет создать локальный псевдоним базы данных в дополнение к значениям AliasName или DriverName.

DriverName содержит имя драйвера BDE при создании локального псевдонима по значению DatabaseName. Указание этого свойства является альтернативой значения AliasName.

Params содержит строчный массив параметров одиночного соединения.

Листинг 5.9 реализует транзакцию по изменению адреса фирмы на примере связанных таблиц CUSTOMER и ORDERS. Старый адрес, введенный пользователем в область ре

дактирования EditOld, заменяется на новый, введенный в область редактирования EditNew. В этом примере компонентный объект Databasel использовался для одиночного соединения с базой данных, поддерживающего выполнение одиночной транзакции. Этот объект необходимо каким-то образом связать с псевдонимом базы данных — или установкой соответствующих свойств компоненты, или определив параметры соединения (такие как тип драйвера, имя сервера, имя пользователя , пароль) во время выполнения программы. Сначала опробуем первый способ соединения на стадии проектирования формы приложения, установив значения свойств компоненты, как показано на Рис. 5.19.

void_fastcall TFormI::ButtonlClick(TObject *Sender) <

char sqls[250]; // массив для хранения команды SQL try

// Изменить EditOld на EditNew в таблице CUSTOMER sprintf(sqls, «UPDATE CUSTOMER set Addrl = \»%s\» WHERE (Addrl = \»%s\»)», EditNew->Text.c_str(), Edit01d->Text.c_str());

// Изменить EditOld на EditNew в таблице ORDERS sprintf(sqls, «UPDATE ORDERS set ShipToAddrl = \»%s\» WHERE (ShipToAddrl = \»%s\»)», EditNew->Text.c_str(), Edit01d->Text.c_str()) ;

// Внести все изменения, сделанные до этого момента Databasel->Commit();

catch(EDBEngineError* dbError) // обработка ошибок BDE <

for (int i=0; i ErrorCount; i++) MessageBox (0, dbError[i].Message.c_str(), «SQL Error», MB_OK) ;

> catch (Exception* exception) // обработка исключений

MessageBox (0, exception->Message.c_str (), «Error», MB_OK) ;

Листинг 5.9. Транзакция, реализующая смену адреса фирмы.

Конечно, показанный на Рис. 5.20 пример прохождения транзакции в соединении с локальным сервером не имеет особой практической ценности и приводится здесь только с целью проиллюстрировать работу компоненты TDatabase.

Рис. 5.20. Результат прохождения транзакции.

Листинг 5.10 показывает, как соединиться с сервером базы данных во время выполнения программы, не создавая ее псевдонима. Ключевые моменты заключаются в том, чтобы указать DriverName и заполнить массив параметров информацией, необходимой для первого соединения (в нашем примере пользователь вводит свое имя и пароль в объекты компонент редактирования Editi и Edit2). Мы определили только те параметры соединения, которые не установлены для данного драйвера в утилите конфигурации BDE. Значение параметра SQLPASSTHRU MODE определяет один из трех возможных способов взаимодействия табличных методов Add, Append и Insert с компонентами запросов, которые соединены с той же базой данных. Использованное в примере значение NOT SHARED означает, что табличные методы и запросы используют два раздельных соединения с сервером. Сервер рассматривает их как соединения с двумя разными пользователями. До тех пор, пока транзакция не завершится, табличные методы не применяются, хотя результаты выполнения запросов могут менять содержимое базы данных, раздельно от действий активной транзакции. Два других значения SHARED NOAUTOCOMMIT и SHARED AUTOCOMMIT указывают, что табличные методы и запросы разделяют одно общее соединение с сервером. Если вам нужно включить табличные методы в транзакцию, используйте способы SHARED NOAUTOCOMMIT или NOT SHARED.

void_fasfccall TFormI::ButtonlClick(TObject *Sender) (

char name[20]; // буфер для имени пользователя char pass [20]; // буфер для пароля try

// Закрыть базу данных и установить параметры Databasel->Close() ;

Databasel->Params->Add(«SQLPASSTHRU MODE=NOT SHARED»);

sprintffname, «USER NAME=%s», Editl->Text.c_str ());

sprintf(pass, «PASSWORD=%s», Edit2->Text.c_str());

// Снова открыть базу данных и указанную таблицу Databasel->0pen() ;

catch(EDBEngineError* dbError) // обработка ошибок BDE

for (int i=0; i ErrorCount; i++) MessageBox(0, dbError[i].Message.c_str(), «SQL Error», MB_OK) ;

Листинг 5.10. Соединение с сервером без псевдонима.

Конечно, первое вхождение в локальную демонстрационную базу данных BCDEMOS не требует задания имени пользователя и пароля, однако, используя такую методику, вы сможете стандартизовать процесс соединения с обычно защищенными базами данных удаленных серверов. Рис. 5.21 иллюстрирует работу прототипа подобного приложения.

Рис. 5.21. Первое соединение с «защищенной» базой дачных.

5.2.2 Компоненты управления данными

Компоненты управления служат для отображения и редактирования наборов данных на форме в удобном для пользователя виде. Свойство DataSource замыкает трехступенчатую связь любой из компонент управления с компонентагли доступа к содержимому базы данных. Вы должны связать выбранную компоненту управления с набором данных посредством компоненты источника TDataSource, который определяется значением свойства DataSource.

Устройство и работа большинства из этих интерфейсных элементов довольно очевидны, их эквиваленты знакомы нам по вкладке Standard стандартных Windows Палитры компонент, а глава 4 содержит подробное их описание.

Остановимся на особенностях использования исключительно важной и мощной компоненты навигатора базы данных TDBNavigator. Эта компонента придает приложениям СУБД новый стандартизованный облик с панелью управления как у видеомагнитофона (Рис. 5.22).

Рчс. 5.22. Панель навигатора.

Нажимая на кнопки First, Prior, Next и Last, пользователь перемещается от записи к записи, а с помощью кнопок Insert, Delete, Edit, Post, Cancel и Refresh про —

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

Рис. 5.23 показывает свойства компоненты навигатора базы данных в окне Инспектора объектов:

Рис. 5.23. Свойства навигатора базы данных. DataSource соединяет кнопки управления панели навигатора с компонентами доступа к наборам данных через компоненту источника. Изменяя значение этого свойства во время выполнения программы, можно использовать одну и ту же компоненту для навигации по разным таблицам. Разместите на форме две компоненты редактируемого ввода DBEditI и DBEdit2, связанные с таблицами CustomersTable и OrdersTable через источники данных CustomersSource и OrdersSource, соответственно. Когда пользователь выбирает название фирмы (поле Company в DBEditI), навигатор тоже должен соединяться с источником CustomersSource, а когда активизируется номер заказа (поле OrderNo в DBEdit2), навигатор должен переключаться на источник OrdersSource. Чтобы реализовать подобную схему работы навигатора, необходимо написать обработчик события OnEnter для одного из объектов компоненты редактирования, а затем разделить это событие с другим объектом (Листинг 5.11).

VisibleButtons позволяет убрать ненужные кнопки, например, все кнопки редактирования на форме, предназначенной исключительно для просмотра данных. В приложениях клиент/сервер рекомендуется запретитькнопки First и Last, так как их нажатие может проявляться в длительном прохождении запросов.

Во время выполнения программы можно динамически прятать или вновь показывать кнопки навигатора — в ответ на определенные действия пользователя или на изменения состояния приложения. Предположим, вы предусмотрели единый навигатор для редактирования таблицы CustomersTable и для просмотра таблицы OrdersTable. Когда навигатор подключается ко второй таблице, желательно спрятать кнопки редактирования Insert, Delete, Edit, Post, Cancel и Refresh, а при подключении к первой таблице — снова показать их. Листинг 5.11 показывает законченный текст обработчика события OnEnter с добавлениями кода для манипуляций кнопками панели навигатора.

void_fastcall TFormI:: DBEditlEnter(TObject *Sender) <

btnShow “ nbFirst“nbPrior“ nbNext“nbLast“nbInsert“ nbDelete“nbEdit“nbPost“nbCancel“nbRefresh;

Создание системных ловушек Windows на Borland C++ Builder

Written on 31 Декабря 2006 . Posted in C++ Builder

ОГЛАВЛЕНИЕ

Написание DLL.

Создание пустой библиотеки.

С++ Builder имеет встроенный мастер по созданию DLL. Используем его, чтобы создать пустую библиотеку. Для этого надо выбрать пункт меню File->New: В появившемся окне надо выбрать «DLL Wizard» и нажать кнопку «Ok». В новом диалоге в разделе «Source Type» следует оставить значение по умолчанию — «C++». Во втором разделе надо снять все флажки. После нажатия кнопки «Ок» пустая библиотека будет создана.

Глобальные переменные и функция входа (DllEntryPoint).

Надо определить некоторые глобальные переменные, которые понадобятся в дальнейшем.

В функции DllEntryPoint надо написать код, подобный нижеприведённому:

Этот код позволяет узнать способ переключения языка и установить факт наличия активного хранителя экрана. Обратите внимание на то, что этот код выполняется только когда библиотека проецируется на адресное пространство процесса — проверяется условие (reason==DLL_PROCESS_ATTACH). Если вас интересуют подробности, то их можно узнать в разделе справки «Win32 Programmer’s Reference» в подразделе «DllEntryPoint».

C++Builder

Быстрое интегрированное проектирование и разработка для современных приложений

Создавайте красивые интерфейсы для ПК и мобильных приложений с C++Builder

Вы готовы создавать лучшие пользовательские интерфейсы в своей жизни? Наш фреймворк библиотеки визуальных компонентов (VCL) для Windows и визуальная среда FireMonkey (FMX) для межплатформенных пользовательских интерфейсов обеспечивают основу для создания интуитивных и красивых пользовательских интерфейсов, поражающих на любой платформе: Windows, macOS, iOS и Android.

  • Один раз спроектировав UI, вы сможете легко настраивать его представление для разных платформ и устройств, без дополнительного перепроектирования или повторных усилий
  • Используйте Drag-and-drop чтобы переносить отображаемые и неотображаемые компоненты из палитры в визуальный редактор
  • Связывайте любые элементы пользовательского интерфейса с источниками данных при помощи визуального редактора LiveBindings Designer
  • Проверьте спроектированный интерфейс непосредственно на разных устройствах одновременно при помощи Live On-Device Preview
  • Добавьте адаптивность в свои интерфейсы для компьютеров, планшетов и смартфонов при помощи компонент, автоматически настраивающихся под разное разрешение экрана.
  • Применяйте встроенные и специфические для каждой платформы элементы управления для улучшения работы пользователей

Пишите код быстрее и лучше с помощью C++Builder

Разработчики и команды разработчиков ПО, следующие идеологии Agile, смогут писать код быстрее и лучше с помощью современных практик ООП, надежных фреймворков C++Builder и функциональной интегрированной среды разработки.

  • Проводите меньше времени в ожидании завершения продолжительной компиляции благодаря нашим хорошо оптимизированным компиляторам для всех платформ
  • Выберите один из двух мощных и надежных языков (C++Builder и усовершенствованный C++) и настройте среду разработки в соответствии со своим стилем написания кода
  • Code Insight™ обеспечивает автоматическое дополнение кода на основании уже написанного кода и используемых библиотек, чтобы ускорить и упростить дальнейшее написание кода
  • Получайте советы и подсказки из встроенной документации по мере написания кода
  • Сохраняйте гибкость процесса разработки с помощью дизайнера библиотеки визуальных компонентов, реструктуризации исходного кода в рамках методологии Agile и интерактивных шаблонов
  • Интегрируйте систему контроля версий, включая Git, Subversion и Mercurial

Более быстрая отладка с помощью интегрированных средств C++Builder для отладки кода для инструментальной платформы?

Быстрее добирайтесь до первопричины ошибки за счет использования интегрированной межплатформенной отладки кода для инструментальной платформы. При помощи интегрированной среды разработки C++Builder можно осуществлять отладку приложений, работающих дистанционно под операционными системами Windows, macOS, iOS и Android.

  • Добавляйте условные точки прерывания, чтобы быстро приостанавливать исполнение программы в указанном положении или при наступлении определенного условия.
  • Анализируйте стек вызовов целиком, чтобы иметь возможность отследить путь исполняемого кода до текущего положения.
  • Проверяйте текущие значения переменных во время приостановки программы в ходе отладки.
  • Проводите отладку на любом устройстве. Разверните приложение на любом устройстве, работающем под операционной системой iOS, Android или macOS, чтобы провести его отладку так же, как если бы приложение работало локально. Воспользуйтесь точками прерывания, анализом стека вызовов, всплывающими подсказками и функцией вычисления выражений на локальных и дистанционных машинах, проводя отладку на всех развернутых платформах.

Компилируйте и развертывайте приложение с помощью C++Builder

Создавайте приложения для предпочитаемых платформ своих пользователей. С помощью C++Builder создавайте приложения для настольных и мобильных систем из одной кодовой базы и развертывайте их для Windows, macOS, iOS и Android.

  • Специально для App Store. Быстро создавайте комплекты приложений, которые можно развертывать в Windows Store (с помощью Desktop Bridge), Apple App Store и магазине Google Play
  • Определите файлы для развертывания на конкретной платформе и создайте конфигурацию. Внутри каждого проекта разработчики могут определять файлы для развертывания в зависимости от целевой платформы (например, Windows, macOS, Android, iOS), а также создавать конфигурации (например, «Отладка» или «Выпуск»)
  • Развертывайте файлы непосредственно из интегрированной среды разработки C++Builder. Быстро развертывайте файлы на удаленных машинах с использованием Platform Assistant Server (PA Server). PA Server объединяет файлы, определенные для развертывания, и упаковывает их в один экземпляр приложения.

Повысьте качество своего кода с помощью C++Builder

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

  • Сделайте свой код лучше, используя хорошо проверенные и высокооптимизированные межплатформенные библиотеки.
  • Превратите документацию на созданный код во включаемую напрямую справочную информацию, которая доступна как вам, так и другим разработчикам группы.
  • Создавайте тесты для компонентов во всем объеме своего кода, используя включенные фреймворки DUnit и DUnitX.
  • Наблюдайте за тем, что происходит внутри приложения, не прерывая его работу. Добавляйте журналирование в реальном времени для любого приложения с помощью функции CodeSite Logging

Сотрудничайте более эффективно с помощью C++Builder

Функции сотрудничества и контроля версий C++Builder позволяют быстрее создавать более качественные продукты при независимой работе разработчика или его деятельности в составе группы. Code Collaboration обеспечивает более глубокое и точное понимание кода, более высокое качество тестирования, а также создание усовершенствованных продуктов.

  • Отслеживайте изменения и управляйте ими с помощью систем контроля версий, включая репозитории Subversion, Git и Mercurial
  • Переходите между изменениями и отслеживайте их историю во вкладке «История» в модуле просмотра кода с помощью встроенного просмотрщика различий
  • Use C++Builder command line compilers that are ideal for integrating into continuous build configurations quickly using our support for MSBuild or CMake projects.

Расширяйте интегрированную среду разработки C++Builder

C++Builder включает в себя сотни компонентов, обеспечивающих все необходимое: от создания пользовательских интерфейсов до подключения к базам данных. Это ускоряет и упрощает построение бизнес-приложений для настольных компьютеров и мобильных платформ. Помимо встроенных компонентов VCL и FireMonkey доступен широкий ассортимент инструментов и компонентов, предлагаемых сообществами Delphi и C++Builder.

  • Менеджер пакетов GetIt. Быстро расширяйте функциональность своих приложений, загружая и интегрируя новые компоненты.
  • Создание приложений для Интернета вещей. Быстро добавляйте в интегрированную среду разработки C++Builder возможности Интернета вещей. Более 50 компонентов для Интернета вещей доступны БЕСПЛАТНО через GetIt.
  • Расширяйте интегрированную среду разработки с помощью инструментов и компонентов от партнеров компании Embarcadero Technologies.
  • Интегрированные инструменты и компоненты. Beyond Compare, FastReport, TeeChart, InterBase, IP*Works, CodeSight!
  • Расширяйте интегрированную среду разработки с помощью расширений и дополнений, созданных десятками сторонних лиц, чтобы настроить ее так, как хочется именно вам

Создание приложений с возможностью подключения

Создавайте законченные решения для современных приложений под Windows 10, macOS, iOS и Android.

Eдиная база исходного кода

Создавайте приложения для всех платформ, затрачивая меньше времени на написание кода. Написали один раз, скомпилировали для всего.

Доступные данные

Подключение к более чем 20 базам данных «из коробки» благодаря функции высокоскоростного прямого доступа FireDAC.

Средний уровень

Модернизируйте существующий код и компилируйте для разных платформ.

Приложение Windows 10

Добавьте в старые приложения поддержку Windows 10, современные способы управления и поддержку Windows Store

Приложение macOS

Разрабатывайте приложения для macOS быстро и просто с помощью C++Builder.

Мобильные устройства

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

Internet of Things (IoT)

Легко подключайте свои приложения к гаджетам, устройствам, датчикам, корпоративным сервисам передачи и обработки данных.

Облако

C++Builder имеется клиентская библиотека HTTP и REST, доступная для всех платформ и позволяющая вызывать не только REST-сервисы, но даже и специфические компоненты AWS и Azure.

Расширения

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

Проектируйте, создавайте, запускайте

Интегрированная среда разработки C++Builder обеспечивает поддержку на протяжении всего цикла разработки для создания единой базы исходного кода, которую можно просто перекомпилировать и повторно разворачивать.

Средство визуальной разработки на языке C++ фирмы Borland C++ Builder

Большинство разрабатываемых разработчиком электронной аппаратуры проектов, должны взаимодействовать по различным протоколам и подключаться по различным интерфейсам связи с персональным компьютером.

Зная особенности работы того или иного интерфейса (LPT, USB 1.1, USB 2.0, Ethernet, PCI, COM, IDE и другие), входящего в состав любого персонального компьютера, современному разработчику приходится самому или с помощью программиста, разрабатывать протокол обмена между разрабатываемым устройством и персональным компьютером. Другими словами, осуществлять аппаратно-программную стыковку оборудования — отладка и стыковка программной и аппаратных частей между собой.
При этом нужно четко понимать, что главным элементом управления является персональный компьютер (PC), а не подключенное к нему периферия, которая тоже может содержать собственные микропроцессоры, контролеры и т. д.

На сегодняшний день, одной из самых простых, удобных и понятных систем программирования на языке высокого уровня С++, по моему мнению, является среда быстрой визуальной разработки фирмы Borland C++ Builder, которая предназначена для разработки различных приложений для операционных систем класса Windows.
С помощью этой среды разработки, с использованием драйверов устройств собственных, написанных или предлагаемые другими сторонними производителями, зная основы программирования на языке С++, с использованием функций WinAPI, можно написать и отладить практически любую программу или приложение за короткий промежуток времени.

Программное обеспечение для многих проектов данного сайта работает и написано с помощью среды программирования — Borland C++ Builder, работоспособно для операционных систем семейства Windows 98/ME/XP и даже для Windows Vista.

В текущем разделе сайта, будут рассматриваться основные приемы программирования и правильного написания программ в среде программирования фирмы Borland C++ Builder для платформы Windows.

Для начала работы с Borland — C++Builder, нужно хотя бы немного представлять и знать основные части программы — формы, компоненты, события и другие термины, с которыми придется работать. А для этого есть достаточно много литературы, которую читать и изучать можно довольно долго и мучительно. Поэтому, для начала опустим все сложные термины и не привычные формальности использующиеся в программировании и перейдем к созданию приложения, которое должно работать для всех платформ Windows — 98, ME, XP и Vista.

Общий вид среды проектирования при первом запуске имеет следующий вид:

Как видно из представленного выше рисунка, среда разработки C++ Builder представляет собой оконное приложение, состоящее из следующих окон:

  • главное окно, которое состоит из настраиваемой инструментальной панели и палитры компонентов;
  • окно инспектора объектов (Object Inspector);
  • окно объекта просмотра дерева приложения (Object TreeView);
  • окно формы нового приложения (Form1);
  • окно редактора кода (Unit1.cpp).

Сохраняем для начала новый проект под любым удобным именем с помощью меню главного окна — File -> Save Projects As.

В первом, появившемся диалоговом окне — «Save Unit1 As», с начала выбираем путь и рабочий каталог в котором будем хранить все файлы нашего проекта (D:\BuilderWork), затем изменяем «Имя файла»: Unit1 на Video, при этом расширение файла *.cpp. Нажимаем на кнопку «Сохранить».

Во втором, диалоговом окне «Save Project1 As», оставляем «Имя файла»: Project1, при этом расширение файла *.bpr. Нажимаем на кнопку «Сохранить».

Далее, рекомендуется выполнить перекомпоновку программы, для этого нужно нажать на инструментальной панели на кнопку «Run (F9)», с изображением зеленого треугольника. После компиляции, при отсутствии ошибок, появится пустая форма нашего приложения «Form1». В выбранном ранее нами рабочем каталоге «D:\BuilderWork», автоматически будут сформированы все необходимые файлы проекта:

Приложение, которое создается на Borland C++ Builder, может использовать по умолчанию, специальные динамически подключаемые библиотеки — DLL, в том числе библиотеку времени выполнения (RTL — Runtime Library), различные пакеты, где находятся наиболее часто используемые компоненты и системные функции (VCL60 и другие). Данные программные средства входят в состав самой среды разработки Borland C++ Builder, но могут отсутствовать на другом персональном компьютере, что приводит к проблемам запуска разрабатываемого приложения на таких компьютерах.

Для того, чтобы разрабатываемое приложение работало на других компьютерах, достаточно внести следующие настройки в опциях проекта, Project -> Options. :

a) В закладке «Packages», нужно убрать галочку или снять флажок напротив надписи «Build with runtimes packages»:

b) В закладкe «Linker», нужно убрать галочку или снять флажок напротив надписи «Use dinamyc RTL»:

c) Закрыть диалоговое окно «Project Options for Video.exe» нажатием на кнопку «OK». После чего рекомендуется выполнить перекомпоновку программы, для этого нужно нажать на инструментальной панели на кнопку «Run (F9)», с изображением зеленого треугольника.

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

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

Вкладка — Application.

Эта вкладка предназначена для задания вспомогательных, необязательных, но иногда удобных параметров приложения:

«Title» — задает надпись, которая появляется под пиктограммой приложения, если его минимизировать или свернуть;

«Help file» — определяет имя файла подсказки для приложения;

«Icon» — иконка разрабатываемого приложения (пиктограмма), представляющую собой рисунок определенного размера, определяющий принадлежность данного приложения к разработчику приложения или просто логотип.

Вкладка — Linker.

При разработке приложений, данная закладка «Linker» играет большую роль на то, что в итоге получится после компиляции. Поэтому нужно внимательно следить за правильностью установки предлагаемых ею опций.

Остальные настойки и опции проекта выбираются или изменяются в зависимости от поставленных задач перед разработчиком приложений.

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

Лабораторная работа №2. Создание консольного приложения в среде Borland delphi 0

Название Лабораторная работа №2. Создание консольного приложения в среде Borland delphi 0
страница 1/6
Дата публикации 03.03.2013
Размер 278.11 Kb.
Тип Лабораторная работа

skachate.ru > Информатика > Лабораторная работа

Лабораторная работа №2. Создание консольного приложения в среде Borland DELPHI 7.0

Цель работы. Знакомство с консольным приложением в среде программирования Borland Delphi 7.0 (C++ Builder 6.0)

Задание. В среде Borland Delphi 7.0 (C++ Builder 6.0) разработать программу, вычисляющую квадрат любого числа. Функцию, реализующую вычисление квадрата числа, поместить в отдельный файл.

Ход работы

1. Создать проект приложения для чего необходимо выбрать пункт меню File/New/Other… и далее Console Application (рис. 1).

Рис. 1. Диалоговое окно выбора создаваемого приложения

2. После нажатия OK появиться окно редактора кода (рис. 2).

Рис. 2 Окно редактора кода

Среда Delphi автоматически сгенерировала следующий код:

uses SysUtils — подключение библиотечного файла SysUtils.dcu.

begin, end – операторы начала и конца программы соответственно.

В среде C++ Builder 6.0:

int main(int argc, char* argv[])

#pragma – директива препроцессора, которая определяет действия, зависящие от конкретной реализации компилятора. Например, в Borland C++ входит вариант этой директивы для извещения компилятора о наличии в тексте программы команд ассемблера.

main– основная функция приложения, argc и argv[] ее аргументы, которые можно задавать при вызове программы из командной строки.

3. Создать функцию, вычисляющую квадрат числа, для чего используется пункт меню File/New/Unit, после чего в проект добавляется новый файл Unit1.pas (Unit1.cpp) (рис. 3).

4. После нажатия ОК в проект добавляется новый файл и на экране появляется окно редактирования этого файла.

Рис. 3. Окно редактора кода для нового файла проекта

5. Добавить в созданный файл функцию, вычисляющую квадрат числа, а в проекте необходимо обеспечить ввод аргумента и вывод его квадрата, используя функцию в созданном файле Unit1.pas (Unit1.cpp).

В среде Delphi описание функции будет выглядеть следующим образом:

function SqrFunc(arg:integer): integer;

В среде Builder:

int SqrFunc(int arg)

6. Сохранить, скомпилировать и запустить готовое приложение.
^

Лабораторная работа №3. Простое оконное Windows-приложение в среде Borland delphi 7.0

Цель работы. Целью работы является ознакомление со средой разработки приложений Borland Delphi 7.0 (C++ Builder 6.0), изучение простейших визуальных компонентов TEdit, TButton, Tlabel.

Задание. Разработать программу, позволяющую вводить текст в редактируемое поле и добавлять его к списку при нажатии мышью на кнопку.
^

Теоретические основы

Среда разработки Delphi (C++ Builder)

Borland Delphi — выпущенное компанией Borland средство быстрой разработки приложений, позволяющее создавать приложения на языке Pascal (C++).

Delphi (C++ Builder) представляет собой SDI-приложение, главное окно которого содержит настраиваемую инструментальную панель (слева) и палитру компонентов (справа). Помимо этого, по умолчанию при запуске появляются окно инспектора объектов (слева) и форма нового приложения (справа). Под окном формы приложения находится окно редактора кода.

^ Рис.1. Среда разработки Delphi

Основой приложений являются формы. Создание пользовательского интерфейса приложения заключается в добавлении в окно формы элементов объектов Delphi, называемых компонентами. Компоненты Delphi (C++ Builder) располагаются на палитре компонентов, выполненной в виде многостраничного блокнота.
^

Компоненты Delphi

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

^ Рис. 2. Пример использования видимых и невидимых компонентов

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

Каждый компонент имеет три разновидности характеристик: свойства, события и методы.

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

Рис.3. Инспектор объектов
^

Свойства компонентов

Свойства являются атрибутами компонента, определяющими его внешний вид и поведение. Многие свойства компонента в колонке свойств имеют значение, устанавливаемое по умолчанию (например, высота кнопок). Свойства компонента отображаются на странице свойств (Properties). Инспектор объектов отображает опубликованные (published) свойства компонентов. Помимо published-свойств, компоненты могут и чаще всего имеют общие (public), опубликованные свойства, которые доступны только во время выполнения приложения. Инспектор объектов используется для установки свойств во время проектирования. Список свойств располагается на странице свойств инспектора объектов. Можно определить свойства во время проектирования или написать код для видоизменения свойств компонента во время выполнения приложения.

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

События

Страница событий (Events) инспектора объектов показывает список событий, распознаваемых компонентом (программирование для операционных систем с графическим пользовательским интерфейсом, предполагает описание реакции приложения на те или иные события, а сама операционная система занимается постоянным опросом компьютера с целью выявления наступления какого-либо события). Каждый компонент имеет свой собственный набор обработчиков событий. В Delphi (C++ Builder) следует писать процедуры, (функции) называемые обработчиками событий, и связывать события с этими процедурами (функциями). Создавая обработчик того или и ого события, вы поручаете программе выполнить написанную процедуру (функцию), если это событие произойдет.

Для того, чтобы добавить обработчик событий, нужно выбрать на форме с помощью мыши компонент, которому необходим обработчик событий, затем открыть страницу событий инспектора объектов и дважды щелкнуть левой клавишей мыши на колонке значений рядом с событием, чтобы Delphi (C++ Builder) сгенерировал прототип обработчика событий и показал его в редакторе кода. При этом автоматически генерируется текст пустой процедуры, и редактор открывается в том месте, где следует вводить код. Курсор позиционируется между операторами begin и end (Для C++ Builder — <>). Далее нужно ввести код, который должен выполняться при наступлении события. Обработчик событий может иметь параметры, которые указываются после имени процедуры в круглых скобках.

Методы

Методом является процедура или функция (Для C++ Builder — только функция), которая связана с компонентом, и которая объявляется как часть объекта. Создавая обработчики событий, можно вызывать методы, используя следующую нотацию — “.” (Для C++ Builder — “->”), например:

Создание приложений в Delphi (C++ Builder)

Первым шагом в разработке приложения является создание проекта. Файлы проекта содержат сгенерированный автоматически исходный текст, который становится частью приложения, когда оно скомпилировано и подготовлено к выполнению. Чтобы создать новый проект, нужно выбрать пункт меню File/New/Other и далее Application или File/New/ Application.

Delphi (C++ Builder) создает make-файл с именем по умолчанию Project1.dpr (Project.bpr). При внесении изменений в проект, таких, как добавление новой формы, происходит обновление файл проекта.

Проект или приложение обычно имеют несколько форм. Добавление формы к проекту создает следующие дополнительные файлы:

Файл формы с расширением .dfm, содержащий информацию о ресурсах окон для конструирования формы;

Файл модуля с расширением *.pas (*.cpp), содержащий код на языке Pascal (C++);

Когда в проект добавляется новая форма, файл проекта автоматически обновляется.

Для того чтобы добавить одну или более форм к проекту, необходимо выбрать пункт меню File/New/Form. Появится пустая форма, которая будет добавлена к проекту.

Илон Маск рекомендует:  outline-width в CSS
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL