6.1.1. Использование компонентов FIBPlus. Запустите Delphi 7. Создайте новый проект (меню File | New И в том и в другом случае появится окно редактирования запросов SQL. В правой части окна в разделе


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте его и откройте на своем компьютере.
этой
располаɝаются
\Book\Chapter06.
Выполняемые
(EXE-
ɛуɞут
нормально
если
созɞаɞите
ɞанных
Work.fdb
ɞиске
D:
вашеɝо
компь
расположение
ɛыть
D:\BestDatabase\Work.fdb
Ɋазумеется
запущен
ɞанных
InterBase
выполнять
принципу
ɛуɞут
простыми
Послеɞующие
ɛуɞут
улучшать
первых
выполнения
просмотра
ɞанных
уɞаления
ɞоɛавления
существующих
проɝраммной
лизации
отоɛражения
отношения
межɞу
таɛлицами
ɝлавная

поɞчиненная
научимся
просто
упоряɞоченность
отоɛра
жаемых
ɞальнейших
успехи
умения
раɛотать
ɞанных
напишем
полезных
уɞаления
Запустите
Delphi 7.
File | New | Application
).
появившейся
Инспекторе
заɞайте
свойства
Caption

Справочник
стран

FormMain
WindowState

wsMaximized
моɞуль
Main
File | Save As
ниɛуɞь
именем
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
выɛерите
Panels Editor
).
появившемся
ɞоɛавьте
щелчок
жатие
клавиши
элемента
установите
слеɞующие
Bevel
pbNone
=
Количество
стран
Width
110
Alignment
taRightJustify
ɛуɞет
помещаться
количество
считанных
наɛора
третьеɝо
изменять
никакие
свойства
ɞут
тексты
поɞсказок
пользователь
мыши
оɞному
соɞержащему
поɞсказки
Напишите
процеɞуру
отоɛражающую
StatusBar
поɞсказки
(Hint),
перемещении
элементам
инструментов
type
части
личных
private
нужно
процеɞуры
procedure
ShowHint(Sender: TObject);
ɞолжна
располаɝаться
implementation
ɞвух
созɞанных
implementation
{$R *.dfm}
Процеɞура
соɞержит
выполняемый
оператор
Листинɝ
Процеɞура
отоɛражения
поɞсказок
procedure
TFormMain.ShowHint(Sender: TObject);
begin
StatusBar1.Panels[2].Text := Application.Hint;
ɛуɞет
помещать
третий
элементы
нумеруются
начиная
нуля
коɝɞа
курсор
окажется
элементе
соɞержащем
(Hint).
этом
только
этом
случае
коɝɞа
созɞаете
процеɞуру
ɮункцию
нужно
строки
процеɞуры
поместить
прототип
этой
процеɞуры
разɞел
остальных
случаях
коɝɞа
оɛраɛотчики
каких
заɝотовку
оɛраɛотчика
получаете
ɞвойноɝо
щелчка
соответствую
соɛытия
вклаɞке
Events
компонента
Прототип
оɛраɛотчи
разɞеле
type
преɞварительное
опреɞеление
процеɞуры
треɛуе
Delphi)
ɛуɞет
нужно
операторы
процеɞуры
межɞу
строками
begin
Поместите
ɮорму
MainMenu
Созɞайте
щелкнув
. 6.1).
Ƚлавное
меню
проɝраммы
заɞайте
MFile
свойство
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
ShowHint
тоɝо
указать
системе
вывоɞа
нужно
эту
процеɞуру
Application.OnHint := ShowHint;
Аналоɝично
заɞайте
Hint
текст
Выйти
Выхоɞ
проɝраммы
вклаɞки
ɮорму
компоненты
Database
Transaction
выɛрать
нужный
DefaultTransaction
=
ReadTransaction
умолчанию
контексте
ɛуɞут
выполняться
операции
Database
=
Database1
связать
компонент
ввоɞим
вручную
выɛираем
списка
свойство
PrepareOptions
щелчок
знаку
+
названия
установите
True
поɞсвойство
psAskRecordCount
получить
ɮактическое
количество
записей
анɝлийский
термин
щелкните
компоненту
ɮорма
несколько
просто
текущей
вклаɞке
оɞно
окно
оператора
SELECT
скорее
связали
этот
компонент
наɛора
ɞанных
компонентом
получили
окна
как
показано
оɞнако
список
преɞставления
Tables/Views
пустой
ошиɛки
ком
неверно
заɞан
путь
ɮайлу
ɛазы
пароль
пользователя
ошиɛки
соответствующих
компонентах
снова
приступайте
ɞанию
нужных
операторов
виɞим
все
таɛлицы
REFCTR
SQL
ɛуɞет
выполняться
вызове
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
компонента
Окно
реɞактирования
SQL
Generate Modify SQLs
моɞиɮицирующих
SQL).
Уɛеɞитесь
слева
Generate All SQLs
SQL).
знака
Оɛратите
списке
соɞержащем
столɛцы
столɛца
DESCR
столɛец
имеет
ɞанных
BLOB
выступать
качестве
Щелкните
Generate SQLs
SQL).
Ȼуɞут
сɝенерированы
операторы
изменения
уɞаления
записей
таɛлицы
Окно
ɝенерации
моɞиɮицирующих
запросов
SQL
Ɍекущей
станет
Modify SQLs
Люɛопытства
сɝенерированные
листинɝ
Листинɝ
Оператор
новой
строки
INSERT INTO REFCTR(
CODCTR,
NAME,
FULLNAME,
CAPITAL,
DESCR
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
VALUES(
:CODCTR,
:NAME,
:FULLNAME,
:CAPITAL,
:DESCR
INSERT
Неоɛычным
является
список
указываются
имена
ɛуɞут
соɞержать
нужные
Переɞ
кажɞоɝо
параметра
ɞвоеточие
выɛрали
списке
ParamSymbol
пара
ɛуɞет
знак
никакоɝо
смысла
Сами
значения
вновь
созɞа
строки
ɛуɞут
переɞаны
вызове
метоɞа
Insert
Append
компо
DataSet
Листинɝ
Оператор
изменения
оɞной
строки
UPDATE REFCTR
ɞля
изменения
уɞаления
оɛновления
Альтернативный
вариант
заɞан
первичный
таɛлицы
ложение
WHERE
выɝляɞело
слеɞующим
WHERE
CODCTR = :OLD_CODCTR
and NAME = :OLD_NAME
and FULLNAME = :OLD_FULLNAME
and CAPITAL = :OLD_CAPITAL
сказать
хорошо
уɞаления
листинɝе
Листинɝ
Оператор
уɞаления
текущей
строки
DELETE FROM
REFCTR
WHERE
CODCTR = :OLD_CODCTR
Думаю
зɞесь
понятно
WHERE
ссылающемся
зɞесь
имени
преɮикс
веɞь
"OLD"
"NEW"
смысле
старой
существует
текущая
запись
уɞалению
преɮикс
совсем
уɛрать
есть
поэксперименти
руйте
оператор
текущей
записи

листинɝ
Листинɝ
Оператор
текущей
записи
SELECT
CODCTR,
NAME,
FULLNAME,
CAPITAL,
DESCR
FROM REFCTR
WHERE
REFCTR.CODCTR = :OLD_CODCTR
Назначение
оператора
считать
сервера
оɞну
ɞоɛавленную
измененную
текущую
включается
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
ɞоступный
вызывается
ɞоɛавления
изменения
записи
точнее
выполнения
Post
пустой
ɛыли
ошиɛки
компонентов
Database
заɞав
жирное
ɏарактеристики
заɞать
ɞруɝим
свойст
Font
щелкнув
+
слева
свойства
раскройте
свойство
Style
шриɮта
значение
свойства
fsBold
Некоторые
стуɞентов
изощряются
различных
элементах
созɞаваемой
ɮормы
различные
шриɮтов
устанавливая
поɞчеркивание
курсив
Если
еще
хочется
ɞелать
ɞожɞитесь
тоɝо
коɝɞа
только
этоɝо
приступайте
проɝрамм
нормальных
проɝрамм
который
лаɝается
умолчанию
Windows
MS Sans Serif
размером
8.
Некоторые
элементы
как
выɞелить
полужирным
советую
использовать
курсив
экране
монитора
смотрится
ком
презентаɛельно
разɛорчиво
ɮормировании
печатных
Times New Roman.
Заɝоловочные
оɛычно
выɞеляю
полужирным
шриɮтом
Arial,
использую
Arial Narrow,
если
ɞостаточно
оɛъемен
ɞовольно
полосе
еще
столɛец
установите
свойства
FieldName
выпаɞающеɝо
Caption
=
Краткое
название
заɞайте
ɞля
жирное
Выравнивание
заɝоловка
столɛец
FieldName
FULLNAME
Caption
=
Полное
название
заɞайте
ɞля
жирное
Выравнивание
заɝоловка
четвертый
FieldName
CAPITAL
Caption
=
Столица
заɞайте
жирное
Отметив
сетки
DBGrid
измените
свойства
Ɋас
свойство
Options
щелкнув
свойства
слеɞующие
dgEditing
=
False
чтоɛы
пользователю
изменять
dgIndicator
=
False
уɛрать
столɛец
инɞикатора
слева
инɞикатор
нравится
моɝут
соɛственные
взɝляɞы
внешний
вашеɝо
проɝраммноɝо
проɞукта
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
ɛывает
если
ɞопускаете
множественный
сетке
чуть
ɞовоɞя
ɛлеска
совершенства
нашу
проɝрам
dgRowSelect
=
True
чтоɛы
сетке
ɛыла
текущая
отɞельное
поле
dgAlwaysShowSelection
=
всеɝɞа
текущая
если
ɮокус
ɞруɝом
элементе
свойства
ReadOnly
True
чтоɛы
изменять
ɞоɛавлять
уɞалять
ɞанные
непосреɞственно
сетке
соɛственный
преɞоставлять
своим
пользователям
возможность
сетке
Лично
точнее
нравится
все
можно
изменить
например
BLOB
случае
возможностей
проконтролировать
ввоɞимые
пользователем
ɞанные
третьих
ɞовольно
преɞоставить
пользователю
ɞостаточный
ɞан
списки
возможно
Измените
мышью
непосреɞственно
сетке
или
заɞавая
нужные
числа
столɛцов
получить
сле
ɞующий
Окончательный
проекта
ɮорму
активации
OnActivate
слеɞует
соеɞиниться
ɞанных
ɞанных
записей
ɞанных
Поскольку
ɮорма
различными
компонентами
выɞелить
ɮорму
вам
нужно
щелкнуть
люɛому
компоненту
клавишу
sc0; Esc
Инспекторе
оɛъектов
ɮорма
ɮормы
сможете
увиɞеть
верхней
строке
Инспектора
оɛъектов
также
выпаɞающеɝо
компонентов
оɛъектов
ɮорму
активации
ɛуɞет
слеɞующим
Листинɝ
Оɛраɛотчик
соɛытия
активации
ɮормы
procedure
TFormMain.FormActivate(Sender: TObject);
begin
Database1.Connected := True;
// Database1.Open;
Листинɝ
Оɛраɛотчик
соɛытия
закрытия
ɮормы
procedure
TFormMain.FormClose(Sender: TObject;
var
Action: TCloseAction);
begin
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
Напишите
элемента
Выйти
Сɞелайте
ɝлавноɝо
Листинɝ
Завершение
раɛоты
проɝраммы
procedure
TFormMain.MExitClick(Sender: TObject);
begin
Application.Terminate;
завершения
выполнить
ɝлавной
приложения
можно
написать
Close
чуть
FormMain.Close
Оɞнако
каких
C++Builder
Delphi
сраɛаты
если
выɛерите
выɞелите
Инспекторе
перейɞите
вклаɞке
щелкните
соɛытию
OnClick
выпаɞающем
выɛерите
MExitClick
хочу
прежɞе
оɛраɛотчики
каким
лиɛо
существующим
оɛраɛотчиком
уɛеɞитесь
ɮорме
выɞелен
компонент
котороɝо
нужно
уɞивительно
распространенная
ошиɛка
писать
оɛра
компонентов
которых
заɞуманы
результате
проɝраммиста
проɝрамма
завершает
раɛоту
коɝɞа
пользователь
щелкает
кнопке
ɮорме
выполнения
уɞаления
написать
щелч
кнопке
является
наɛор
пустым
слеɞует
выйти
уɞаления
случае
уɞаления
записи
нужно
скорректировать
количество
вывоɞимое
строку
листинɝ
Листинɝ
Процеɞура
уɞаления
текущей
строки
procedure
внимание
оɞном
случае
соɛытия
элемента
меню
этим
щелчок
соответствую
кнопке
ɞруɝом
случае
поступили
наоɛорот
Должен
сказать
хорошая
практика
Лучше
оɛраɛотчики
ɞля
оɞной
ɝруппы
компонентов
ɝлавноɝо
оɛраɛотчиками
щелчки
соответствующим
кнопкам
элемен
контекстноɝо
основу
ɛрать
ɝлавное
поскольку
правилам
хорошеɝо
интерɮейса
ɞолжно
все
неоɛхоɞимые
ɮункциональные
элементы
ɞоступа
элементы
всеɝɞа
ɞуɛлируют
ɮункции
Запустите
проɝрамму
выполнение
Проверьте
выпол
ɮункции
ɞля
пользователя
вашей
сущест
вует
спосоɛов
выполнить
уɞаление
щелкнуть
кнопке
уɞаления
уɞаления
нажать
клавишу
&#xShif;&#xt000; Shift
отпуская
Þl0; Del.
символ
&
меню
нажать
lt0; Alt,
русской
ɛуквой
этоɝо
рус
ɛуквой
ɝоворите
есть
Windows
приɝоɞиться
стесняйтесь
созɞавать
используя
клавиатуру
ɛольшинства
проɝрамм
реально
ɞостаточно
свойственна
совершенству
написанной
заɞаться
если
пользователю
уɞалять
неужели
заставим
уɞалять
все
множество
Ɍут
время
вспомнить
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
чувствами
ɛуɞущему
пользователю
приступили
написанию
чувством
минимум
уважения
ему
выɞелять
сетке
записей
уɞалять
все
отмеченные
ɞемонстрационной
актуально
тут
существует
несколько
раɛоте
ɛольшими
оɛъему
оказаться
весьма
пользователя
получить
чувство
ɛлаɝоɞарности
DBGrid
свойстве
Options
установите
True
значения
слеɞующих
поɞ
свойств
dgIndicator
разместит
левой
инɞикатор
таки
неɞолюɛливаю
dgMultiSelect
множественный
выɛор
инɞикаторе
ɛуɞут
появляться
символы
является
отмеченной
или
если
запись
является
кущей
время
ɛуɞут
жирная

совмещение
Процеɞуру
перепишите
слеɞующем
листинɝ
Листинɝ
Процеɞура
уɞаления
текущей
строки
или
ɝруппы
отмеченных
строк
procedure
StatusBar1.Panels[1].Text := IntToStr(DataSet1.RecordCount);
вначале
записей

свойство
DBGrid1.SelectedRows.Count
сетке
случае
выɞается
уɞаление
запи
указанием
типу
PAnsiChar
случае
нескольких
строк
MessageBox
ɝлаве
уɞаляются
соответствующие
Чтоɛы
система
управления
знала
какие
записи
слеɞует
лять
используем
хорошему
слеɞовало
некоторые
полезные
улучшенную
проɝраммы
ɞоɛавив
строку
состояния
StatusBar
которое
помещалось
количество
отмеченных
записей
написав
некоторых
соɛытий
клавиш
щелчки
мышью
сетке
Сɞелайте
этоɝо
слеɞовало
DBGrid
Оɞнако
учеɛная
проɝрамма
малоɮункциональ
слеɞующей
проɝрамме
оɛязательно
поряɞок
ɞелом
Запустите
проɝрамму
выполнение
Отметьте
нужно
клавишу
Ctrl trl;&#x-5.9;,
щелкать
мышью
соответствующим
Отмеченные
ɛуɞут
выɞелены
цветом
ɛуɞет
ɞержать
символ
крупной
какую
проɞолжая
ɞержать
клавишу
trl; Ctrl,
щелкните
снятия
Чтоɛы
снять
нужно
отпустив
клавишу
щелкнуть
нажать
люɛую
клавишу
вверх
", "
вниз
", Hom&#xHo-7;&#x.5m2;&#x.6e0;e
sc0; Esc.
Ɍекст
этой
моɞуль
можно
компакт
каталоɝе
\Book\Chapter06\ DisplayDelete\FIBPlus.
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
IBX
ɞействия
использовании
этих
примерах
использую
станɞартный
компонентов
IBX,
Delphi 7.
Существуют
ɞруɝие
улучшенные
этих
компонентов
ɮункциональность
которых
моɝут
отличаться
этоɝо
станɞарта
Скопируйте
ɞруɝой
каталоɝ
Delphi.
компоненты
FIBPlus
вместо
ɮорму
слеɞующие
Database
компоненту
имя
Database1
Transaction
ReadTransaction
никакая
она
read,
write.
звать
Transaction1
сɞелаем
слеɞующей
раɛоте
реляционными
ɞанных
используйте
компонент
Table
страшноɝо
ɞореляционноɝо
прошлоɝо
FIBPlus
зɞесь
приɞется
проɝраммирова
выполнить
несколько
количестве
страшно
ɏуже
пишете
проɝрамму
количеством
таɛлиц
созɞавали
компонентами
FIBPlus (
можете
проект
нуля
выполнив
ɞействия
преɞыɞущеɝо
ключением
размещения
компонентов
Database
установите
свойства
DatabaseName
D:\BestDatabase\work.fdb
ввоɞить
вручную
IBX
ɞиалоɝовом
выɛирать
DefaultTransaction
установите
ReadTransaction
зɞесь
выɛрать
списка
LoginPrompt
установите
False
чтоɛы
исключить
имени
пользователя
ɞанных
Щелкните
выɛерите
Database Editor
Появится
компонента
уже
присутствовать
путь
Вве
пользователя
WIZARD
напоминаю
пароль
master
User Name
Password
выпаɞающеɝо
Ɏормирование
параметров
компонента
ɞанных
правильность
щелкнув
ɛуɞет
выполнена
соеɞинения
ɞопустили
получите
соответствующее
ɞиаɝностическое
Иначе
система
сооɛщит
успешности
соеɞинения
Щелкните
установок
соеɞинения
результате
ɛуɞут
помещены
user_name=wizard
password=master
lc_ctype=WIN1251
транзакции
установите
свойства
AutoStopAction
saCommit
DefaultDatabase
Database1
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
компонента
DataSet
заɞача
сɝенерировать
SQL
ɞоɛавления
уɞаления
меется
которые
получили
FIBPlus.
уɞалось
все
сɞелать
меньшими
затратами
Приступим
Свойство
Database
компонента
свойства
SelectSQL
Появится
оператора
SELECT
рис
части
выɛерите
имя
таɛлицы
REFCTR
Add Table to SQL
оператор
SQL).
заɝотовка
оператора
внизу
таɛлицы
щелкните
символу
*,
затем
Add Field to SQL
SQL).
результате
созɞан
нужный
SELECT
столɛцы
таɛлицы
вручную
преɞложение
ORDER BY
NAME
чтоɛы
ɞущей
версии
упоряɞочить
Созɞание
реɞактирование
оператора
SELECT
IBX
Щелкните
завершить
щелкните
вклаɞкой
Зɞесь
виɞим
полей
Fields
изменяемых
Update Fields
Немноɝо
ключевых
наɛлюɞаем
DESCR
что
состав
ключа
может
Щелкните
Select Primary Keys
Выɛрать
первичные
ключи
).
результате
столɛец
первичноɝо
таɛлицы
CODCTR
этом
все
ключевых
Похоже
виɞит
страшно
вручную
поле
CODCTR
Ƚенерация
операторов
SQL
виɞите
картинки
ɞеɮекты
ɮормы
Generate SQL
Сɝенерировать
SQL).
Ɍекущей
становится
сɝенерированные
опе
изменения
ɞоɛавления
уɞаления
Они
как
случае
использования
FIBPlus.
Щелкните
завершить
созɞания
Некоторая
неправильность
полиɝраɮическим
ɞеɮектом
Ɍак
реальной
Запустите
проɝрамму
выполнение
какую
ниɛуɞь
Она
Оɞнако
если
закрывая
проɝрамму
запустить
люɛую
ɞруɝую
проɝрамму
просмотра
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
увиɞим
уɞалена
попроɛуете
про
уɞалить
получите
поɞтвержɞена
транзакция
уɞалялась
ɛазах
ɞанных
неɞопустимо
измене
записи
различными
FIBPlus (
уста
свойство
AutoCommit
True
поɞтверɞить
транзакцию
уɞаления
таɛлицы
процеɞуру
уɞаления
стро
Листинɝ
Процеɞура
уɞаления
текущей
строки
procedure
Листинɝ
Процеɞура
уɞаления
текущей
строки
или
ɝруппы
отмеченных
строк
procedure
begin

for
i := 0
DBGrid1.SelectedRows.Count 1

begin
Листинɝ
Оɛраɛотчик
соɛытия
активации
ɮормы
procedure
TFormMain.FormActivate(Sender: TObject);
begin
Database1.Connected := True;
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
Ɍекст
этой
моɞуль
можно
компакт
каталоɝе
\Book\Chapter06\ DisplayDelete\IBX.
получили
проект
ɞля
IBX,
используя
созɞанный
проект
хорошему
слеɞовало
уɞалить
преɞложения
uses
моɞуля
этом
случае
еɞинственной
ɞули
наɛору
компонентов
FIBPlus:
существующую
ɮункциональность
преɞыɞущей
новую
внесем
изменения
ɝлавное
элементы
изменения
элементу
эле
меню
выɞеляя
элемент
нужно
новый
нажимая
слеɞующие
Доɛавить
MAdd
ShortCut
=
Shift+Ins
Hint
=
Доɛавить
новую
запись
Изменить
MEdit
ShortCut
Enter
=
Изменить
текущую
запись
MRefresh
ShortCut
=
Оɛновить
список
хоɞу
ɞоɛавим
ɮорму
компонент
ImageList
нужными
щелкните
. 6.8),
ɞоɛавлять
иконки
рисунки
ɮормата
Щелкните
кнопке
появившемся
Add Images
рисунки
элементов
\Book\Icons
ком
: AddM, EditM, RefreshM, DelM
ExitM.
ɛуɞет
использоваться
рисунков
вышать
1616
все
рисунки
ɛуквой
"M"
ɞля
имеют
соответствующий
Ɏормирование
списка
иконок
компоненте
ImageList
установим
свойство
Images
ImageList1
выпаɞающеɝо
списка
элемента
элемента
самоɝо
уровня
Ɏайл
установим
свойство
ImageIndex
соответствующее
значение
элемент
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
иконку
аналоɝичную
что
ɛуɞут
располаɝаться
ɞоступа
неоɛхоɞимости
свойство
ImageIndex
кажɞый
рисунок
списка
ɛуɞет
соɞержать
рисунков
ImageList1
сами
рисунки
это
уɞоɛно
нужно
использование
рисунка
свойстве
ImageIndex
нужно
ввести
ɛуɞет
выɝляɞеть
слеɞующим
оɛразом
Ƚлавное
меню
полноɮункциональной
FIBPlus
режиме
проектирования
Ɋаскрытое
меню
раскрывшееся
ɛуɞет
соɞер
жать
. 6.10.
наконец
только
ɞве
присутствующие
ɝлавном
изменить
уɞалить
PEdit
PDelete
так
ɛуɞет
всплывать
пользователь
сетке
отоɛражения
ɞанных
текущей
причине
контекстное
соɞержать
только
отɞельной
изме
уɞаление
Свяжем
контекстное
DBGrid
установим
свойства
PopupMenu
PopupMenu1
выɛираем
выпаɞающеɝо
соɞержащеɝо
появления
соответствующих
Images
ImageList1
свойствам
ImageIndex
нужные
выɛерем
выпаɞающеɝо
списка
панели
инструментов
расположим
соответствующие
вашеɝо
позволения
уɛеру
Button
заменю
SpeedButton
хранить
иконки
улуч
внешний
сложившейся
траɞиции
ɞоступа
только
рисунки
тексты
моɝут
появляться
виɞе
навоɞит
кнопку
реализуем
таким
сɞелали
проɝрамме
уɞаления
спра
стран
кнопкам
мнемонические
("
человеческие
имена
внесем
нужные
свойства
Hint
установим
2626
свойства
Height
Width
заɝрузим
используя
Glyph
мышью
нужную
щелкните
Инспекторе
оɛъектов
справа
свойства
Glyph
окно
Окно
Picture Editor
ɞля
ɞоɛавления
кнопке
иконки
Щелкните
Заɝрузить
ɞиалоɝовом
Load Picture
\Book\Icons
заɝрузите
рисунок
сунков
: Add, Edit, Del, Refresh
Exit.
рисунки
превышать
Нужно
ɞействие
внести
изменение
свойство
Options
значение
poKeepSorting
ɞоɛавляемые
записи
ɛуɞут
размещаться
списке
ɛуɞет
приɛлизительно
слеɞующим
. 6.12.
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
Оɛщий
ɝлавной
полноɮункциональноɝо
проекта
украшения
соɝласитесь
что
великая
сила
).
займемся
ɮункциональной
частью
сложному
слеɞующий
списка
ɞля
меню
свяжите
кнопке
оɛновления
листинɝ
Листинɝ
списка
procedure
TFormMain.MRefreshClick(Sender: TObject);
begin
Созɞайте
новую
ɮорму
File | New | Form
слеɞую
свойства
Caption
=
Доɛавление
страны
=
FormAddCtr
моɞуль
Поместите
ɮорму
уɛрав
свойство
Caption
панель
поместите
нужные
метки
ɞанных
панель
TButton
Отменить
установив
соответствующие
свойства
заɞайте
свойство
Default
=
True
ɛуɞет
моɞелироваться
коɝɞа
пользователь
нажмет
клавишу
nte;&#xr000; Enter).
заɞайте
Cancel
=
True
ɛуɞет
моɞелироваться
пользователь
нажмет
sc0; Esc),
ModalResult
=
mrCancel
щелчке
ɛуɞет
моɞуля
получит
mrCancel
что
кнопки
заɞали
свойства
ModalResult
значение
mrNone
соɛытия
завершении
моɞуля
против
случае
ɞруɝом
ModalResult
управление
всеɝɞа
вызвавшему
моɞулю
центральную
часть
вклаɞки
RichEdit
заɞайте
выравнивание
ɛуɞет
распола

ɞоɛавления
записи
иметь
Слеɞует
связать
ɝлавной

вызываем
File | Use
списка
моɞуль
нужно
зать
ɝлавную
ɮорму
ɮормой
FormAddCtr
перейɞя
ɝлавную
ɮорму
выɛрав
списке
используемых
моɞулей
моɞуля
Поɞоɛную
выполнить
вручную
ɞоɛавив
нужноɝо
преɞложе
uses
начальной
части
связываемой
оɛраɛотчик
OnShow
листинɝ
Листинɝ
Оɛраɛотчик
соɛытия
OnShow
ɮормы
страны
procedure
TFormAddCtr.FormShow(Sender: TObject);
begin
CODCTR.Text := '';
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
NAME1.Text := '';
FULLNAME.Text := '';
CAPITAL.Text := '';
RichEdit1.Clear;
Ɏорма
ɞоɛавления
Edit
RichEdit
имена
столɛцов
Name
Зɞесь
ɮор
устранения
ɞвусмысленности
сказать
почему
раɛотает
принимаем
записи
страны
оɛязательно
присут
название
Возможность
ɞоɛавления
ɛуɞем
осуществлять
устанавливая
тупность
ɞанных
страны
OnChange
листинɝ
Напомню
этоɝо
нужно
вначале
выɞелить
компонент
оɛраɛотчик
OnChange
как
связать
оɛраɛотчиком
OnChange
компонента
Edit
преɞназначенноɝо
ввоɞа
Листинɝ
Оɛраɛотчик
соɛытия
изменения
ɞанных
названии
страны
procedure
TFormAddCtr.CODCTRChange(Sender: TObject);
begin
BOK.Enabled := (Trim(CODCTR.Text) � '')
(Trim(NAME1.Text)� '');
используем
ɮункцию
Trim
уɛирает
начальные
Кнопка
ɛуɞет
ɞоступной
если
страны
являются
непустыми
непроɛельные
соɛытие
щелчок
Листинɝ
таɛлицу
страны
procedure
TFormAddCtr.BOKClick(Sender: TObject);
SQL:
String
Stream: TStream;
begin
CODCTR.Text := Trim(CODCTR.Text);
SQL := 'SELECT COUNT(CODCTR) FROM REFCTR WHERE CODCTR = ''' +
CODCTR.Text + '''';
(FormMain.Database1.QueryValueAsStr(SQL, 0)� '0')
then
begin
Application.MessageBox(
'
Страна
тем
коɞом
присутствует
ɛазе
',
'
Дуɛлирование
', MB_OK + MB_ICONSTOP);
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
проверки
если
попытаемся
поместить
ɛазу
значением
первичноɝо
уже
присутствует
получим
Оɛраɛотка
проɝрамме
осоɛое
искусство
котороɝо
рассмотрим
оɞной
слеɞующих
Аналоɝично
ɞанных
описать
столɛец
краткоɝо
атриɛутом
UNIQUE
этоɝо
столɛца
уникаль
что
привоɞило
исключению
поместить
ɞуɛликат
запуска
помещения
строки
используется
Insert
присваиваются
FieldByName
Соɛственно
сервер
осуществляется
Post
заɛоты
треɛует
BLOB
ɞля
используем
RichEdit
Чтоɛы
поместить
соɞержимое
RichEdit
BLOB
используем
Stream := TMemoryStream.Create;
RichEdit1.Lines.SaveToStream(Stream);
Stream.Position := 0;
TFIBBlobField(FormMain.DataSet1.FieldByName('DESCR')).LoadFromStream(
Stream);
finally
Stream.Free;
поток
Create
затем
потоке
соɞержимое
RichEdit
метоɞом
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
Листинɝ
Процеɞура
ɞоɛавления
страны
procedure
TFormMain.MAddClick(Sender: TObject);
begin
FormAddCtr.ShowModal;
StatusBar1.Panels[1].Text := IntToStr(DataSet1.RecordCount);
щелчок
Доɛавить
Запустите
проɝрамму
выполнение
записей
что
записи
располаɝаются
месте
сетке
установили
True
поɞсвойства
poKeepSorting
проɝрамму
ɮункцию
существующих
ɞанных
научу
трюку
соɝреть
ɞушу
ленивым
естественно
сеɛя
).
виɞом
ɮункциональ
Скопируйте
AddCtr.dfm
AddCtr.pas
ниɛуɞь
ɞруɝой
каталоɝ
среɞе
Delphi
созɞанную
моɞуля
FormAddCtr
FormEditCtr
File | Save As
каталоɝе
вашеɝо
именем
моɞуль
Project | Add to Project
вносить
моɞуль
нужные
изменения
Кстати
если
ɮормы
сможете
ɞоɛавить
моɞуль
проект
существовании
именем
заɝоловок
Caption
Изменение
страны
private
ɞоɛавьте
строки
OLD_CODCTR:
String
OLD_NAME:
String
переменные
ɛуɞем
значения
звания
страны
значения
изменения
ɮормы
OnShow
слеɞующем
виɞе
Листинɝ
Оɛраɛотка
соɛытия
OnShow
ɮормы
реɞактирования
страны
procedure
TFormEditCtr.FormShow(Sender: TObject);
begin
FULLNAME.Text := FormMain.DataSet1.FieldByName('FULLNAME').AsString;
Листинɝ
Процеɞура
реɞактирования
страны
procedure
TFormEditCtr.BOKClick(Sender: TObject);
SQL:
String
Stream: TStream;
begin
CODCTR.Text := Trim(CODCTR.Text);
NAME1.Text := Trim(NAME1.Text);
if
CODCTR.Text� OLD_CODCTR
then
begin
SQL := 'SELECT COUNT(CODCTR) FROM REFCTR WHERE CODCTR = ''' +
CODCTR.Text + '''';
(FormMain.Database1.QueryValueAsStr(SQL, 0) &#x-6.7; '0')
then
begin
Application.MessageBox(
'
Страна
тем
коɞом
присутствует
ɛазе
'
Дуɛлирование
', MB_OK + MB_ICONSTOP);
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
(FormMain.Database1.QueryValueAsStr(SQL, 0) &#x-6.7; '0')
then
begin
Application.MessageBox(
'
Страна
тем
названием
присутствует
ɛазе
'
Дуɛлирование
', MB_OK + MB_ICONSTOP);
Листинɝ
Ɋеɞактирование
страны
procedure
TFormMain.MEditClick(Sender: TObject);
begin
как
случае
уɞаления
текущей
записи
наличие
Иначе
пустом
получить
нужное
этим
выɛор
контекстном
элемента
Изме
нить
щелчок
ɞоступа
Изменить
также
DBGrid
соɛытие
OnDblClick
сколько
текущей
или
Изменить
щелчок
Изменить
нажа
клавиши
nte;&#xr000; Enter (
клавиша
ɞоступа
),
использование
lt0; Alt
ɛукв
ɞля
ɞоступа
нужному
ɝлавноɝо
Наш
пользователь
уɞоɛный
Похоже
нам
купаться
волнах
ɛлаɝоɞарности
ɛуɞут
пользователей
Ɍекст
этой
моɞуль
можно
компакт
каталоɝе
\Book\Chapter06\InsertUpdate\FIBPlus.
BLOB
уже
столɛцы
BLOB
моɝут
уɝоɞно
рисунки
звук
используем
RichEdit
или
DBRichEdit
моɝут
RTF (Rich
Text Format
текстовый
позволяют
сохра
ɝраɮику
ɞопустима
созɞанной
текста
преɞусматривается
нужно
хорошем
реɞакторе
WordPad)
созɞать
неоɛхоɞимый
Ȼуɮер
компонент
RichEdit
изменении
страны
Ɋазумеется
написать
соɛственный
реɞактор
ɛуɞет
останутся
силы
IBX
Скопируйте
ɞруɝой
Delphi.
FIBPlus.
вклаɞки
InterBase
компоненты
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
ɞанных
транзакции
вующие
свойств
полезный
сейчас
время
размещение
установление
свойств
Delphi
ɞуль
Main
Листинɝ
списка
procedure
TFormMain.MRefreshClick(Sender: TObject);
Cod:
String
begin
запомненным
ɞелается
текущей
метоɞа
Locate
новой
записи
нужно
оɛратиться
оɛраɛотчику
включив
вызова
моɞуля
MRefreshClick(
nil
серьезные
изменения
нужны
ɞля
моɞуль
Поскольку
IBX
существует
ɞля
ɛазе
ɞанных
пользовали
преɞыɞущей
проверки
ɞуɛлирования
названия
слеɞует
ɮорму
поместить
компонент
Query
установить
только
Database
=
FormMain.Database1
ɞуɛлирования
страны
выполняется
слеɞующим
Листинɝ
Проверка
страны
компонентах
SQL := 'SELECT CODCTR FROM REFCTR WHERE CODCTR = ''' +
CODCTR.Text + '''';
Query1.Close;
Query1.SQL.Text := SQL;
Query1.Open;
Query1.RecordCou�nt 0
then
Аналоɝично
ɞуɛлирование
названия
Нужно
заɛыть
сервер
Post
выполнить
транзакции
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
записи
аналоɝичным
помещаем
ɮорму
Query
используем
ɞуɛлирования
оɛнаружил
нюанс
возвращает
страны
имеющих
CHAR
ɞля
VARCHAR
этоɝо
проверял
нужно
уɛрать
проɛелы
ɮункции
Иначе
отсут
изменений
проɝрамма
ɛуɞет
считать
что
Ɍекст
этой
моɞуль
можно
компакт
каталоɝе
\Book\Chapter06\InsertUpdate\IBX.
стран
существует
связь
оɞной
существует
количество
нулевое
связь
проɝрам
называется
связь
или
master-detail.
случае
пользователю
уɞоɛно
Созɞайте
Delphi
новый
разместите
компоненты
внимание
осмысленные
имена
имеющим
отношение
ɛазе
касается
DataSource
DBGrid
слеɞует
ɞелать
соɞержится
ɞанных
DBGridRegion
отоɛражающую
текущей
нужно
выровнять
нижнему
Align
=
alBottom
вклаɞки
Additional
ɮорму
Splitter
разɞелитель
этоɝо
панель
указывать
количество
стран
количество
текущей
равнивается
положите
четыре
Label
показано
Друɝая
инструментальная
панель
нее
клаɞется
DBGridCountry
выравниваем
клиентской
Align
=
alClient
разɞелитель
ɛуɞет
ваться
ɞля
изменения
отоɛражающих
Проɝрамма
просмотра
реɝионов
вместо
StatusBar
используем
оɛычную
просто
знать
является
слеɞует
приɞерживаться
станɞарта
элементов
управления
ваш
заказчик
потреɛует
ɏарактеристики
устанавливаются
DataSetRegion
Прежɞе
всеɝо
компонент
нужно
связать
роɞительским
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
выполнения
Наличие
заɞержки
позволит
вать
раньше
поɞчиненный
ɞанных
ватель
прокручивает
список
поисках
нужной
записи
Коɝɞа
пользователь
остановился
нужную
строку
тут
происхоɞит
сети
несколько
сетевой
Слеɞует
внести
изменения
сɝенерированные
ɞвух
свойствах
6.25).
Листинɝ
Оператор
новой
строки
записан
свойстве
InsertSQL
INSERT INTO REFREG(
CODCTR,
CODREG,
NAMEREG,
CENTER
VALUES(
:
MAS_CODCTR
, /*
Изменение
*/
:CODREG,
:NAMEREG,
:CENTER
Листинɝ
Оператор
изменения
текущей
строки
записан
свойстве
UpdateSQL
UPDATE REFREG
Листинɝ
Оɛраɛотчик
соɛытия
отоɛражения
ɮормы
procedure
TFormMain.FormShow(Sender: TObject);
begin
Database1.Connected := True;
Листинɝ
Оɛраɛотчик
соɛытия
наступающеɝо
после
открытия
наɛора
ɞанных
реɝионов
procedure
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
Моɞуль
ɞоɛавления
текущей
ɛуɞем
щепетильными
станем
сейчас
реализовывать
уже
правильно
сɞелать
Напишем
щелчка
OnShow
устанавливаем
ɮокус
листинɝ
Листинɝ
Оɛраɛотчик
соɛытия
отоɛражения
ɮормы
реɝионов
procedure
TFormAddReg.FormShow(Sender: TObject);
begin
CODREG.Text := '';
CENTER.Text := '';
NAMEREG.Text := '';
Листинɝ
реɝиона
procedure
TFormAddReg.BOKClick(Sender: TObject);
begin
вспомоɝательный
моɞули
моɞуле
слеɞующий
оɛраɛотчик
соɛытия
Доɛа
вить
Листинɝ
реɝиона
ɝлавной
ɮормы
procedure
TFormMain.BAddRegClick(Sender: TObject);
begin
FormAddReg.ShowModal;
Ɍекст
проɝраммы
включая
моɞуль
компакт
каталоɝе
\Book\Chapter06\MasterDetail\FIBPlus.
IBX
Скопируйте
или
выполните
ɮорме
исключением
FIBPlus.
Поло
вклаɞки
InterBase
Database
Transaction
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
Ɍекст
проɝраммы
включая
моɞуль
нахоɞится
компакт
ɞиске
каталоɝе
\Book\Chapter06\MasterDetail\IBX.
наɛоров
ɛывает
нужно
изменять
упоряɞоченность
процессе
выполнения
Например
пожелать
отоɛражать
упоряɞоченные
кратким
названиям
упоряɞоченные
рассмотрим
заɞачу
вни
SELECT
интерɮейс
зователя
Созɞайте
новый
Delphi
скопируйте
ниɛуɞь
существующих
уɞаления
Проɝрамма
позволяющая
упоряɞочивать
записи
нужно
поместить
заɛыв
меню
проɝраммы
завершения
Свяжите
соɛытие
элемента
нужно
созɞать
суɛменю
вложенное
Для
элементе
неоɛхоɞимо
щелкнуть
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
появившемся
контекстном
выɛрать
строку
Create Submenu
суɛ
нужно
созɞать
четыре
элемента
Присвойте
MByCode
MByName
MByFullName
MByCapital
элемента
установите
True
свойство
Checked
элементов
нужно
установите
True
свойства
RadioItem
результате
эле
превратятся
раɞиоɝруппу
отметка
элементов
остальных
заɛуɞьте
также
Hint
поместить
соответствующих
пользователя
напишем
заɝоловка
OnTitleClick
Листинɝ
Оɛраɛотчик
соɛытия
щелчка
заɝоловку
сетки
procedure
TFormMain.DBGrid1TitleClick(Column: TColumn);
S:
String
begin
S := Column.FieldName;
вариант
выполнять
упоряɞочение
столɛцу
отоɛражаемому
сетке
нашем
случае
если
треɛуется
ɛывает
чаще
ɛез
локальной
исключить
упоряɞочивание
столицы
нужно
написать
S := '';
Column.FieldName = 'CODCTR'
then
S := 'CODCTR';
Column.FieldName = 'NAME'
then
S := 'NAME';
Column.FieldName = 'FULLNAME'
then
S := 'FULLNAME';
�S ''
then
begin
DataSet1.Close;
DataSet1.OrderClause := S;
DataSet1.Open;
end
красивую
разрушает
присутствие
выполняющих
похожую
ɮункцию
поряɞка
Листинɝ
Оɛраɛотчик
ɝлавном
элемента
procedure
TFormMain.MByCodeClick(Sender: TObject);
begin
MByCode.Checked
then
exit;
MByCode.Checked := True;
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
Листинɝ
версия
оɛраɛотчика
соɛытия
щелчка
заɝоловку
сетки
procedure
TFormMain.DBGrid1TitleClick(Column: TColumn);
begin
Column.FieldName = 'CODCTR'
then
MByCodeClick(
nil
Column.FieldName = 'NAME'
then
MByNameClick(
nil
Column.FieldName = 'FULLNAME'
then
MByFullNameClick(
nil
Column.FieldName = 'CAPITAL'
then
MByCapitalClick(
nil
);
оɛращение
соответствующеɝо
оɛраɛотчики
получают
Sender
TObject
какие
ɛыло
параметры
поступаем
станɞартным
Delphi
пустое
значе
если
количество
управляющих
используете
еще
переключатели
щаетесь
ɞруɝой
заɞается
новый
Преɞложение
ORDER BY
операторе
SELECT
как
рассмотрели
устанавливать
упоряɞоченности
уɛыванию
путем
кажɞоɝо
которому
упоряɞочение
ключевых
ASCENDING
умолчанию
DESCENDING
Ɍочно
OrderClause
можем
имени
проɛел
указать
упоряɞоченности
Действительно
реализации
проɝрамм
проɞуктов
искреннее
восхищение
FIBPlus
ɞанных
существует
DoSort
локальную
сортировку
наɛора
ɞанных
изменить
ɞанных
полностью
исключает
сетевой
упоряɞоченности
ɞанных
элемента
Коɞ
выɝляɞеть
слеɞующим
листинɝ

Вострикова
какой
использует
изощренный
поɞоɛных
случаях
рискну
такое
Листинɝ
Оɛраɛотчик
ɝлавном
элемента
сортировки
procedure
TFormMain.MByCodeClick(Sender: TObject);
begin
MByCode.Checked
then
exit;
MByCode.Checked := True;
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
потреɛует
ɛольших
усилий
рассматри
вать
станем
сказать
локальную
использовать
Ɍекст
проɝраммы
включая
моɞуль
компакт
каталоɝе
\Book\Chapter06\Order\FIBPlus.
проɝраммных
решений
преɞставлены
комментариях
соɛой
разумеющееся
при
описании
проɝрамм
акцентируем
кажɞой
проɝрамме
существуют
среɞства
Кажɞая
проɝрамма
процеɞуру
ShowHint
помещающую
нужное
строки
текущей
поɞсказки
связанной
элемен
кнопкой
инструментальной
IBX
случае
ɛуɞет
изменения
упоря
нужно
ɛуɞет
оператор
SELECT
указав
ORDER BY
нужное
столɛца
ɞанных
Созɞайте
Delphi
скопируйте
созɞанный
ɞруɝой
откройте
Delphi,
уɞалив
FIBPlus
уɛрав
uses
ссылки
моɞули
моɞуля
Main
IBX
скопируйте
ɛазы
ɞанных
слеɞует
связать
DataSource1
наɛором
Листинɝ
Оɛраɛотчик
ɝлавном
элемента
procedure
TFormMain.MByCodeClick(Sender: TObject);
begin
MByCode.Checked
then
exit;
MByCode.Checked := True;
Листинɝ
Оɛраɛотчик
ɝлавном
элемента
название
procedure
TFormMain.MByNameClick(Sender: TObject);
begin
MByName.Checked
then
exit;
MByName.Checked := True;
Ɍекст
проɝраммы
включая
моɞуль
компакт
каталоɝе
\Book\Chapter06\Order\IBX.
оɞаренных
Написание
проɝрамм
раɛоты
ɛазой
ɞанных
там
перевалом
полезных
моɝут
жизнь
Испыта
выполняя
ɞанных
можете
соеɞинить
ɮункциональность
всех
ɝлаве
полную
проɝрамму
сɞелайте
протяжении
напишем
множество
интересных
нужных
ɞальнейшей
вашей
Похоже
результате
ɞеятельности
немноɝо
поɞустали
Лучший
смена
виɞа
ɞеятельности
Запускайте
лучше
Настало
время
вплотную
заняться
ɞостаточно
рассмотрим
слеɞующей
провеɞем
экспериментов
осуществляя
различные
ɞанных
учеɛной

Приложенные файлы

  • pdf 7797602
    Размер файла: 1 020 kB Загрузок: 0

Добавить комментарий