Стандартные компоненты Delphi 7
TMainMenu позволяет Вам поместить главное меню в программу. При помещении TMainMenu на форму это выглядит, как просто иконка. Иконки данного типа называют «невидимыми компонентом», поскольку они невидимы во время выполнения программы. Создание меню включает три шага: (1) помещение TMainMenu на форму, (2) вызов Дизайнера Меню через свойство Items в Инспекторе Объектов, (3) определение пунктов меню в Дизайнере Меню.
TPopupMenu позволяет создавать всплывающие меню. Этот тип меню появляется по щелчку правой кнопки мыши.
TLabel служит для отображения текста на экране. Вы можете изменить шрифт и цвет метки, если дважды щелкнете на свойство Font в Инспекторе Объектов. Вы увидите, что это легко сделать и во время выполнения программы, написав всего одну строчку кода.
TEdit - стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы.
TRadioButton позволяет выбрать только одну опцию из нескольких. Если Вы опять откроете диалог Options - Project и выберете страницу Linker Options, то Вы можете видеть, что секции Map file и Link buffer file состоят из наборов RadioButton.
TMemo- иная форма TEdit. Подразумевает работу с большими текстами. TMemo может переносить слова, сохранять в Clipboard фрагменты текста и восстанавливать их, и другие основные функции редактора. TMemo имеет ограничения на объем текста в 32Кб, это составляет 10-20 страниц. (Есть VBX и “родные” компоненты Delphi, где этот предел снят).
TButton позволяет выполнить какие-либо действия при нажатии кнопки во время выполнения программы. В Delphi все делается очень просто. Поместив TButton на форму, Вы по двойному щелчку можете создать заготовку обработчика события нажатия кнопки. Далее нужно заполнить заготовку кодом.
TCheckBox отображает строку текста с маленьким окошком рядом. В окошке можно поставить отметку, которая означает, что что-то выбрано. Например, если посмотреть окно диалога настроек компилятора (пункт меню Options - Project, страница Compiler), то можно увидеть, что оно состоит преимущественно из CheckBox’ов.
TListBox нужен для показа прокручиваемого списка. Классический пример ListBox’а в среде Windows - выбор файла из списка в пункте меню File - Open многих приложений. Названия файлов или директорий и находятся в ListBox’е.
TComboBox во многом напоминает ListBox, за исключением того, что позволяет водить информацию в маленьком поле ввода сверху ListBox. Есть несколько типов ComboBox, но наиболее популярен выпадающий вниз (drop-down combo box), который можно видеть внизу окна диалога выбора файла.
TPanel - управляющий элемент, похожий на TGroupBox, используется в декоративных целях. Чтобы использовать TPanel, просто поместите его на форму и затем положите другие компоненты на него. Теперь при перемещении TPanel будут передвигаться и эти компоненты. TPanel используется также для создания линейки инструментов и окна статуса.
TScrollbar - полоса прокрутки, появляется автоматически в объектах редактирования, ListBox’ах при необходимости прокрутки текста для просмотра.
TGroupBox используется для визуальных целей и для указания Windows, каков порядок перемещения по компонентам на форме (при нажатии клавиши TAB).
TScrollBox представляет место на форме, которое можно скроллировать в вертикальном и горизонтальном направлениях. Пока Вы в явном виде не отключите эту возможность, форма сама по себе действует так же. Однако, могут быть случаи, когда понадобится прокручивать только часть формы. В таких случаях используется TScrollBox.
TMainMenu используется для создания главного меню. На этапе конструирования главное меню создается при помощи встроенного конструктора меню (Menu Designer), которое вызывается двойным щелчком по этой компоненте. Каждый элемент меню представляет собой объект класса TMenuItem.
TPageControlотносится к группе многостраничных панелей, которые позволяют экономить пространство окна приложения, размещая на одном и том же месте страницы разного содержания. Во время проектирования работу со страницами проще всего производить, щелкнув на компоненте правой кнопкой мыши и выбрав из всплывающего меню соответствующий раздел: NewPage - создать новую страницу, NexPage или Previous Page - перейти к следующей предыдущей странице. Каждая создаваемая страница является объектом типа TtabSheet. Это панель, на которой можно размещать любые управляющие компоненты, окна редактирования и т.п.
TTable обеспечивает прямой доступ к каждой записи и полю в одной указанной таблицы базы данных. Компонент может также работать с подмножеством записей внутри таблицы базы данных. Во время проектирования можно создавать, удалять, модифицировать таблицу базы данных, связанную с Ttable.
TDataSource представляет собой источник данных, который обеспечивает связь между набором данных и компонентами отображения и редактирования данных. Все наборы данных должны быть связаны с компонентом источника данных, если требуется редактирование данных.
TDBGrid отображает в табличной форме записи набора данных и управляет ими: осуществляет перемещение по записям, их редактирование, удаление, вставку новых записей. Занесение в набор данных сделанных исправлений текущей записи происходит при перемещении пользователя на следующую запись.
Задание 5. Работа с Delphi 7
1. Запустите Delphi 7. Сохраните проект в созданной ранее папке Stroika с помощью пункта меню «File» «Save Project as».
2. Поместите на форму компоненту PageControl из закладки Win32 палитры компонентов.
3. Щелкните по PageControl1 правой кнопкой мыши, в появившемся списке нажмите на New Page. На этой закладке будет отображаться таблица Rabohie.db. Для свойства Caption в Object Inspector установите значение Рабочие.
4. Аналогичным образом создайте закладки для остальных таблиц, названия для которых можно выбрать соответственно таблицам, которые будут расположены на них.
Простейший способ создания приложения, имеющего доступ к таблице в Delphi: это Form Expert. Теперь рассмотрим, какие шаги необходимо предпринять для построения приложения на пустом месте. Простейшим способом обеспечения доступа и манипуляции данными является использование визуальных компонентов базы данных. Визуальные компоненты базы данных хранятся на двух страницах библиотек визуальных компонентов: Data Access и Data Control. Органы управления в странице Data Access используются для того, чтобы дать Delphi информацию о таблицах базы данных и функциях, которые должны быть использованы, тогда как страница Data Control содержит ряд визуальных компонентов, которые могут отображать информацию базы данных или обеспечивать интерфейс для манипуляций данными (таких, как вставка, удаление и модификация).
Чтобы использовать таблицу, нужно в качестве первого шага дать знать Delphi, как намереваются взаимодействовать с таблицей. Чтобы сделать это, нужно поместить на форму объект Table, которому доступны табличные данные. Проверка списка свойств показывает, что там есть свойство, называемое DataBaseName и TableName. Это два минимальных свойства, которые нужно установить для того, чтобы таблица была доступна Delphi. Свойство DataBaseName соответствует имеющимся в наличии псевдонимам базы данных. TableName описывает таблицы в базе данных, которые должны быть использованы.
Задание 6. Добавление компоненты Table.
1. Выберите на Form1 закладку Рабочие.
2. Поместите на этой закладке компонент Таblе, который располагается на закладке BDE палитры компонент.
3. В списке свойств (Object Inspector) установите DatabaseName как Stroika. Stroika - это псевдоним базы, в которой будет сохраняться таблица Rabohie.db.
4. После установки свойства DatabaseName свойство TableName должно показать окно списка с перечнем всех таблиц, имеющихся в наличии в базе данных. Выберите Rabohie.db как имя базы данных.
5. Установите значение свойства Active равным true. Это немедленно открывает таблицу при запуске приложения. Если установить значение false, приложение не будет иметь доступа ни к каким данным в таблице до тех пор, пока свойство не станет равным true во время исполнения.
Во время исполнения можно модифицировать два других свойства - Readonly и Exclusive. Установка значения свойства Readonly равным true позволяет приложению только просматривать данные в базе данных без возможности их модификации. Опция Exclusive разрешает доступ к данным только этому приложению. Теперь у приложения есть вся информация, которая необходима для подключения к таблице. Однако нет никакого способа манипуляции данными таблицы до тех пор, пока объект таблицы не будет связан с объектом DataSourse.
Delphi имеет возможность доступа к информации в базе данных, которая доставляется рядом компонентов, известных как наборы данных (DataSets), одним из которых является компонент TTable. Привязанные к данным компоненты (data-aware) - это органы управления, которые отображают и манипулируют теми данными, которые доступны Delphi. Чтобы обеспечить уровень абстракции для органов управления, которые могут перемещаться по данным и отображать информацию, был разработан TDataSource. TDataSource также позволяет узнать, изменялись ли данные, и определить, каково состояние набора или источника данных.
Класс TDataSource используется в качестве проводника между TTable или TQuery и компонентами, визуализирующими данные, типа TDBGrid, TDBEdit и TDBComboBox (data-aware components). В большинстве случаев, все, что нужно сделать с DataSource - это указать в свойстве DataSet соответствующий TTable или TQuery. Затем, у data-aware компонента в свойстве DataSource указывается TDataSource, который используется в настоящее время.
Класс TDataSource также имеет свойство Enabled, и оно может быть полезно всякий раз, когда Вы хотите временно отсоединить, например, DBGrid от таблицы или запроса. Эти требуется, например, если нужно программно пройти через все записи в таблице. Ведь, если таблица связана с визуальными компонентами (DBGrid, DBEdit и т.п.), то каждый раз, когда Вы вызываете метод TTable.Next, визуальные компоненты будут перерисовываться. Даже если само сканирование в таблице двух или трех тысяч записей не займет много времени, то может потребоваться значительно больше времени, чтобы столько же раз перерисовать визуальные компоненты. В случаях подобных этому, лучше всего установить поле DataSource.Eabled в False. Это позволит Вам просканировать записи без перерисовки визуальных компонент. Это единственная операция может увеличить скорость в некоторых случаях на несколько тысяч процентов.
Свойство TDataSource.AutoEdit указывает, переходит ли DataSet автоматически в режим редактирования при вводе текста в data-aware объекте.
Задание 7. Добавление компоненты DataSource
1. Выберите DataSource на закладке Data Access палитры компонет и добавьте его на форму.
2. Установите свойство DataSet равным Table1. Это свяжет источник данных с компонентом TTable с именем Table1, который в свою очередь получает доступ в таблицу Rabohie.db в базе данных Stroika.
Все необходимое для связи с таблицей готово, однако теперь надо решить, как данные должны быть отображены, и как ими манипулировать. Наиболее просто это можно сделать с помощью органов управления, привязанных к данным (их называют data-aware или data-bound). Большинство средств управления с привязкой к данным предназначено для связи полей базы данных с визуальным компонентом. Стандартные привязанные компоненты весьма мощны, просты в использовании, и Delphi имеет обширный набор этих компонентов. За исключением DBNavigator, все компоненты на странице Data Control используются для отображения информации баз данных. Чтобы начать работать с ними, необходимо добавить к проекту сетку DBGrid.
Задание 8. Добавление компоненты DBGrid
1. Поместите компонент DBGrid на форму. Это первый из размещенных вами на форме компонентов, который отображается во время исполнения; измените его размер так, чтобы он занял большую часть формы.
2. Установите свойство DataSource компоненты DBGrid в инспекторе объектов равным DataSource1 - это свяжет сетку с источником данных. Что при этом происходит? Как только было установлено свойство DataSource, на сетке автоматически стали появляться имена полей. Если в таблице Rabohie.db были данные, то они должны были бы отображаться даже во время проектирования. Однако если значение свойства Active было установлено равным False, то ничего нельзя увидеть до тех пор, пока оно не станет равным True.
3. Аналогичным образом разместите на форме соответствующие компоненты для каждой таблицы (рис. 9) и установите связи между ними ( Brigada.db - Table2 - DataSource2 - DBGrid2, Obgekt.db – Table3 – DataSource3 – DBGrid3, Cootvet.db – Table4 – DataSource4 – DBGrid4.)
Рис. 9. Главная форма проекта.
Задание 9. Запуск Базы Данных
1. Запустите приложение, выбрав пункт меню «Run» или нажав на клавишу «F9».
2. С этого момента данные действительно могут быть введены в таблицы. Заполнение начните с таблицы Brigada.bd. Напечатайте номер бригады, нажмите кнопку Tab, напечатайте имя. Продолжайте нажимать TAB до тех пор, пока не заполните все поля. По завершении первой записи компонент DBGrid автоматически сдвинет курсор на следующую строку. Продолжайте добавление нескольких простых записей в таблицу. Обратите внимание, что если введены две записи с одинаковым NomBrig, произойдет ошибка. Заполните все таблицы.
3. Завершите приложение (нажмите на крестик в правом верхнем углу формы).
При переходе от одной записи к другой записи (щелчком на ней в сетке), указатель текущей записи (черный треугольник слева) перемещается. Это приложение предоставляет пользователю определенные возможности управления, но для больших баз данных это неприемлемо. Delphi имеет мощное средство управления, которое позволяет перемещаться между объектами в таблице:DBNavigator. DBNavigator – это панель, которая позволяет легко передвигаться между таблицами.
Задание 10. Добавление компоненты DBNavigator.
1. Выберите DBNavigator на закладке DataControls палитры компонет и поместите его на форму. Установите свойство DataSource равным DataSource1.
2. Установите свойство ShowHint равным True. Это вызовет появление подсказки всякий раз, когда курсор мыши будет задерживаться над кнопкой панели.
3. Запустите приложение. Обратите внимание, как просто перемещаться между записями, прыгать к началу или концу базы данных и редактировать записи.
Для удобства и экономии пространства часто используют компонент MainMenu.
Задание 11. Добавление компоненты MainMenu.
1. Выберите компоненту MainMenu, расположенную на закладке Standard палитры компонент, и поместите его на форму.
2. В Object Inspector задайте для свойства Caption значение «Поиск».
3. Щелкните мышью справа от пункта «Поиск» - для свойства Caption укажите «Операции». Справа введите пункт меню «Выход». Щелкнув на пункте «Операции», дополните, следуя вниз, еще двумя подпунктами - «Уволить рабочего», «Нанять рабочего» (рис.10).
Рис. 10. Добавление компоненты MainMenu.
4. К пункту «Поиск» добавьте два подпункта: «Однотабличные запросы», «Многотабличные запросы».
5. Выделив пункт «Однотабличные запросы», щелкните на него правой кнопкой мыши и нажмите Create Submenu. Добавьте: «Информация о рабочем», «Мин. и макс. оклады». В «Многотабличные запросы» - «Списки фамилий рабочих и их бригадиров», «Зарплата бригадира за все часы», «Кол-во часов, отработанных рабочим».
Рис. 11. Компонента MainMenu во время проектирования.
6. После работы с компонентой MainMenu, наверху формы появились пункты меню (рис.11). Щелкните на «Выход» и перед Вами появиться редактор кода. Чтобы данная процедура закрывала основную форму, необходимо поставить слово Close:
procedure TForm1.N7Click(Sender: TObject);
begin
Close;
end;