Урок практикум практическая работа delphi. Создание приложения для работ с БД Access. Создание приложений с базами данных

Практическая работа 1. Элементы интерфейса Delphi .

Общие положения

Delphi - интегрированная среда разработки.

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

В Delphi имеются 10 окон, но после загрузки появляются четыре окна (рис.1):

    главное окно Delphi * - имя проекта;

    окно формы для проектирования приложения Form 1

    окно инспектора объектов Object Inspector;

    окно редактора кода Unit 1. pas .








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

Это окно содержит: строку заголовка; строку меню; панель инструментов; палитру компонентов.

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

По заголовку главного окна можно определить, в каком режиме открыт проект:

Текст заголовка

Режим работы

Delphi*-Project1

Редактирование

Delphi* - Project1

выполнение

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

Панель инструментов предназначена для выполнения некоторых команд, реализуемых главным меню. На этой панели есть, в частности, кнопка сохранения проекта на диске, кнопка открытия проекта, кнопка запуска программы на выполнение.

Палитра компонентов устроена в виде наборов пиктограмм. Совокупность наборов составляет библиотеку визуальных компонентов (Visual Component Library - VCL ). Имеется несколько категорий компонентов, каждая из которых расположена на своей вкладке. С помощью палитры компонентов мы будем создавать объекты на форме.

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

Окно инспектора объектов отображает свойства активизированного щелчком мышью какого-либо компонента или самой формы. Имя активизированного компонента находится под заголовком окна.

Это окно имеет две вкладки - Properties (Свойства) и Events (События).

Свойство определяет атрибут компонента, например размер кнопки или шрифт метки.

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

По ходу работы система формирует в окне редактора кода текст программы на языке Паскаль, связанной с формой. После загрузки Delphi это окно спрятано за окном формы, иего можно увидеть, щелкнув на кнопке Toggle Form / Unit на панели инструментов.

Пользователь может дополнять текст программы самостоятельно или по предложению системы в момент размещения объектов на форме.

Создание и сохранение проекта и файла модуля

Каждый пункт меню содержит набор команд. Рассмотрим некоторые команды меню File .

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

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

Команда New Application создает новый проект, состоящий из файла проекта project 1. dpr , файла модуля unit 1. pas и файла формы unit 1. dfm . При этом IDE отображает окно проектировщика формы и редактора кода. Окно проектировщика формы является активным. После этого рекомендуется сохранить новый проект, присвоив ему имя.

Команда Save Project As позволяет сохранить проект под другим именем и в случае необходимости в другом каталоге. После выбора этой команды появляется диалоговое окно для сохранения файла кода программы. По умолчанию файлу дается расширение pas , указанное в окне Тип файла. Далее следует ввести имя файла и щелкнуть на кнопке Ok . Появится следующее диалоговое окно для сохранения файла проекта (расширение dpr - Delphi Project ). Надо ввести имя проекта и щелкнуть на кнопке Ok .

Примечание. Для сохранения ранее созданного проекта достаточно выполнить команду Save .

Задание.

    Создайте новый проект. Для этого выполните команду File , New Application .

    Выполните "пустую" программу - щелкните мышью на кпопке Run . На экране исчезнут все вспомогательные окна, у формы пропадет координатная сетка.

    Для возвращения в среду Delphi нажмите Alt + F 4.

    Сохраните прект. Для этого выполните команду File , Save Project As , предварительно создав паку, в которую вы будете записывать свои проекты.

Примечание. Особое внимание обратите на п.4: самая распространенная ошибка - выполнение команды File , Save вместо File , Save Project As .

    Закройте Delphi .

    Загрузите Delphi .

    Загрузите свой проект, выполнив команду File , Open Project и указав правильно имя (см.п.4).

    Повторите п.2 и п.3.

Практическая работа 2. Разработка первого проекта.

Постановка задачи

После запуска программы по щелчку мышью на кнопке "Приветствие" появляется сообщение "Первые успехи!". Для выхода из программы необходимо щелкнуть мышью на кнопке "Выход".

Пояснение. Новым в этой работе является использование компонентов Label и Button палитры компонентов Standard и обработка события OnClick - нажатия кнопки.

План разработки программы

    Открыть новый проект.

    Label и две кнопки Button .

    Выделить кнопку Button 2 , перейти в Object Inspertor на вкладку Properties , найти Caption (заголовок) и изменить заголовок Button 2 на заголовок "Выход".

    Перейти на вкладку Events окна Object Inspector , найти событие OnClick , справа от него дважды щелкнуть мышью. Ввести лишь одну команду: Close ; (Обязательно поставить точку с запятой в конце команды).

    Сохранить код программы и проект под именами pr 1. pas и pr 2. dpr .

    Выделить форму, в свойстве Caption окна Object Inspertor заменить имя формы Form 1 на "Проект -1". Это будет заголовком основного окна программы.

    Выделить кнопку Button 1 в свойстве Caption окна Object Inspertor заменить имя кнопки Button 1 на "Приветствие". При необходимости увеличить длина кнопки.

    Перейти на вкладку Events окна Object Inspertor и найти событие OnClick , справа от него дважды щелкнуть мышью. Ввести следующий код:

Label 1. Caption :="Первые успехи!";

Краткое описание плана разработки программы

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

    Открыть новый проект.

    Разместить на форме экземпляры компонентов: метку Label и две кнопки Button .

    Object Inspertor

    Имя свойства/

    имя события

    Действие

    Button2

    Properties

    Caption

    Установка имени кнопки "Выход"

    Events

    OnClick

    Close

    Сохранить код программы и проект под именем pr 1. pas и pr 2. dpr .

    Запустить программу, затем закрыть окно проекта, щелкнув на кнопке "Выход".

    Выполнить следующие действия:

  1. Выделенный объект

    Вкладка окна

    Object Inspertor

    Имя свойства/

    имя события

    Действие

    Form1

    Properties

    Caption

    Установка имени формы: "Проект-1"

    Button1

    Properties

    Caption

    Установка имени кнопки: "Приветствие"

    Events

    OnClick

    Label 1. Caption :="Первые успехи!";

Задание для самостоятельного выполнения

    Сделать шрифт выводимой реплики "Первые успехи" отличным от стандартного по виду, цвету и размеру. (Подсказка. В Object Inspertor дважды щелкнуть справа от названия свойства Font )

    Заменить вид кнопки выход на более привлекательный. (Подсказка. Для замены кнопки надо удалить существующую, а другую найти в палитре компонентов на вкладке Additional . Она называется BitBtn . Затем изменить ее вид с помощью свойства Kind .)

    Сделать так, чтобы после нажатия кнопки "Приветствие" на экране появлялось сообщение "Первые и не последние!". (Подсказка. Изменить значение свойства Caption метки Label 1 при реакции кнопки Button 1 на событие OnClick .

    Сделать файл pr 1. exe . (Подсказка. В меню опция Project/ Compile Project1)

    Выйти из среды Delphi и запустить исполняемый файл в Windows .

Практическая работа. Разработка проекта "Диалог"

Программа предлагает решить задачи

Постановка задачи

Составить программу, выполняющую следующие действия.

После запуска программы пользователь вводит свое имя, например Иван, в Edit (прямоугольник с мигающим курсором) и нажимает клавишу Enter . Появляется вопрос: "Иван, ты любишь решать задачки?". Если пользователь щелкает на кнопке "Да", то появляется реплика "Молодец", если "Нет" - реплика: "Почему же? Это интересно. Давай, порешаем!". Для продолжения диалога необходимо щелкнуть на кнопке «Давай!!!»

Пояснение. Новым в этой работе является использование строки ввода Edit (вкладка палитры компонентов Standard ) и обработки события OnKeyPress - нажатия клавиши.

План разработки программы

    Открыть новый проект. Дать форме название "Диалог".

    Разместить на форме экземпляры компонентов в соответствии с рис.3

    Добавить Form 2: File -> New Form

    Выполнить следующие действия:

    Edit1

    Events

    OnKeyPress

    If key=#13 then begin

    Label2.Caption:=Edit1.Text+" , тылюбишьрешать задачки?";

    End;

    Button1

    Properties

    Caption

    Установка имени кнопки: "да"

    Events

    OnClick

    Label3.caption:="Молодец!";

    Button2

    Properties

    Caption

    Установка имени кнопки "Нет"

    Events

    OnClick

    Label 3.caption :="Почему же? Это интересно.";

    Button3

    Properties

    Caption

    Установка имени кнопки "Давай!!!"

    OnClick

    Form2.Show;

  1. Запустить программу, затем открыть окно второй формы, щелкнув на кнопке "Давай!!!". Система предложит включить в список подключаемых модулей новый модуль Unit 2. Yes .

Дополнительное задание

    Сделать кнопки "Да" и "Нет" доступными только после ввода имени и нажатия клавиши Enter . Подсказка. Значение свойства Enabled кнопок "Да" и "Нет" установить равным False , а в процедуру Edit 1KeyPress включить код

Button1.Enabled:=true;

Button2.Enabled:=true;

    Удалить имена объектов Edit 1, Label 2, Label 3 для обеспечения возможности повторить диалог. Подсказка. Разместить на форме еще одну кнопку BitBtn . Установить значение bkRetry свойства Kind и значение "Повторить" свойства Caption . Ввести программно по нажатию кнопки "Повторить" пустые строки вместо надписей и имен кнопок:

Label2.Caption:=" ";

Label3.Caption:=" ";

Edit1.Text:=" ";

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

Form1.ActiveControl:=Edit1

    На второй форме написать заголовок, задачу, предложение внести данные (Label ), Edit для ввода данных, Button «Ответ» и дополнительный объект Label для вывода ответа.

На щелчок по объекту Button «Ответ» запрограммировать решение задачи. Например,

procedure TForm2.Button1Click(Sender: TObject);

begin

r1:=strtoFloat(edit1.text);

r2:=strtoFloat(edit2.text);

r3:=strtoFloat(edit1.text);

r:=1/r1+1/r2+1/r3; r:=1/r;

Label5.Caption:=FloatToStr(r)+" Ом";

end;

Помни!

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

Практическая работа №4 Расчет оптимального веса человека

Постановка задачи. Пусть оптимальный вес человека определяется как рост минус 100 см. Если фактический вес человека меньше оптимального, то будем считать его худым, если больше, то полным.

Создать программу, выполняющую следующие действия.

Введя свой рост и фактический вес и нажав кнопку «Расчет», учащийся может определить, худой он или пол ный и на сколько надо поправиться или похудеть (рис. 12).

Пояснение. Новым в этой работе является:

    использование типов перемен ных - целочисленного и дей ствительного ( integer и real );

    преобразование строковых дан ных в числовые и числовых в строковые: с помощью функций StrToInt ; StrToFloat ; IntToStr FloatToStr ; Format ();

    обработка исключительных ситуаций с помощью оператора Try - except - end ;

    использование процедуры ShowMessage для вывода сообщения в отдель ном окне.

План разработки программы

    Открыть новый проект.

    понентов в соответствии с рис. 13. В поле Editl будем вводить вес в килограммах, а в Edit 2 - рост в сантиметрах.

    Сохранить код программы и проект под именами, например, unit 5. pas и pr 5. dpr .

    Ввести в раздел VAR переменные для сохранения значений:

    фактического веса ( faktW ), оптимального веса ( optW ),

    роста ( Rost ),

    разницы между оптимальным весом и фактическим ( Delta ). Вначале будем считать, что все данные у нас целые числа:

    var

    factW, optW, Rost, Delta: integer;

    Создать процедуру, реагирующую на щелчок на кнопке Buttonl , и за полнить ее следующим кодом:

Выделенный объект

Вкладка окна Object Inspector

Имя события

Действие

Buttonl

Events

OnClick

factW:= StrToInt (Editl. text) ;

Rost: = StrToInt (Edit2 . Text) ;

OptW:=Rost - 100;

Delta:= abs(factW - optW) ;

if optW = factW then

Label3 . caption:= " Ваш вес идеален !"

else

if optW > factW then

Label3 . caption:= " Вам надо попра -

виться на "+ IntToStr ( Delta ) +" кг."

else

Label3 . caption:= " Вам надо поху -

деть на "+ IntToStr ( Delta )+" кг."

Пояснение. Функция StrToInt преобразует строку в целое число, функция IntToStr выполняет обратное действие - целое число преобразует в строку,

Сохранить код программы и проект под именами, например, pr -5. pas и pr -5. dpr .

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

var

factW , optW , Rost , Delta : real ;

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

8. Сохранить проект, запустить и протестировать его.

Практическая работа №5. Веселый калькулятор

Постановка задачи. Сделать простейший калькулятор по образцу, рис.1. В левой части формы находится графический объект Томагочи. Необходимо сделать так, чтобы Томагочи моргал при нажатии на кнопку «Ась?»

рис. 1

План разработки программы

    Открыть новый проект.

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

begin

a:=strToInt(edit1.text);

b:=StrToInt(edit2.text);

c:=a+b;

Label4.Caption:=IntToStr(c);

Timer1.Enabled:=true;

end;

BitBtn3

Properties

Caption

-

Events

OnClick

Аналогично

BitBtn4

Properties

Caption

*

Events

OnClick

Аналогично

BitBtn5

Properties

Caption

/

Events

OnClick

Аналогично

Для создания графического объекта используйте Shape на панели компонентов Additional . В окне Object Inspector выберите свойство Shape и установите нужную фигуру в раскрывающемся списке. Цвет фигуры установите с помощью свойства Color . Для создания анимации нужен таймер времени. Таймер можно установить, выбрав на панели компонентов на вкладке System объект Timer .

    Выполнить следующие действия.

shape8.Height:= 20;

timer1.Enabled:=false;

end;

Button

Propertie

Caption «Ась?»

begin

shape7.Height:=45;

shape8.Height:= 45;

timer1.Enabled:=true;

end ;

Дополнительное задание.

Сделать калькулятор для вещественных чисел.

Практическая работа №6 Сказка про Ивана царевича

Постановка задачи. Составить программу выбора пути. Используйте образец.

Выполнить следующие действия.

begin

Label 1.Show ;// Видимый объект

Label 2.Hide ; //Невидимый объект

label3.hide;

label4.hide;

end;

RadioButton2

Propertie

Caption « Пойдунаправо»

Events «OnClick»

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

Label2.Show;

Label1.Hide;

label3.hide;

label4.hide;

end;

Аналогично настраиваются кнопки RadioButton 3 и RadioButton 4. Добавьте в форму кнопку «Еще?», предусматривающую дополнительный вариант пути.

Лабораторная работа 8 .

Создание графического редактора

в среде Delphi .

Постановка задачи. Создать собственный графический редактор. Редактор должен иметь строку меню (Standard / MainMenu ) и сохранять рисунки. Пользователь рисует с помощью мыши в рабочей области.

Алгоритм действия


Var r:Boolean;

T:Tcolor;

Procedure Tform1.Image1MouseDown;

Begin

Image1.Cavas.MoveTo(x,y);

R:=True;

End;

2) OnMouseMove

Begin

If r then Image1.Canvas.LineTo(x,y);

3) OnMouseUp

Begin

R:=True;

    Настроим палитру с помощью компонента ScrollBar (полоса прокрутки на вкладке Standard ) и стандартной функции RGB , позволяющей синтезировать код цвета по кодам базовых цветов: красного, зеленого и синего).

Установите событие для компонента ScrollBar 1:

procedure TForm1.ScrollBar1Change(Sender: TObject);

begin

Image1.Canvas.Pen.Color:=t;

Shape1.Brush.Color:=t;

t:=RGB(ScrollBar1.Position, ScrollBar2.Position, ScrollBar3.Position);

end;

Аналогично установите события для компонентов ScrollBar2 и ScrollBar3.

    Для отображения палитры используйте компонент Shape :

procedure TForm1.Shape1ContextPopup(Sender: TObject; MousePos: TPoint;

var Handled: Boolean);

begin

Shape1.Brush.Color;

end;

    Для очистки изображения используйте процедуру

procedure TForm1.Button3Click(Sender: TObject);

begin

Image1.Canvas.FillRect(ClientRect);

end;

    Чтобы сохранить рисунок воспользуйтесь двумя компонентами Button 1 и SaveDialog 1(на вкладке Dialog )

procedure TForm1.Button1Click(Sender: TObject);

begin

if SaveDialog1.Execute then

Image1.Picture.SaveToFile(SaveDialog1.FileName);

end;

    Отредактируйте программу и сохраните в папке Графика.

Практическая работа 7. Создание текстового редактора в среде Delphi .

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

Пояснение. Новым в этой работе является использование

Алгоритм действия

1. Открыть Delphi .

На строке меню Project/ Add New Project...

На вкладке Project окна New Item « кликните » на Application Wizard. Откроется мастер приложений. Первое окно предложит указать, какие меню нам нужны. Пометьте галочкой File menu и Edit menu, затем кликните Next . Следующее окно предложит выбрать расширения файлов, с которами будет работать Ваша программа. Кликните на Add .В поле Desction введите «Текстовый документ», а в поле Extension « txt » и на Ok , а потом Next . В следующем окне у Вас поинтересуются, какие стандартные кнопки Вы хотите добавить на панель инструментов будущего приложения. Разберитесь в интерфейсе этого окна самостоятельно. Добавьте на панель инструментов все доступные кнопки из меню File и Edit. Перед тем как добавлять кнопки из меню Edit один раз нажмите кнопку Space . Так Вы поставите между группами кнопок File и Edit разделительную черту. В следующем окне введите на английском языке название программы. С помощью кнопки Browse определите для своего проекта место на жестком диске и пометьте галочками пункты Creat a status line и Enable hints . Нажмите на Finish и Delphi создаст новый проект.

2. Переведите весь каркас на русский язык: заголовок окна программы, все пункты меню, подсказки к кнопкам (сами кнопки уже готовы).

Сперва по очереди выделяйте каждую кнопку на панели инструментов Вашего редактора, и в ОИ на первой вкладке найдите свойство Hint . Это свойство как раз олтвечает за всплывающую подсказку к кнопке. Переведите на русский язык значение этого свойства. Например, первую кнопку переведем так: «Новый документ/Нажмите эту кнопку для создания нового документа».

3. После того как Вы русифицировали кнопки, пора приниматься за пункты меню. На прямую работать с ними не получится. Дважды щелкните по кнопке Main menu , которая находится между панелью инструментов и статусной линией заготовки. На самом деле это вовсе не кнопка, а невизуальный компонент. Она символизирует меню программы. После запуска программы эта «кнопка» просто не будет видна. Откроется редактор меню. Вот тут уже можно выделять разные пункты меню, как отдельные объекты и изменять их свойства. Здесь надо перевести не только подсказки, но и сами названия пунктов меню. За названия любых объектов отвечает свойства Caption . Добавлять новые или удалять старые пункты можно через контексное меню. Обратите внимание, что перед некоторыми буквами в названиях пунктов меню стоит знак &. Это значит, что во время работы программы следующая за ним буква будет подчёркнута, а активировать этот пункт меню можно будет нажатием соответствующей кнопке на клавиатуре. Для полной русификации не хватает только одного – русского названия программы. Дайте название своему редактору.

4. Основой текстового редактора является поле, куда пользователь введет текст. На палитре Delphi есть компонент, который отвечает за подобное поле ввода, - RichEdit . Найдите этот компонент (размещается он на вкладке Win 32), кликните на него, а потом кликните на свободном месте на форме. Невзрачная кнопочка развернется в целое поле ввода. Отформатируем поле. Выделите RichEdit и в ОИ установите свойство Align в alClient . Поле ввода заняло всю свободную площадь на форме. Откройте свойство Line и удалите все содержимое поля. Запустите программу.

5. Опишем функцию сохранения и загрузки текстовых файлов. Внимательно посмотрите на свою форму. Видите невизуальные компоненты OpenDialog и SaveDialog они отвечают за стандартные окна сохранения и загрузки файлов Windows . Благодаря этому нет необходимости создавать соответствующие диалоги.

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

Begin

RichEdit1.Lines.SaveToFile(SaveDialog.FileName);

End ;

Процедура для кнопки «Открыть»:

Begin

RichEdit1.Lines.LoadFromFile(OpenDialog.FileName);

End ;

Кнопка «Новый документ»:

Begin

RichEdit1.Clear;

End ;

Кнопка «настройка печати»

Begin

RichEdit 1. Print (‘текстового редактора «Супер»’);//Отправит на печать все содержимое

End ;

Кнопка «Отмена»:

Begin

With RichEdit1 do if HandleAllocated then SendMessage(Handle, EM_UNDO,0,0);

End ;

Кнопка «Вырезать»:

Begin

RichEdit1.CutTOClipboard;

End ;

Кнопка «Копировать »:

Begin

RichEdit1.CopyTOClipboard;

End ;

Кнопка «Вставить»:

Begin

RichEdit1.PasteFrom С lipboard;

End ;

Поздравляю! Вы создали собственный текстовый редактор.

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

Практическая работа № 1

“Создание первого консольного приложения”

Цели работы:

  • изучить технологию создания консольного приложения на Delphi 7;
  • создать первое консольное приложение на Delphi 7.

Порядок выполнения:

1. Загрузите Delphi 7.

2. Из меню File выберите команду New | Other, затем на вкладке New появившегося диалогового окна New Items - тип создаваемого приложения - Console Application.

Рис.1.1. Выбор создаваемого консольного приложения в окне New Items

Рис.1.2.Шаблон главной процедуры консольного приложения

3. В результате этих действий на экране появится окно Project1.dpr, в котором можно набирать инструкции программы (Рис.1.2). Директива {$APPTYPE CONSOLE} предназначена для компилятора и сообщает ему, что программу нужно генерировать как консольное приложение. Далее используем знания языка Pascal: операторы записывается между begin и end, константы и переменные объявляются выше основной программы, процедуры и функции размещают между объявлением переменных и основной программой. Добавьте в тело программы строчку Writeln("Hello!"). Запустите ее на выполнение, щелкнув по кнопке или нажав клавишу F9 .

4. Быстро появится и исчезнет черное окно. Как следует поступить далее, чтобы можно было “остановить” это окно? Простейший метод - добавить оператор Readln.

Рис.1.3. Окно с кодом программы

5. Запустите программу на выполнение.

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

6. Сохраните проект в отдельной папке Консоль под именем Console, выбрав пункт меню File-Save All. В момент сохранения проекта имя программы будет автоматически заменено на имя, под которым сохранен проект.

7. Откройте папку Консоль , затем файл Console.dpr - это и есть та основная программа, которая редактируется.

Практическая работа № 2

“Выведение на экран русского текста”

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

Порядок выполнения:

1. Создайте копию папки Консоль (Практическая работа №1).

2. Переименуйте ее: Консоль_рус.

3. Загрузите файл Console.dpr

4. В программном коде замените команду вывода на Writeln("Здравствуй!"); и запустите программу на выполнение. Наверняка, вместо приветствия вы увидели какую-то “чушь”.

CharToOEM (PСhar(s), PChar(s));

Здесь PChar(s) обозначает адрес символа, с которого начинается строка s. Первый параметр функции - адрес исходной строки, а второй - адрес строки-результата. В данном случае оба адреса совпадают.

Объявите символьную переменную (var s:string;).

Внесите изменения в код основной программы таким образом:

s:= " Здравствуй!";

6. Добавьте модуль Windows в список uses:

Windows, SysUtils;

Рис. 2.1. Окно с кодом программы

7. Запустите программу.

Рис. 2.2. Результат исполнения программы Console_rus.dpr

8. Сохраните программу (Console_rus.dpr) и закройте проект.

Практическая работа № 3

“Программы с линейноЙ структурой”

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

Порядок выполнения:

1. Ознакомьтесь с условием задачи: Создать консольное приложение для вычисления площади прямоугольника.

2. Создайте консольное приложение по предложенному на рис.3.1. образцу:

      Рис.3.1. Окно консольного приложения Plosh_pryamoug.exe

3. Сравните свой программный код с листингом 3.1.

Листинг 3.1. Площадь параллелограмма

program Plosh_pryamoug;

{$APPTYPE CONSOLE}

var s,i,h,p:string;

dl,shir,pl:integer; // длина, ширина, площадь

s:= "Площадь прямоугольника";

CharToOEM (PChar(s), PChar(s));

i:="Введите значение длины";

CharToOEM (PChar(i), PChar(i));

h:="Введите значение ширины";

CharToOEM (PChar(h), PChar(h));

p:="Площадь прямоугольника равна ";

CharToOEM (PChar(p), PChar(p));

Writeln(p,pl) ; readln; end.

Практическая работа № 4

“Создание консольного приложения
“Hello, world! Здравствуй, мир!”

Цели работы:

  • закрепить навыки по самостоятельному созданию консольных приложений для алгоритмов с линейной структурой;
  • вывести на экран текст на русском и английском языках.

Порядок выполнения:

1. Дана задача: Создать консольное приложение для выведения на экран текста:

    Здравствуй, мир!

2. Создайте консольное приложение по предложенному на рис.4.1. образцу.


3. Сравните свой программный код с листингом 4.1.

Листинг 4.1.Hello, world! Здравствуй, мир!

program Hello_mir;

{$APPTYPE CONSOLE}

Windows, SysUtils;

WriteLn ("Hello, world!");

s:= "Здравствуй, мир!";

CharToOEM (PChar(s), PChar(s));

Практическая работа № 5

“Алгоритмы разветвляющейся и циклической структуры”

Цели работы:

  • самостоятельно создать консольное приложение с использованием оператора for, который используется для организации циклов с фиксированным, определяемым во время разработки программы, числом повторений;
  • повторить оператор ветвления if…then;
  • закрепить навыки выведения текста на экран.

Задача: С клавиатуры вводятся N чисел. Составьте программу, которая определяет количество отрицательных, количество положительных и количество нулей среди введенных чисел. Значение N вводится с клавиатуры (стр.35, № 14 - сборник “Основы информатики и вычислительной техники. 9 класс”, Б.Бурибаев, Р. Дузбаева, А. Махметова, Алматы “Мектеп”, 2005 год).

Листинг 6.1. for_if

{$APPTYPE CONSOLE}

var a,b,n,so,sp,sn:integer; // a -параметр цикла, n - число вводимых чисел, b - вводимое число, so - число введенных отрицательных чисел, sp - число введенных положительных чисел, sn - число введенных нулей.

s1,s2,s3,s4,s5:string;

s1:= "Задайте количество чисел, которые будут введены";

CharToOEM (PChar(s1), PChar(s1));

For a:=1 to n do begin

s2:="Введите любое целое число";

CharToOEM (PChar(s2), PChar(s2));

If b<0 then so:=so+1;

If b>0 then sp:=sp+1;

If b=0 then sn:=sn+1;

s3:= "Число введенных отрицательных_чисел равно";

CharToOEM (PChar(s3), PChar(s3));

s4:= "Число введенных положительных_чисел равно";

CharToOEM (PChar(s4), PChar(s4));

s5:= "Число введенных нулей равно";

CharToOEM (PChar(s5), PChar(s5));

Рис.6.1. Окно созданного консольного приложения for_if.exe

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

Задачи урока

  • Работа с компонентом Memo (многострочный редактор).
  • Работа с компонентом CheckBox (переключатель).
  • Понятие компонента-контейнера.

Выполнение упражнения

Сегодня мы создадим простой текстовый редактор с возможностью очистки содержимого рабочей области (рисунок 1). Этот редактор может пригодиться при работе с текстовыми документами.

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

Рисунок 1. Окно приложения

1. Дизайн приложения

1. Поместите компонент Memo (вкладка Standard ) на форму. Также добавьте компонент-контейнер Panel . В нём мы разместим кнопки, управляющие приложением. После этого очистите у компонента Panel свойство Caption и измените заголовок формы на надпись «Текстовый редактор ». Примерный результат работы показан на рисунке 2.


Рисунок 2

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

3. Чтобы понять принцип работы компонентов-контейнеров, посмотрите на содержимое окна Дерево объектов (Object TreeView ) (если его не видно на экране, нажмите комбинацию клавиш Ctrl+Shift+F11 ). В нём хранится список всех компонентов, размещённых на форме (рисунок 3а ). Из него видно, что главный контейнер - это форма (Form1 ). На ней расположены два компонента: Memo1 и Panel1 .

А) б) в)
Рисунок 3

4. Увеличьте размер панели до размеров, в двое больших чем многострочный редактор. Измените контейнер у компонента Memo1 с Form1 на Panel1 . Для этого в окне Дерево объектов методом Drag and Drop (Перетащить и оставить) перетащите компонент Memo1 из формы (Form1 ) на панель (Panel1 ), как показано на рисунке 3б . В результате вы увидите, что панель стала обладателем многострочного редактора Memo (рисунок 3в ). Теперь перемещение панели приведёт и к перемещению многострочного редактора.

5. Измените контейнер у компонента Memo1 с Panel1 на Form1 .

3. В принципе, текстовый редактор уже готов. Сохраните проект под именем Editor .

4. Запустите приложение и убедитесь, что вы можете легко набирать и редактировать текст в поле Memo .

Итак, наше приложение, созданное с помощью нескольких нажатий мыши, уже позволяет редактировать текст, и это «плюс». Рассмотрим «минусы»:

  • при запуске приложения компонент Memo содержит совершенно ненужную надпись «Memo1 «;
  • при изменении размеров формы размер поля Memo не меняется, что выглядит некрасиво: при увеличении окна появляется много свободного места, а при уменьшении - появляются полосы прокрутки.

5. Чтобы удалить надпись «Memo1 » в компоненте Memo , необходимо у него очистить свойство Lines (рисунок 3а). Это аналог свойства Text компонента Edit , только в данном случае текст можно вводить многострочный. Итак, в компоненте Memo напротив свойства Lines нажмите на кнопку с тремя точками. Откроется дополнительное окно (рисунок 3б). Удалите весь содержащийся там текст.

А) б)
Рисунок 3

6. Настроим компонент Memo так, чтобы его границы автоматически изменялись при изменении размеров формы с помощью свойства Align (переводится как «выровнять»). Как видно из рисунка 1, компонент Panel должен «прилипнуть» к верхней части окна (Align = alTop ), а компонент Memo должен занять всю остальную площадь (Align = alCliеnt ). Результат показан на рисунке 4а.

7. Запустите приложение и поменяйте размер формы. Размеры компонентов динамически изменятся в зависимости от её размеров. Закройте приложение.

А) б)
Рисунок 4

8. В компонент Panel добавьте четыре кнопки Button и измените их заголовок, как показано на рисунке 4б. Назначение кнопок понятно из их заголовка (свойства Caption ). Дадим им следующие имена (свойство Name ): «Новый » - ButtonNew , «Открыть » -ButtonOpen , «Шрифт » - ButtonFont , «Выход » - ButtonExit , Memo1 - MemoOut .

Отметим, что кнопки «Открыть » и «Шрифт » заработают во второй части этого урока. Сейчас мы просто создаём общий интерфейс.

9. Добавьте из категории Standart в контейнер Panel компонент CheckBox (переключатель). Он будет выполнять функцию быстрого изменения атрибута шрифта «Жирный ». Переименуйте его (измените свойство Name ) в CheckBold (Bold переводится как жирный). Работа с этим компонентом также будет рассмотрена во втором разделе урока. Измените заголовок переключателя (свойство Caption ) на «Жирный » (рисунок 4б).

10. Установите свойство AutoSize=True для панели Panel. Размер панели автоматически изменится так, чтобы вместить все находящиеся на нём компоненты (рисунок 4б).

11. Запустите приложение. У нас получился почти полноценный редактор текста. Но вот беда… Текст мы вводить можем, но ни одна кнопка не работает. Для исправления этого досадного обстоятельства необходимо написать обработку событий OnClick для каждой кнопки.

Закройте приложение.

2. Выходим из приложения

Создайте обработчик события OnClick для кнопки «Выход »

3. Очистим редактор!

1. Выберите кнопку «Новый » и создайте для неё обработчик события OnClick . В нём запишем всего один метод для компонента Memo - Clear , который очищает содержимое этого компонента:

Procedure TForm1.ButtonNewClick (Sender: TObject); begin MemoOut.Clear; end;

Листинг 1

2. Запустите приложение. Теперь мы имеем простейший текстовый редактор с функциями:

  • очистки рабочей области;
  • работы с многострочным текстом;
  • вставки и удаления символов;
  • выделения текста;
  • работы с буфером обмена через горячие клавиши или контекстное меню.

Закройте приложение.

4. Коротко о главном

  • Компонент Memo обладает свойствами многострочного текстового редактора.
  • Свойство Align указывает, к какой стороне окна прижать компонент.
  • Логическое свойство AutoSize определяет, будет ли у компонента автоматический размер, в зависимости от его содержимого.
  • Компонент-контейнер – это компонент, который может содержать другие компоненты. Используется для смыслового объединения компонент.
  • Окно Дерево объектов дает возможность быстрой смены контейнера для компонентов;

Второй раздел урока: Текстовый редактор, или А мы ещё файлы открывать умеем и шрифт изменять тоже…

Выполнение упражнения

Для загрузки текстовых файлов в компонент Memo и изменения параметров шрифта будем использовать стандартные диалоговые окна Windows Шрифт (рисунок 1б) и Открыть (рисунок 1в).

А) б)
в)
Рисунок 1. Окно приложения

1. Открываем файл

1. Откройте проект, созданный в предыдущем разделе урока № 4 - Текстовый редактор, или Наберём и очистим!

2. Из палитры компонентов, категории Dialog , поместите на форму невизуальные компоненты: FontDialog и OpenDialog . В какое место формы мы их поместим, это неважно, потому что они видны только на этапе разработки приложения.

  • Компонент FontDialog - вызывает окно стандартного диалога выбора параметров шрифта Шрифт .
  • Компонент OpenDialog - вызывает окно стандартного диалога выбора файлов Открыть .

Двойной щелчок по этим компонентам открывает стандартный диалог (не событие, как это было у привычных для нас компонентов). Это диалоговое окно будет появляться при обращении к нему из работающего приложения (или, как говорят, в режиме RunTime). Это очень удобно, т. к. в режиме конструирования (или, как говорят, в режиме DesignTime) можно посмотреть, как выглядит окно диалога.

3. Создайте обработчик события OnClick для кнопки «Открыть ». Он должен:

  • вызывать стандартный диалог открытия файлов;
  • загружать указанный пользователем файл в многострочный редактор (компонент Memo ).

Запишите в обработчике следующий код:

procedure TForm1.ButtonOpenClick(Sender: TObject); begin // Вызываем диалог открытия OpenDialog1.Execute; end ;

Листинг 1

Метод Execute служит для вызова стандартного диалога Windows у всех компонентов (для каждого компонента свой диалог), находящихся на вкладке Dialogs .

Обратите внимание на текст, находящийся после знаков «// », он по умолчанию в Delphi выделен синим цветом. Это комментарии - второй по значимости текст после кода программы. Чтобы не запутаться в написанной программе, необходимо комментировать практически каждую написанную вами строку!

4. Запустите приложение и убедитесь, что при выборе пункта «Открыть » появляется одноимённое диалоговое окно. Однако какой бы файл вы не выбрали, ничего не произойдёт. Это вполне логично - ведь в обработчике нигде не сказано, что нужно делать с выбранным файлом. Закройте приложение.

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

Procedure TForm1.ButtonOpenClick(Sender: TObject); begin // Вызываем диалог открытия OpenDialog1.Execute; // Загружаем содержимое файла в компонент MemoOut MemoOut.Lines.LoadFromFile (OpenDialog1.FileName); end;

Листинг 3

Что это означает? После того как пользователь выбирает файл и нажимает кнопку «Открыть », путь и имя файла помещаются в свойство Filename компонента OpenDialog. Потом содержимое этого файла загружается в многострочный редактор. Для этого используется метод LoadFromFile класса TStrings. Для доступа к этому классу используется свойство компонента Lines .

6. Запустите приложение и откройте любой файл (для примера, в папке «Обеспечение » есть текстовый файл «Demo.txt »). Его содержимое появится в поле компонента Memo, и вы сможете его редактировать.

Закройте приложение и снова запустите. Опять выберите пункт «Открыть «, но в диалоговом окне нажмите кнопку «Отмена «. В результате появится сообщение об ошибке (рисунок 2).


Рисунок 2

Здесь сказано: «Проект Editor.exe вызвал исключение класса EFOpenError с сообщением ‘Не могу открыть файл ‘. Процесс остановлен. Используйте команды Step или Run для продолжения».

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

Нажмите «ОК «. При этом вы увидите текст программы (рисунок 3). Цветом будет выделено то место, в котором программа остановилась. Вы можете нажать F9 , чтобы продолжить программу с этого места (при этом вы увидите сообщение об ошибке ещё раз) или Ctrl+F2 (пункт меню Run ? Program Reset ), чтобы завершить программу.



Рисунок 3

7. Исправим ошибку. Всё дело в том, что вы не выбрали никакого файла, в результате свойство FileName осталось пустым, и метод LoadFromFile не смог открыть файл с пустым именем. Таким образом, необходимо вставить проверку, чтобы файл загружался только в том случае, если нажата клавиша «Открыть » (и действительно: зачем что-то загружать, если пользователь нажал «Отмена «).

Сделать такую проверку очень легко. Метод Execute возвращает логическое значение True (истина), если была нажата кнопка «Открыть «, и False (ложь), если была отмена. Остаётся только проверить это значение с помощью оператора условного перехода:

Procedure TForm1.Button2Click(Sender: TObject); begin // Вызываем диалог открытия и проверяем условие нажатия на кнопку «ОK» If OpenDialog1.Execute then //Загружаем содержимое файла в компонент MemoOut Memo1.Lines.LoadFromFile(OpenDialog1.FileName); end;

Листинг 4

Обратите внимание, что в условии написано OpenDialog1.Execute , вместо OpenDialog1.Execute=True . Эти две записи полностью идентичны, но первая более простая и рекомендуется использовать именно её.

8. Запустите приложение и убедитесь, что теперь всё работает корректно.

Заметьте, что при вызове диалога открытия появляется список всех файлов, которые есть в выбранном каталоге. Но нам не нужен весь список. В приложениях типа Word, Photoshop и многих других в нижней части диалога открытия файлов есть выпадающий список «Тип файлов » (рисунок 4а). С его помощью можно выбрать только те типы файлов, которые будут отображаться в окне.

9. Для того чтобы пользователь мог редактировать фильтр диалога открытия файлов, у компонента OpenDialog есть свойство Filter . Откройте редактор фильтра, нажав на кнопку с тремя точками (рисунок 4б). В левой его части, построчно, записываются имена фильтров, которые будут отображаться в поле «Тип файлов », а в правой непосредственно сам фильтр (правила задания фильтрации стандартные для Windows)

а)
б)
Рисунок 4. Фильтр выбора файлов

10. Заполните три строки фильтрами, как показано на рисунке 4б. При выборе первого поля диалог открытия файлов отобразит только текстовые файлы с расширением txt . Второе поле отображает файлы с расширением pas , и третье отобразит все файлы.

2. Форматируем текст

1. И, наконец, оживим инструменты форматирования текста (кнопка «Шрифт » и переключатель «Жирный »).



Рисунок 5. Диалог выбора параметров шрифта

При нажатии на кнопку «Шрифт » должны происходить следующие действия:

  • все параметры шрифта (название, размер, цвет, стиль и пр.) компонента MemoOut передаются компоненту FontDialog. При этом в стандартном диаловом окне Windows Шрифт автоматически выставляются требуемые параметры;
  • открывается стандартный диалог шрифта (рисунок 5);
  • проверка, что пользователь нажал на кнопку «ОK », чтобы программе не прогонять оставшиеся два пункта вхолостую;
  • передача компоненту MemoOut параметров шрифта из компонента FontDialog;
  • изменение, если необходимо, состояния переключателя CheckBold .

Создайте обработчик события OnClick для кнопки «Шрифт » и запишите в нём следующий код:

Procedure TForm1.ButtonFontClick(Sender: TObject); begin // Передаём компоненту FontDialog параметры шрифта из компонента Memo FontDialog1.Font:= MemoOut.Font; // Открываем диалог шрифта If FontDialog1.Execute then begin // Передаём компоненту Memo параметры шрифта из компонента FontDialog MemoOut.Font:= FontDialog1.Font; // Изменяем, если необходимо, состояния переключателя CheckBold.Checked:= fsbold in FontDialog1.Font.Style; end; end;

Листинг 5

Поясним код:

Замечательной особенностью объектно-ориентированного программирования является возможность присвоения одинаковых значений одного компонента другому, если они принадлежат одному классу. Например, свойство Font (размер шрифта, цвет и пр.) класса TFont присутствует в объектах Memo и FontDialog , поэтому достаточно написать: FontDialog1.Font:=MemoOut.Font , чтобы передать все параметры свойства Font от объекта Memo объекту FontDialog .

Отметим особенность установки состояния переключателя «жирный »: fsbold in FontDialog1.Font.Style . Дело в том, что свойство Style у класса Font имеет тип множество. И данная конструкция означает проверку: входит ли значение fsbold в множество значений Style , и если входит, то возвращает значение True , иначе False.

2. Теперь запустите приложение и порадуйтесь, как легко изменять параметры шрифта с помощью стандартного диалога, специально для этого предназначенного.

3. Переключатель CheckBox с именем CheckBold на панели Panel предназначен для более быстрой установки жирного шрифта. Создайте обработчик события OnClick для переключателя и запишите в нём следующий код:

Procedure TForm1.CheckBoldClick(Sender: TObject); begin // Проверка состояния переключателя CheckBold // Если включен, то текст в MemoOut делаем жирным If CheckBold.Checked then MemoOut.Font.Style:= MemoOut.Font.Style + // Если выключен, то текст в MemoOut делаем светлым else MemoOut.Font.Style:= MemoOut.Font.Style - end;

Листинг 6

Изменение стиля шрифта через компоненты CheckBox осуществляется через всё то же свойство Font.Style . Синтаксис записи соответствует работе с множествами.

4. Теперь в последний раз запустите приложение. Всё работает? Отлично!

3. Коротко о главном

  • Для открытия диалога всех компонентов, расположенных в категории Dialogs палитры компонентов, служит метод Execute .
  • Метод Execute возвращает значение логического типа, определяющее результат работы с диалоговым окном.
  • Стиль шрифта (Style ) задаётся через множество.
  • В случае появления сообщения об ошибке, клавишей F9 можно продолжить работу приложения.
  • В диалоге открытия файлов можно задавать любое количество фильтров для типов файлов, по правилам Windows.

Выполнение заданий

Особенности задания

  • Для полей ввода Edit необходимо ввести поясняющие надписи с помощью компонента Label.
  • Компоненты должны иметь осмысленные имена.
  • Кнопка выхода из приложения - обязательна!

1. Вычисление явно заданной функции. Сделать программу,и консольный вариант программы, вычисления значения функции. Реализовать проверку области определения данной функции. Использовать компоненты Label, Edit, Button, BitBtn, LabeledEdit. Нарисовать значок в (ImageEditor) и использовать его в программе. Подобрать соответствующие изображения указателя (Cursor). Сделать возможным изменение прозрачности формы (AlphaBlend). Изменить тип границы формы, параметры шрифта, цвета элементов управления. Использовать подсказки (Hint). Использовать ShowMessage для сообщения об ошибках.

2. Определение принадлежности точки замкнутой области.

Задание: Написать программу определения находится ли заданной точка в данной области.

Использовать компоненты: Image, MainMenu, PopupMenu, Checkbox, RadioButton и ActionList.

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

3. Вычисление значений конечной суммы ряда.

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

Использовать компоненты: Shape, Bevel, Splitter.

Использовать формы в модальном режиме и в обычном. Использовать шаблоны форм, поместить их в хранилище объектов.

4. Обработка одномерных массивов.

Написать программу обращения с вектором данных.

Задание: Делением числовых данных данного вектора на сумму наибольшего и наименьшего. получить новый вектор чисел.

Использовать компоненты: Memo, ListBox.

5. Обработка двумерных массивов(матрицы).

Использовать: PageControl, StringGrid, Закладки, блок try...except.

Задание: Упорядочить строки, данной матрицы чисел, по убыванию элементов, стоящих в определенном столбце.

6. Обработка строк.

Работа с данными строкового типа.

Использовать компоненты: ImageList, RichEdit, ToolВаr.

Задание: Получить новую строку, поменяв первое и последнее "слова". Использовать функции или процедуры, а так же модули.

7. Нарисовать график заданной функции.

Использовать: OnResize, ClientHeight, ClientWidth, OLEContainer, TEdit, Chart.

8. Создание анимированного изображения.

Требования к программе: Два двигающихся с разной скоростью обьекта. Один как процедура, отрисовав отдельные дуги, линии с помощью метода базовой точки. Второй нарисованный в ImageEditor, изменяя свойства Left и Top поместить в компонент Image. Использовать Timer. Реализовать остановку и изменение направления движения.

Задание: Объекты "Катер" и "Яхта".

9. Работа с типизированными файлами.

Использовать компоненты: OpenDialog, SaveDialog. Создать соответствующие фильтры для этих компонентов.

Задание: Дан файл вещественных чисел. Найти среднее арифметическое его компонент и удалить все компоненты, превышающие среднее значение.

10. Работа с локальной базой данных.

Использовать: Paradox для БД, механизм доступа к данным BDE, DataSource, Table, DataModule, DBGrid, DBNavigator, DBEdit, DBText, Query и DBChart. Реализовать программное изменение текста SQL-запроса.

Задание: Создать БД "Школа", с информацией: фамилия, класс, год рождения учащегося, адрес, телефон. Определить, у скольких учеников есть телефон. Составить списоки учеников заданного класса.

Цели занятия.

Образовательные: изучить современную технологию создания приложения путем применения компонентов среды Delphi; изучить технологию ADO, обеспечивающую соединение с базой данных Microsoft Access; научить проектировать приложение и обеспечить доступ к БД MS Access “Детская поликлиника”.

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

Воспитательные: способствовать формированию таких качеств личности, как ответственное отношение к порученному делу; внимательность, способность к самовыражению.

ПО: Microsoft Access, Borland Delphi7, готовая рабочая база данных “Детская поликлиника”.

Задание

Задание: Создать проект в Borland Delphi 7 и обеспечить доступ к ранее созданной БД Microsoft Access “Детская поликлиника”, используя компоненты среды Delphi, получить информацию из базы данных и представить ее в форме таблицы.

В Microsoft Access создана база данных “Детская поликлиника” и наполнена информацией (приложение).

Информационная система “Детская поликлиника” хранит информацию о врачах, пациентах, заболеваниях, детских учреждениях и предоставляет следующие данные:

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

Среда разработки проекта в Delphi

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

Работа над новым проектом,

Форма (Form) – основа разработки в нее помещают необходимые компоненты, создают интерфейс программы. Свойства формы определяют ее внешний вид: размер, положение на экране, текст заголовка, др.

Для просмотра и изменения значений свойств формы и ее компонентов используется окно Object Inspector (Инспектор Объектов). В верхней части окна Object Inspector указано имя объекта, значения свойств которого отображается в данный момент. В левой колонке вкладки Properties (Свойства) перечислены свойства объекта, а в правой – указаны их значения (рис.1). Инспектор Объектов является дизайнером формы.

Исходный текст модуля разработки содержится в Окне редактора и имеет первоначальный заголовок Unit1.pas (рис.1). Проводник кода отображает объекты модуля формы (*pas) , что позволяет быстро обращаться к объектам и создавать новые классы.

Рис. 1. Основные элементы среды разработки в Delphi

Файл модуля формы Unit1.pas (рис.1) содержит описание класса формы (размещение, поведение компонентов и функционирование обработчиков событий) и создается автоматически.

Любой проект имеет не менее шести файлов (табл.1).

Таблица 1

Основные файлы проекта

Назначение

Главный файл проекта (код проекта) – PROGECT.DPR Основной, представляет собой программу на языке Pascal.
Первый модуль программы (модуль формы) UNIT.PAS Автоматически появляется вначале работы его можно назвать любым другим именем. Содержит текст программы на языке Pascal.
Файл главной формы (описания формы) – UNIT.DFM Используется для сохранения информации о внешнем виде главной формы.
Файл описание ресурсов – PROGECT.RES Содержит иконку для проекта, создается автоматически.
Файл параметры проекта – PROGECT.OPT Текстовый файл для сохранения установок, связанных с данным проектом.
Модули - *.PAS Дополнительные Модули. Содержат текст программы на языке Pascal.

Разработка приложения состоит из двух этапов:

1. Создание интерфейса приложения.

2. Определение функциональности приложения.

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

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

Установить измененные параметры проекта необходимо с помощью команды меню Project/Построить Project . Если требуется объединить несколько форм под единое начало – выполнить команду Project/Options.

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

Готовый к выполнению файл (*exe),

Динамически загружаемая библиотека (*DLL).

Запускать проект можно из среды Delphi командой Run/Run (Выполнить), из среды Windows (Название приложения .exe).

Создание приложения для работ с БД Access

Работа над новым проектом, так в Delphi называется разрабатываемое приложение, начинается с создания стартовой формы.

Создание закладок в конструкторе форм.

1. В Инспекторе Объектов изменить параметры некоторых свойств: Align -> alClient, color->clMoneyGreen, caption->Детская поликлиника, font, name->Form (рис.1).

2. Создать закладки в конструкторе форм при помощи компонента PageControl на вкладке Win32 (таб.2) (Win32->PageControl).

3. В окне Дерево Объектов создать Страницу (Контекстное меню->Новая страница). В Инспекторе Объектов изменить параметры названия (Сaption->Больной) (рис.2).

Рис. 2. Создание закладок в конструкторе форм

4. Аналогичным способом создать закладки, названия которых соответствуют названию таблиц в схеме данных БД MS Access (рис.7).

5. Поместить на форму компонент ADOConnection (вкладка ADO> ADOConnection) и выполнить его настройку (табл.2; рис.3).

      Таблица 2

      Значения свойств компонента ADOConnection

    Свойство Примечание
    PageControl Набор панелей с закладками. Каждая панель может содержать свой набор интерфейсных элементов и набирается щелчком по связанной с ней закладке.
    Вкладка Win32 Содержит интерфейсные элементы для 32 разрядных операционных систем Windows 2000.
    LoginPromt False
    ConnectionString Сделать щелчок на кнопке с тремя точками (находится в поле значения свойств). Сделать щелчок на кнопке Build.

    На вкладке поставщик данных выбрать Microsoft Jet 4.0 OLEDB Provider.

    На вкладке Подключение указать файл базы данных “Детская поликлиника”.

    Дополнительно указать Права доступа: ReadWtite.

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

Рис.3. Настройка ADOConnection в параметрах Инспектора Объектов

6. Поместить на форму компонент ADOTable(ADODB) (Вкладка ADO->ADOTable) и выполнить его настройку (табл.3; рис.3).

    Таблица 3

    Значения свойств компонента ADOTable(ADODB)

    Свойство Значение Примечание
    Connection Имя компонента ADOConnection, обеспечи-вающего соединение с БД
    TableName Команда, обеспечивающая получение информации из определенной таблицы БД Раскрыть список, находящийся в поле значения свойства, и выбрать название нужной таблицы
    Active True
    Технология ADO Это синхронное/асинхронное выполнение операций с хранилищем данных. При помощи свойства connectoptions можно задать режим соединения с хранилищем данных
    TADODataSet TADOCoommand Общие компоненты для работы с технологией ADO, позволяют выполнять команды на языке провайдера данных.
    DataSource Object Хранилище данных.

7. Поместить на форму компонент DataSource (вкладка Data Access -> DataSource) и выполнить его настройку (табл. 4; рис.3)

    Таблица 4

    Значения свойств компонента DataSource

8. Поместить на форму компонент DBGrid (вкладка Data Controls->DBGrid) и выполнить его настройку (табл.5; рис.3)

    Таблица 5

    Значения свойств компонента DBGrid, Edit, Button

Свойство Значение Примечание
DataSource Имя компонен-та DataSource Раскрыть список, находящийся в поле значения свойства, и выбрать имя компонента
Align alClient
DBGrid Компонент предназначен для визуализации данных, их ввода и редактирования.
Edit Строка ввода. Предназначена для ввода, отображения или редактирования одной текстовой строки.
Button Командная кнопка. Обработчик события OnClick этого компонента обычно используется для реализации некоторой команды.

9. Аналогично создать другие графы таблицы (проекта “Детская поликлиника”). На рисунке 4 представлен результат правильно выполненных действий задания.

10. В графе “Зафиксированные инфек.заболевания” выполним запрос по датам обследования.

Для этого добавить компонент ADOQuery(ADODB). Значения данного компонента соответствуют значениям свойств компонента ADOTable(ADODB). В параметрах Инспектора Объектов введем SQL – команду:

ADOQuery1.Clear:= True;

ADOQuery1.Add("SELECT DU.DU, DU_Adres.DU, DU.Inf_Zab, DU.Data_obs");

ADOQuery1.Add("FROM DU");

ADOQuery1.Add("WHERE ((DU.Data_Obs) BETWEEN (DateValue(""" + Edit1.Text + """)) AND (DateValue(""" + Edit2.Text + """)));");

ADOQuery1.Active:= True;

11. Поместить на форму компонент Edit1 и Edit2. В параметрах этих компонентов укажем дату по умолчанию: Edit1->Text->01.01.2009; Edit2->Text->31.12.2009.

12. Поместить на форму компонент Button (рис.5).

13. Создать процедуру обработки события Click, обеспечивающую выполнение SQL – команды.Процедура обработки события Click на кнопке “Обновить запрос” (Button1):

procedure TF.OtClick(Sender: TObject);

      sqlfile: TextFile;

      ADOQuery1.SQL.Clear;

      ADOQuery1.SQL.Add("SELECT DU.DU, DU.Adres_DU, DU.Inf_Zab, DU.Data_obs");

      ADOQuery1.SQL.Add("FROM DU");

      ADOQuery1.SQL.Add("WHERE ((DU.Data_Obs) BETWEEN (DateValue(""" + Edit1.Text +""")) AND (DateValue(""" + Edit2.Text + """)));");

      ADOQuery1.Active:= True;

      AssignFile(sqlfile,"sql_instructions.txt");

      Rewrite(sqlfile);

      for i:= 0 to ADOQuery1.SQL.Count-1 do Writeln(sqlfile, ADOQuery1.SQL.Strings[i]);

      CloseFile(sqlfile);

      Рис.5. Окно конструктора формы. Закладка “Зафиксированные инфекционные заболевания

    1. 14. Последний этап. Создание исполняемый файл – приложение Project1.exe при помощи процесса компиляции (Project/Compile). Компилятор генерирует исполняемую программу как консольное приложение. Пример работы программы, т.е. вид окна программы после выполнения представлен на рис.6.

Рис.6. Исполняемый файл – приложение Project1.exe

Готовый проект - приложение в Delphi представлен в приложении .

Литература

  1. Дарахвелидзе П.Г., Марков Е.П. Программирование в Delphi 7. - СПб: БХВ – Петербург, 2003.
  2. Культин Н.Б. Программирование в Turbo Pascal 7.0 и Delphi 7. – СПб: БХВ – Петербург, 2007.
  3. Петров А. и др. Вычислительная техника и программирование. Высшая школа, 2008.
  4. Internet: www.PowerBuilder.sbn