Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Работа с базами данных

Использование в приложениях системного буфера, DDE и OLE

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

1. В приведенном приложении копируйте метафайл из второй дочерней формы на первую.

2. Напишите редактор текстов с использованием MDI-технологии.

3. Какие недостатки вы видите в MDI – технологии, в каких проектах удобно использование этой технологии?

4. Создайте приложение для просмотра содержимого различных файлов с использованием MDI-технологии

5. Что произойдет с меню основной формы при открытии дочерней формы со своим меню?

 

Сделать приложения многозадачными, обеспечить возможность обмена данными между ними – значит усилить их гибкость и ценность. В среде Windows существует три основных метода разделения данных – буфер обмена (Clipboard), средства динамического обмена данными (DDE) и технология связывания и внедрения объектов.

Ниже перечислены компоненты Delphi для создания приложений, использующих Clipboard, DDE и OLE.

· DdeClientConv. Приложение, имеющее статус DDE – клиента, использует этот компонент для установления сеанса с сервером(conversation). Каждое приложение-клиент должно содержать хотя бы один подобный объект.

· DdeClientItem. В дополнение к объекту DdeClientConv приложение DDE – клиент использует один или более DdeClientItem в качестве контейнеров, в которые помещаются получаемые от DDE – сервера данные.

· DdeServerConv. Приложение DDE- сервер может использовать этот компонент для организации DDE –сеанса.

· DdeServerItem. Приложение DDE-сервер использует один или более подобных объектов для отправки данных клиенту.

· OleContainer.Этот объект используется для создания контейнерного приложения OLE.

Рассмотрим основные методы, свойства класса Clipboard. Компоненты Delphi Edit, MaskEdit, Memo, TDBEdit, TDBImage, TDBMemo и другие обеспечивают выполнение команд обмена данными через Clipboard. Для передачи объектов достаточно вызвать один из методов CutToClipboard (вырезать в буфер обмена), CopyToClipboard (копировать в буфер обмена), PasteToClipBoard (вставить в буфер обмена).

Пример. Пусть требуется копировать данные из Memo1 в Memo2 используя Clipboard. Установим на форме компоненты Memo1, Memo2, три кнопки. В разделе uses добавим к закладкам модуль Clipbrd.

Присвоим заголовок форме и произведем подписи кнопок (см. рис.82).

Рис.82. Рис.83.

Приведем теперь код модуля Unit1.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Clipbrd;

type

TForm1 = class(TForm)

Memo1: TMemo;

Memo2: TMemo;

Button1: TButton;

Button2: TButton;

Button3: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

begin

{процедура копирования из Memo1 в Clipboard}

memo1.copyToClipboard;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

{процедура вырезки из Memo1 в Clipboard}

memo1.CutToClipboard;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

{процедура вставки из Clipboard в Memo1}

memo2.PasteFromClipboard;

end;

end.

Приведем кадр работы приложения (см. рис.83).

Свойства класса TClipboard. Этот класс предоставляет следующие свойства.

· AsText. Это свойство имеет строковый тип и предназначен для копирования и выборки текста из буфера обмена. Для копирования строки текста в буфер обмена следует присвоить значение типа строки символов языка Pascal. Так как строка языка Object Pascal может иметь неограниченную длину, то это свойство устарело.

· FormatCount. Это свойство целого типа содержит значение, равное числу элементов в описываемом ниже массиве Formats.

· Formats. Это массив значений типа Word, представляющий допустимые для помещения в Clipboard типы или форматы данных.

Константы для допустимых форматов данных Clipboard, определенные в модуле Windows.pas.

Таблица 2.21.

Константа Значение Константа Значение
CF_TEXT   CF_PALETTE  
CF_BITMAP   CF_PENDATA  
CF_METAFILEPICT   CF_RIFF  
CF_SYLK   CF_WAVE  
CF_DIF   CF_UNICODETEXT  
CF_TIFF   CF_ENUMETAFILE  
CF_OEMTEXT   CF_HDROP  
CF_DIB  

 

Кроме перечисленных выше форматов, модуль Clipbrd поддерживает работу с двумя форматами данных, а, именно, cf_Picture и cf_Component. В любой работающей с буфером обмена программе можно использовать операторы:

cf_Picture:=RegisterClipBoardFormat(‘Картина Delphi’);

cf_Component:= RegisterClipBoardFormat(‘Компонент Delphi’);

Переменные cf_Picture и cf_Component можно использовать совместно с функцией HasFormat объекта Clipboard для определения формата информации в буфере обмена. Например, if Clipboard.HasFormat(cf_Bitmap) then …

Приведем основные методы класса Clipboard.

· Assign. Позволяет копировать информацию в буфер обмена из графических объектов класса Tgraphics, Tbitmap, Tpicture, Tmetafile.

· Clear. Удаляет любые данные из буфера обмена.

· Close. Закрывает буфер обмена после выдачи ему команды Open.

· GetAsHandle. Возвращает дескриптор Windows для данных в буфере обмена. Эту функцию следует использовать при вызове функций Windows API, требующих указания дескриптора.

· GetComponent. Возвращает выбранный из буфера обмена объект компонентов Delphi.

· GetTextBuf. Возвращает выбранный из буфера обмена текст.

· HasFormat. Возвращает значение true, если данные в буфере обмена имеют формат, определяемый значением переданного этой функции аргумента типа Word/

· Open. Открывать буфер обмена с помощью этой функции нужно только в том случае, если для доступа к нему будут использоваться функции Windows API.

· Setcomponent. Помещает в буфер обмена объект компонента Delphi.

· SetTextBuf. Помещает в буфер обмена текстовые данные, завершаемые нулевым байтом.

Рассмотрим пример обмена графикой через буфер обмена. Установим на форме следующие объекты: Image1 c рисунком, Image2, три кнопки с надписями «Копирование изображения в буфер», «Вставка рисунка из буфера», «Очистка буфера обмена».

После запуска приложения при нажатии на кнопку копирования рисунок из Image1 копируется в буфер обмена, при нажатии на кнопку вставки рисунок вставляется в Image2 и размер подбирается автоматически в зависимости от размера рисунка, так как свойству autosize элемента Image2 присвоено значение true. Ниже приводится код модуля.

Рис.84. Рис.85.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, ExtCtrls, clipBrd, StdCtrls;

type

TForm1 = class(TForm)

Image1: TImage;

Image2: TImage;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

SpeedButton3: TSpeedButton;

procedure SpeedButton1Click(Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

procedure SpeedButton3Click(Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.SpeedButton1Click(Sender: TObject);

begin

Clipboard.Assign(Image1.Picture);

{Копирование рисунка в буфер обмена}

end;

procedure TForm1.SpeedButton2Click(Sender: TObject);

begin

if clipboard.HasFormat(cf_Picture) then

image2.AutoSize:=true;

{Вставка рисунка из буфера обмена в Image2}

Image2.Picture.Assign(clipboard);

end;

procedure TForm1.SpeedButton3Click(Sender: TObject);

begin

Clipboard.Clear;{Очистка буфера обмена}

end;

end.

Кадр выполнения приложения (см. рис.85).

DDE – динамический обмен данными. Буфер обмена Windows напоминает примитивную доску объявлений. Существующий в Windows протокол DDE (Dynamic Data Exchange) напоминает современные электронные доски и узлы Web, доступ к которым осуществляется путем установки модемных соединений.

 

Delphi позволяет создать программы для обработки любых типов баз данных форматов Dbase, Paradox и системы ODBC, применяемой в Microsoft Access. Для работы с базами данных в Delphi реализованы следующие компоненты, размещенные в палитрах Data Access, Data Controls.

· BatchMove. Выполняет пакетные операции с записями и таблицами(дублирование набора данных, добавление записей, удаление записей и т.д.).

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

· DataSourse. Связывает компоненты набора данных Table или Query с компонентами связи данными, такими как DBEdit, DBMemo.

· DBChart. Компонент для создания диаграмм на основе информации из базы данных.

· DBCheckbox. Связанный с данными компонент CheckBox.

· DBComboBox. Связанный с данными компонент Combobox.

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

· DbEdit. Связанный с данными компонент ввода однострочного текста Edit.

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

· DBImage. Связанный с данными графический компонент Image.

· DBListBox. Связанный с данными компонент ListBox.

· DBLookupComboBox. Связанный с данными компонент ComboBox с возможностью поиска таблицы.

· DBLookupListBox. Связанный с данными компонент ListBox с возможностью поиска таблицы.

· DBMemo. Связанный с данными компонент Memo с возможностью ввода многострочного текста.

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

· DBRadioGroup. Связанный с данными компонент RadioGroup.

· DBRichEdit. Связанный с данными RichEdit, позволяет редактировать текстовые данные в формате RTF.

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

· Query. Формирует SQL- запросы к Borland Database Engine или к серверу SQL.

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

· StoredProc. Позволяет приложению выполнять хранимые процедуры на сервере базы данных.

· Table. Предоставляет приложению возможность доступа к базам данных посредством Borland Database Engine.

· UpdateSQL. Этот компонент предназначен для разработок, в которых требуется обновить наборы данных, предназначенных только для чтения, которые формирует SQL- сервер.

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

1. Выберите пункт меню File ÞNew, чтобы открыть новое приложение. Выберите вкладку Business и дважды щелкните на пиктограмме Database Wizard (см. рис.86).

2. Мастер форм БД последовательно откроет несколько диалоговых окон с опциями для создания разнообразных форм. В первом окне выберите опции Create a simple form и Create a form using TTable objects.Эти установки, заданные по умолчанию (см. рис.87).

3. Для перехода к следующему окну щелкните на кнопке Next, чтобы вернуться назад при необходимости, щелкните на кнопке Back.

4. Выберите таблицу в комбинированном списке с пометкой Drive or Alias Name. Выберите псевдоним базы данных из имеющихся в системе. Выберите файл базы данных, щелкните на кнопке Next (см. рис.88).

Рис.86. Рис.87.

5. Мастер выдаст список полей выбранной таблицы. Для переноса всех полей в список выбранных щелкните на кнопке с двойной стрелкой, а для переноса отдельных полей перетащите их с помощью мыши (см. рис.89).

Рис.88. Рис.89.

 

6. Для определения порядка размещения полей выберите опции Horizontal или Vertical. При выборе опции Horizontal поля записей будут располагаться друг за другом, а при выборе опции Vertical – одно под другим. При выборе опции In a grid данные упорядочатся в виде таблицы, в строках которой будут записи, а в столбцах – поля (см. рис.90).

7. В последнем окне мастер форм БД предлагает создать либо экранную форму, либо и форму Form и модуль данных DataModule с невизуальными компонентами. После выбора опции щелкните на кнопке Finish (см. ри.91).

Рис.90. Рис.91.

При запуске приложения мы имеем следующую картину (см. рис.92).

Рис.92.

При работе с базами данных необходимо усвоить смысл следующих взаимосвязанных терминов, которые используются в программировании баз данных и в работе с Borland Database Engine.

· Таблица (Table). Это отдельный файл данных, который состоит из строк(записей) и столбцов(полей). Одно из полей должно содержать первичный ключ, по которому индексируется информация в файле. Таблица может индексироваться по вторичным ключам. Таблицу иногда называют набором данных (dataset).

· Запрос (Query). Как и таблица, запрос представляет набор данных SQL в формате с полосой прокрутки и навигатором. Запрос упрощает задачу доступа к базе данных, особенно если данные поступает с SQL-сервера.

· База данных (Database). Это одна или несколько таблиц. Если одна таблица связана с другой по значению ключа в определенном поле, то такая конструкция называется реляционной базой данных.

· Псевдоним (Alias). Это имя, зарегистрированное в Borland Database Engine, под которым скрывается название жесткого диска и путь к файлам базы данных. Для обращения к базам данных принято использовать псевдонимы, а не физическое имя и путь к файлу. Если использовать псевдонимы, то файлы баз данных можно перенести в другой каталог или на другой сетевой диск, а все приложения, использующие эти файлы, будут работать без ошибок.

Database Desktop. Для создания новых таблиц баз данных, изменений полей в существующих базах данных, анализа баз данных SQL в комплекте Delphi имеется приложение Database Desktop.

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

1. С помощью проводника Windows свой каталог для хранения вашей базы данных, например, C:\Database\ Mydb.

2. Запустите Database Desktop при помощи проводника Windows или из среды Delphi, выполнив команду меню ToolsÞDatabase Desktop. После появления окна Database Desktop, выполните команду ToolsÞAlias Manager.

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

4. Убедитесь, что в списке Driver Type выбран тип STANDARD(по умолчанию). При минимальной инсталляции Delphi доступен только тип STANDARD. При создании базы данных класса клиент/сервер можно выбрать тип INTRBASE.

5. Щелкните на кнопке Browse и откройте список Drive or Alias. Выберите диск С:\ или имя диска, на котором находится каталог Database. Затем дважды щелкните на каталоге Database и следующем за ним Mydb. В поле Directories появится надпись C:\Database\Mydb.

6. Щелкните на кнопке OК, чтобы закрыть окно Directories Browser. На вопрос, сохранить ли псевдонимы Public Aliases в файле IDAPI32.CFG, ответьте Yes.

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

1. Запустите Database desktop.

2. Выполнив команду FileÞNew, выберите пункт подменю Table. Из списка доступных форматов баз данных выберите Paradox 7.

Рис.93.

3. Теперь открывается экран для вставки и редактирования полей.

Введите имена полей, тип и длину текстовых полей.

4. Щелкните на кнопке Save As. Введите строку My_db в поле Filename, а затем выберите псевдоним, который будет относиться к новой базе данных. Выберите псевдоним Mydb, который вы и определили ранее.

Приведем схему взаимодействия объектов работы с базой данных (см. рис.94).

Рис.94.

Объект Table служит мостом между приложениями и базой данных, определяемым псевдонимом. Объект Datasource соединяет Table с элементами управления связью с данными, такими как Dbedit и DBNavigator.

Взаимодействие объектов Table и DataSource определяется программой Borland Database Engine, которая берет на себя операции чтения и записи данных в нужном формате. Элементы управления связью с данными добавляются для создания экранных форм ввода данных.

Теперь вы можете создать приложение для обработки базы данных. Это можно выполнить с использованием мастера форм БД или же, вставив, на пустую оконную форму объекты необходимых компонентов.

1. Вставьте в форму объекты компонентов Table и DataSource из вкладки палитры DataAccess.

2. Выберите на форме объект Table1 и на вкладке окна свойств(Properties) щелкните на стрелке вниз, расположенной возле свойства DatabaseName. В раскрывшемся списке зарегестрированных псевдонимов и имен баз данных выберите имя Mydb или любое другое.

3. База данных может состоять из нескольких таблиц, поэтому задайте имя таблицы возле свойства TableName. У всех объектов Table должны быть определены свойства DatabaseName и TableName.

4. Затем выберите объект Datasource1. Подключите его к таблице с помощью раскрывающегося списка, располо-женного напротив свойства DataSet.

5. DBNavigator – это компонент, который используется почти всегда. Выберите его на вкладке палитры DataControls. Задайте для свойства DataSource объекта DBNavigator1 значение DataSource1.

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

7. Выберите объект Table1 и дважды щелкните на свойстве Active, чтобы присвоить ему значение True.

Рис.95.

В нашем случае для ввода и просмотра значения поля ADRESS вставлено объект Memo1, связанный с объектом DataSource1.

Для работы с базой данных в Delphi можно использовать язык структурированных запросов SQL(Structured Query Language).

SQL- это стандартизированный язык для получения доступа к данным и выполнения операций с ними, разработанный в Американском национальном институте стандартов(ANSI- The American National Standards Institute) в 1986 году.

Borland Database Engine поддерживает подмножество стандарта SQL для баз данных форматов Paradox, dBase, Oracle и ряда других. К таблицам БД можно применять команды SQL SELECT, INSERT, UPDATE и DELETE для выполнения выборки, вставки, обновления и удаления соответственно. Наличие SQL сервера обеспечивает дополнительные команды, ознакомиться с которыми можно в специальной документации.

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

1. Изучите самостоятельно разработку диаграмм и отчетов.

2. Разработайте приложение с одной таблицей базы данных, содержащей ФИО, год рождения, дата поступления в ВУЗ, адрес. С помощью мастера форм БД создайте окно просмотра и редактирования.

3. Разработайте приложение с двумя таблицами базы данных. Первая таблица содержит ФИО, год рождения, дата поступления в ВУЗ, адрес, а вторая таблица – ФИО отца и ФИО матери. Создайте форму для редактирования и просмотра, поиска сведений о родителях студента.

4. Как создается псевдонимы баз данных?

5. Создайте приложение Клиент/ сервер для расчета зарплаты. Доступ к базе по пароли.

 


 

<== предыдущая лекция | следующая лекция ==>
Разработка многодокументных приложений | Требования к методам идентификации
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 611; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.