Управляющие компоненты для просмотра и модификации данных
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Отображение и манипуляцию данными наиболее просто осуществить с помощью управляющих компонентов, связанных с данными (их называют data-aware или data-bound). Большинство средств управления с привязкой к данным предназначено для связи полей базы данных с визуальным компонентом. Все компоненты на странице DataControl, за исключением DBNavigator, используются для отображения информации баз данных. Чтобы начать работать с ними добавляется сетка DBGrid.

Delphi имеет мощное средство управления, которое позволяет перемещаться между объектами в таблице – навигатор DBNavigator.

Доступ к полям

Часто бывает так, что программе надо обратиться к полям базы данных. Свойство Fields набора данных описывает больше, чем содержащиеся в полях значения. Это свойство содержит также информацию о структуре таблицы. Например, свойство Fields может дать сведения об именах полей, типе данных в них, размере данных и их значениях для текущей записи. Объекты TTable имеют массивы полей. Эти массивы можно модифицировать, используя редактор полей для добавления, удаления и модификации определений полей.

В простейшем случае, когда приложению известно определение таблицы, поля могут быть доступны непосредственно, без необходимости определения, что они собой представляют или каков тип их данных. В нашем примере в таблице Readers поле №Билета – это первый столбец; поэтому Readers. Fields[0] равно значению №Билета для текущей выделенной записи. Заметьте, что массив начинается с индекса 0. Заметьте также, что для правильного обращения к данным должен быть известен тип данных.

Модификация полей в таблице

По умолчанию компонент TTable может использовать все поля связанной с ним таблицы. Кроме того, Delphi позволяет разработчику модифицировать используемые поля, основанные на вычислениях, и устанавливать атрибуты для каждого поля. Чтобы запросить редактор полей компонента TTable, дважды щелкните на экземпляре TTable. Это вызовет появление диалогового окна, которое позволяет вам добавлять, удалять и определять новые поля. Заголовок окна содержит имя формы и таблицы.

Это диалоговое окно обеспечивает также простой доступ к компонентам TFields. Поля являются производными от типа TField, с некоторой специальной информацией о типе данных. Например, если одно из полей – строка, поле должно иметь тип TStringField. Подобно другим компонентам, поля имеют свойства и события. Одно из преимуществ такого подхода состоит в том, что разные поля в таблице могут иметь разные свойства. Это удобно при необходимости защитить одно из полей от изменений, но разрешить пользователю модифицировать другие поля. Чтобы реализовать это, нужно установить значение свойства ReadOnly для поля, которое нужно защитить, равным True. Большое количество свойств поля определяет, как должны выравниваться данные – справа, слева или по центру отображаемого поля. Например, свойство Alignment. Кроме того, для чисел с плавающей запятой может быть установлено значение Precision (точность), которое указывает, как должны округляться числа. Можно установить отображаемые имена полей, в частности, русские имена.

Перемещение по записям

Навигатор обеспечивает возможность перемещения по таблице.

Создание интерфейса

Для создания интерфейса в Delphi обычно используются различные визуальные компоненты.

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

procedure TOsnForma. Rabotnik1Click (Sender: TObject);

begin

OsnTable. Active:=false;

OsnTable. TableName:='Работник';

Tag:=1;

Redakt;

OsnTable. Active:=true;

OsnForma. Caption:='Работник';

Komandirovka1. Enabled:=true;

Rabotnik1. Enabled:=false;

DenSredstva1. Enabled:=true;

Documenty1. Enabled:=true;

Detali1. Enabled:=true;

end;

 

procedure TOsnForma. DenSredstva1Click (Sender: TObject);

begin

OsnTable. Active:=false;

OsnTable. TableName:='Денежные средства';

Tag:=2;

Redakt;

OsnTable. Active:=true;

OsnForma. Caption:='Денежные средства';

Komandirovka1. Enabled:=true;

Rabotnik1. Enabled:=true;

DenSredstva1. Enabled:=false;

Documenty1. Enabled:=true;

Detali1. Enabled:=true;

end;

 

procedure TOsnForma. Documenty1Click (Sender: TObject);

begin

OsnTable. Active:=false;

OsnTable. TableName:='Сопроводительные документы';

Tag:=3;

Redakt;

OsnTable. Active:=true;

OsnForma. Caption:='Сопроводительные документы';

Komandirovka1. Enabled:=true;

Rabotnik1. Enabled:=true;

DenSredstva1. Enabled:=true;

Documenty1. Enabled:=false;

Detali1. Enabled:=true;

end;

 

procedure TOsnForma. Detali1Click (Sender: TObject);

begin

OsnTable. Active:=false;

OsnTable. TableName:='Детали, инструменты';

Tag:=4;

Redakt;

OsnTable. Active:=true;

OsnForma. Caption:='Детали, инструменты';

Komandirovka1. Enabled:=true;

Rabotnik1. Enabled:=true;

DenSredstva1. Enabled:=true;

Documenty1. Enabled:=true;

Detali1. Enabled:=false;

end;

 

procedure TOsnForma. Komandirovka1Click (Sender: TObject);

begin

OsnTable. Active:=false;

OsnTable. TableName:='Командировка';

Tag:=5;

Redakt;

OsnTable. Active:=true;

OsnForma. Caption:='Командировка';

Komandirovka1. Enabled:=false;

Rabotnik1. Enabled:=true;

DenSredstva1. Enabled:=true;

Documenty1. Enabled:=true;

Detali1. Enabled:=true;

end;

 

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

Редактирование осуществляется следующими процедурами программы

procedure TOsnForma. Redaktioravt1Click (Sender: TObject);

begin

Redakt;

RedForm. ShowModal;

end;

 

procedure TOsnForma. Redakt;

begin

case Tag of

1: with RedForm do begin

Label1. Caption:='Номер документа';

Label2. Caption:='ФИО';

Label3. Caption:='Должность';

Label4. Caption:='Телефон';

Label5. Caption:='Название отдела';

Label6. Caption:='Специализация';

Label7. Visible:=false;

DBEdit1. DataField:='№ документа';

DBEdit2. DataField:='ФИО';

DBEdit3. DataField:='Должность';

DBEdit4. DataField:='Телефон';

DBEdit5. DataField:='Название отдела';

DBEdit6. DataField:='Специализация';

DBEdit7. DataField:='';

DBEdit7. Visible:=false;

DBEdit6. Visible:=true;

Label6. Visible:=true;

end;

2: with RedForm do begin

Label1. Caption:='Номер запроса';

Label2. Caption:='Суточные';

Label3. Caption:='Оплата проезда';

Label4. Caption:='Оплата труда';

Label5. Caption:='Количество человек';

Label6. Caption:='Итого';

Label7. Visible:=false;

DBEdit1. DataField:='№ запроса';

DBEdit2. DataField:='Суточные';

DBEdit3. DataField:='Оплата проезда';

DBEdit4. DataField:='Оплата труда';

DBEdit5. DataField:='Количество человек';

DBEdit6. DataField:='Итого';

DBEdit7. DataField:='';

DBEdit7. Visible:=false;

DBEdit6. Visible:=true;

Label6. Visible:=true;

end;

3: with RedForm do begin

Label1. Caption:='Номер запроса';

Label2. Caption:='Номер документа';

Label3. Caption:='Название';

Label4. Caption:='Дата подписания';

Label5. Caption:='Кем подписан';

Label6. Visible:=false;

Label7. Visible:=false;

DBEdit1. DataField:='№ запроса';

DBEdit2. DataField:='№ документа';

DBEdit3. DataField:='Название';

DBEdit4. DataField:='Дата подписания';

DBEdit5. DataField:='Кем подписан';

DBEdit6. DataField:='';

DBEdit6. Visible:=false;

DBEdit7. DataField:='';

DBEdit7. Visible:=false;

end;

4: with RedForm do begin

Label1. Caption:='Номер запроса';

Label2. Caption:='Название';

Label3. Caption:='Количество';

Label4. Caption:='Стоимость каждой';

Label5. Caption:='Итого';

Label6. Visible:=false;

Label7. Visible:=false;

DBEdit1. DataField:='№ запроса';

DBEdit2. DataField:='Название';

DBEdit3. DataField:='Количество';

DBEdit4. DataField:='Стоимость каждой';

DBEdit5. DataField:='Итого';

DBEdit6. DataField:='';

DBEdit6. Visible:=false;

DBEdit7. DataField:='';

DBEdit7. Visible:=false;

end;

5: with RedForm do begin

Label1. Caption:='Номер запроса';

Label2. Caption:='Цель';

Label3. Caption:='Дата отбытия';

Label4. Caption:='Дата прибытия';

Label5. Caption:='Место назначения';

Label6. Caption:='Виды выполняемых работ';

Label7. Caption:='ФИО работника';

DBEdit1. DataField:='№ запроса';

DBEdit2. DataField:='Цель';

DBEdit3. DataField:='Дата прибытие';

DBEdit4. DataField:='Дата отбытия';

DBEdit5. DataField:='Место назначения';

DBEdit6. DataField:='Виды выполняемых работ';

DBEdit7. DataField:='ФИО работника';

DBEdit6. Visible:=true;

Label6. Visible:=true;

DBEdit7. Visible:=true;

Label7. Visible:=true;

end;

end;

end;

 

procedure TOsnForma. Ydalit1Click (Sender: TObject);

begin

if (MessageDlg('Вы уверены?', mtConfirmation, mbOkCancel, 0)=mrOk) then

OsnTable. Delete;

end;

 

procedure TOsnForma. Dobavit1Click (Sender: TObject);

begin

OsnTable. Insert;

Redakt;

RedForm. ShowModal;

if (OsnTable. Modified) then

OsnTable. Post;

end;

Дата: 2019-05-28, просмотров: 198.