
Лабораторные работы №1-6 - КИ МГОУ / lab3
.docxЛабораторная работа № 4
Использование DBGrid для управления таблицей.
Цель работы: Изучение свойств, событий и методов компонента DBGrid и приемов построения интерфейса пользователя с использованием DBGrid нВ примере таблицы изделий.
Структура таблицы «Товары»
Окно программы.
Код программы.
unit ft;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, StdCtrls, Grids, DBGrids;
type
TFTov = class(TForm)
TTovary: TTable;
DSTovary: TDataSource;
DBGrid1: TDBGrid;
ESearch: TEdit;
LSearch: TLabel;
QueryTov: TQuery;
BSearch: TButton;
TDZak: TTable;
procedure FormActivate(Sender: TObject);
procedure TTovaryAfterInsert(DataSet: TDataSet);
procedure FormCreate(Sender: TObject);
procedure TTovaryBeforeDelete(DataSet: TDataSet);
procedure BSearchClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FTov: TFTov;
implementation
{$R *.dfm}
procedure TFTov.FormActivate(Sender: TObject);
begin
TTovary.IndexName:='Nazv_Ind';
TTovary.Active:=True;
end;
procedure TFTov.TTovaryAfterInsert(DataSet: TDataSet);
var ms:variant;
begin
QueryTov.SQL.Clear;
QueryTov.SQL.Add('SELECT MAX(Code_Izd) FROM Tovary');
QueryTov.Active:=true;
ms:=QueryTov.FieldByName('MAX OF Code_Izd').asVariant;
TTovary.FieldByName('Code_Izd').AsVariant:=ms+1;
QueryTov.SQL.Clear;
QueryTov.Close;
end;
procedure TFTov.FormCreate(Sender: TObject);
begin
TTovary.Close;
end;
procedure TFTov.TTovaryBeforeDelete(DataSet: TDataSet);
var cod:variant;
begin
cod:=TTovary.FieldByname('Code_Izd').AsVariant;
QueryTov.SQL.Clear;
QueryTov.SQL.Add('SELECT * FROM Zakazchik WHERE Zakazchik.Code_Izd =cod');
QueryTov.Active:=true;
if not(QueryTov.IsEmpty) then begin ShowMessage('Запись удалить невозможно. Извините'); Abort; end
else
if MessageDlg('Удалить запись',mtConfirmation,[mbOK,mbCancel],0)=1 then TTovary.Delete else Abort;
end;
procedure TFTov.BSearchClick(Sender: TObject);
begin
if not(TTovary.Locate('NAzv_Izd',ESearch.Text,[loCaseInsensitive,loPartialKey])) then ShowMessage('Запись не найдена. Простите');
end;
end.