Редактирование программного кода

Связь между таблицами в нашей базе данных происходит по полю “Ключ”. На форме это поле отсутствует – его значение генерируется автоматически. После того, как мы внесли записи на первой панели GroupBox, их необходимо сохранить – для того, чтобы другие таблицы смогли связаться с внесенными записями.

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

Выделите первый GroupBox, и дважды щелкните по событию onExit на вкладке Events инспектора объектов. Это событие происходит всякий раз, когда пользователь перейдет к другой панели GroupBox, либо к кнопкам, расположенным в нижней части окна. В сгенерированной процедуре впишите код:

{Вышли из редактирования LichData}

procedure TfEditor.GroupBox1Exit(Sender: TObject);

begin

if fDM.TLichData.Modified then

fDM.TLichData.Post;

end;

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

Далее двойным щелчком сгенерируйте событие нажатия на кнопку “Добавить” в GroupBox с телефонными данными. Этой кнопкой мы будем добавлять новые записи в таблицу, ведь один сотрудник может иметь более одного телефона. Код в процедуре будет такой:

if fDM.TTelephones.Modified then

fDM.TTelephones.Post;

fDM.TTelephones.Append;

DBEdit14.SetFocus;

Вначале мы сохраняем измененные значения, если они были. Затем методом Append мы добавляем в таблицу новую запись. Далее мы переводит фокус ввода на DBEdit с телефонными номерами, чтобы пользователю не пришлось делать это самому.

В процедуре нажатия на кнопку “Сохранить и выйти” код простой:

if fDM.TLichData.Modified then

fDM.TLichData.Post;

if fDM.TDoljnost.Modified then

fDM.TDoljnost.Post;

if fDM.TAdres.Modified then

fDM.TAdres.Post;

if fDM.TTelephones.Modified then

fDM.TTelephones.Post;

Close;

Для кнопки “Добавить сотрудника” пропишите:

fDM.TLichData.Append;

fDM.TDoljnost.Append;

fDM.TAdres.Append;

fDM.TTelephones.Append;

DBEdit1.SetFocus;

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

Переходим к главной форме. Начнем с кнопки “Новый сотрудник”. Нам необходимо добавить новую запись в каждую таблицу, после чего открыть окно редактора:

fDM.TLichData.Append;

fDM.TDoljnost.Append;

fDM.TAdres.Append;

fDM.TTelephones.Append;

fEditor.ShowModal;

Сгенерируйте процедуру onClick для кнопки “Редактировать”. Тут будет лишь одна строчка кода: fEditor.ShowModal;

В результате откроется окно редактора, и компоненты будут отображать данные текущей записи. Предположим, пользователю будет удобней дважды щелкнуть по записи в верхней сетке DBGrid, чем нажимать кнопку. Поэтому выделите сетку с главной таблицей и сгенерируйте для нее событие onDBLClick. Там введите такую же строчку кода.

Перейдем к программированию радиокнопок. По нашему замыслу, при открытии программы в верхней сетке DBGrid будут отображаться данные из главной таблицы, а в нижней – из таблицы Adres. Также будет выделена радиокнопка с надписью “Адрес”. Если пользователю захочется посмотреть должность или телефоны текущего сотрудника, он будет щелкать соответствующую радиокнопку, и эти данные должны быть отображены в нижней DBGrid. Выделите первую радиокнопку с надписью “Адрес” и сгенерируйте для нее событие onClick, которое будет возникать, когда пользователь щелкнет по ней. В процедуре этого события впишите следующий код:

if RadioButton1.Checked then

DBGrid2.DataSource:= fDM.DSAdres;

Здесь мы проверили, включена ли данная радиокнопка. Если да, то мы меняем связь нижней сетки DBGrid и подключаем ее к таблице Adres. Ведь связь сетки с таблицей осуществляется через соответствующий компонент DataSource, а у нас их четыре. Подключаясь то к одному, то к другому DataSource, мы можем программно менять отображенную в сетке таблицу.

Для события onClick радиокнопки с надписью “Телефоны” код будет таким:

if RadioButton2.Checked then

DBGrid2.DataSource:= fDM.DSTelephones;

А для события onClick радиокнопки с надписью “Должность”, соответственно, код будет следующим:

if RadioButton3.Checked then

DBGrid2.DataSource:= fDM.DSDoljnost;

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: