Содержание
Урок 1.1. Пишем программу складского учета.
Будем писать программу учета продуктов на складе по средней цене прихода. А для этого нам
нужно научиться работать с базами данных. Начнем работу с создания базы в MS
Access 2007.
Урок 1.2. Создаем главную форму программы склад.
На этом
уроке мы создадим главную форму для нашего склада. Создадим подключение, к
базе, используя компонент TADOConnection. Используемые компоненты (
TADOConnection ).
Урок 1.3. Создаем главную форму программы склад.
На этом
уроке мы продолжим создание главной формы для нашего склада. Разместим
основные компоненты, создадим меню... Используемые компоненты (TADOTable,
TMainMenu).
Урок 1.4. Создаем подчиненные формы для
справочников программы склад.
На этом
уроке мы создадим форму для справочника "Единицы измерения" нашего склада.
Используемые компоненты (TButton, TDBGrid, TDataSource ).
Урок 1.5. Создаем подчиненные формы для
справочников программы склад.
На этом
уроке мы создадим форму для справочника «Категории продуктов» и
«Поставщики» нашего склада. Используемые компоненты (TButton, TDBGrid,
TDataSource ).
Урок 1.6. Создаем подчиненные формы для
справочников программы склад.
На этом
уроке мы создадим форму для справочника «Продукты» нашего склада c
использованием поле Lookup из других таблиц. Используемые компоненты (TButton,
TDBGrid, TDataSource ).
Урок 1.7. Создаем формы прихода продуктов на склад.
На этом
уроке мы создадим формы прихода продуктов на склад. Приход продуктов будет
состоять из трех форм. В первой мы будем хранить данные о приходе. Во
второй, данные о продуктах для каждого прихода. Третья – форма для выбора
продуктов. Используемые компоненты (TButton, TDBGrid, TADOTable, TADOQuery,
DataModule).
Урок 1.8. Создаем формы прихода продуктов на склад.
На этом
уроке мы создадим вторую форму, в которой будут отражаться данные о
продуктах для каждого прихода. Используемые компоненты (TButton, TDBGrid,
TADOTable, TADOQuery, DataModule, TDateTimePicker, TDBLookupComboBox).
Урок 1.9. Создаем формы прихода продуктов на склад.
На этом
уроке мы создадим последнюю форму для прихода продуктов. В ней будет
происходить выбор продуктов прихода. Используемые компоненты (TButton,
TDataSource, TDateTimePicker, TDBLookupComboBox, TDBEdit).
Урок 1.10. Программирование баз данных в Delphi -
создаем формы прихода продуктов на склад.
На этом
уроке мы напишем процедуры для обработки событий для наших форм прихода,
созданных на уроках 1.7. – 1.9.
Урок 1.4.
Программирование
баз данных в Delphi - создаем подчиненные формы для справочников программы
склад
На этом уроке мы создадим форму для справочника единицы
измерения нашего склада.
Запускает наш проект, и создаем новую форму File->New->Form -Delphi
В инспекторе объектов
устанавливаем следующие свойства для новой формы
Caption -> Единицы измерения;
FormStyle -> fsMDIChild;
Name -> Form_ed_izmer;
Сохраните модуль с именем ed_izmer.
Пропишем Uses general; после раздела implementation
в программном модуле unit ed_izmer как показано на рисунке.
А программном модуле unit general главной формы пропишем Uses ed_izmer;
Это делается для того, чтобы установить связь между формами,
иначе нельзя будет обращаться из одной формы к компонентам другой формы.
Далее
размещаем на форме следующие компоненты
Три кнопки TButton из
вкладки Standart
В инспекторе объектов для Button1
устанавливаем свойство Caption ->
Новая запись;
для Button2
устанавливаем свойство Caption -> Удалить запись;
для Button3
устанавливаем свойство Caption -> Закрыть;
Из вкладки Data Access помещаем на форму компонент TDataSource.
В инспекторе объектов для него устанавливаем следующие свойства:
DataSet -> Form_general.table_ed_izmer;
Name -> ed_izmer.
А из вкладки Data Controls помещаем на форму компонент TDBGrid.
В инспекторе объектов для него устанавливаем следующие свойства:
DataSource -> ed_izmer;
Если вы все правильно сделали то должны на форме увидеть
следующее:
Если поля таблицы не отображаются в DBGrid,возможно
у вас отключено (False) свойство Active главной форме в инспекторе объектов компонента table_ed_izmer (TADOtable), установите
Active -> True.
Сейчас мы переименуем поля нашей таблице. Для этого перейдем
на главную форму проекта.
Выберем
компонент table_ed_izmer (ADOTable) и в
структуре (Structure)
-> ed_izmer ->
Fields -> щелкнем правой кнопкой мыши и выберем Add all fields.
У вас должно получиться следующее:
Далее выбираем поле id и в инспекторе объектов
устанавливаем у него свойство Visible->False,
затем выбираем поле
ed_name и в
инспекторе объектов устанавливаем у него свойства
DisplayLabel -> Единица измерения;
DisplayWidth -> 30;
После этого видим для формы «Единицы измерения»:
Теперь пишем обработчики событий для кнопок.
Щелкнем дважды мышкой по кнопке «Новая запись» и пишем
следующий код:
procedure
TForm_ed_izmer.Button1Click(Sender: TObject); begin //новая запись form_general.table_ed_izmer.Append; dbgrid1.SetFocus
end; |
Щелкнем дважды мышкой по кнопке «Удалить запись» и пишем
следующий код:
procedure
TForm_ed_izmer.Button2Click(Sender: TObject); //удаление
записи begin //если записи
отсутствуют то выводим сообщение, иначе удаляем запись if
dbgrid1.DataSource.DataSet.RecordCount<>0 then begin if (MessageBox(Handle, 'Удаление
записей может привести к нарушению работы всей базы данных. Удалить запись?',
'Внимание !!!', MB_YESNO)= IDYES) then form_general.table_ed_izmer.Delete end else ShowMessage('Нет записей для
удаления'); end;
|
Щелкнем дважды мышкой по кнопке «Закрыть» и пишем
следующий код:
procedure TForm_ed_izmer.Button3Click(Sender:
TObject); begin //закрытие формы Close; end;
|
В инспекторе объектов для Form_ed_izmer событие FormActivate
пишем:
procedure TForm_ed_izmer.FormActivate(Sender:
TObject); begin //установка фокуса
при активации формы dbgrid1.SetFocus;
end; |
В инспекторе объектов для Form_ed_izmer событие FormClose пишем:
procedure TForm_ed_izmer.FormClose(Sender:
TObject; var Action: TCloseAction); begin //процедура
закрытия формы Action:=cafree; end; |
В инспекторе объектов для Form_ed_izmer событие FormCloseQuery пишем:
procedure TForm_ed_izmer.FormCloseQuery(Sender:
TObject; var CanClose: Boolean); //проверка на
наличие пустых записей перед закрытием, если такие записи найдены то отменяем
//закрытие формы begin if
dbgrid1.DataSource.DataSet.RecordCount<>0
then begin if
not (form_general.table_ed_izmer.Locate('ed_name', '', [loCaseInsensitive,loPartialKey]))
then begin form_general.table_ed_izmer.edit; form_general.table_ed_izmer.post;
end
else begin ShowMessage('У Вас есть не заполненные записи');CanClose:=false;dbgrid1.SetFocus;end;
end;
end; |
Сейчас
сделаем запуск справочника «Единиц измерения» из главной формы. Для этого выбираем
в меню Project -> Options…
и видим следующее окно:
Выбираем Forms и перемещаем Form_ed_izmer из Auto-create forms в Avalable forms.
Переходим
на главную форму, щелкаем мышкой по компоненту MainMenu1, а
затем по пункту Единицы измерения
И пишем следующий обработчик события:
procedure TForm_general.N2Click(Sender:
TObject); begin f:=0; //проверяем,
активна ли наша форма if ActiveMDIChild.Caption<>'Единицы измерения' then begin //если нет то ищем
ее среди неактивных и если находим, то
показываем ее for i:=0 to form_general.MDIChildCount-1 do if form_general.MDIChildren[i].Caption='Единицы измерения' then begin MDIChildren[i].Show;f:=1;end; end
else f:=1; //если форма еще
не создана, то создаем ее if f<>1 then
Tform_ed_izmer.Create(Application);
end; |
Переменные f и I описываем в разделе var
var
Form_general:
TForm_general;
f,i:integer; //f:=1 если
подчиненная форма уже запущена и f:=0 если нет
|
Вот и все готово, запускаем проект и заполняем справочник
данными, например так:
Скачать исходники урока можно здесь.
|