
Лабораторные работы №1-6 - КИ МГОУ / lab2
.docxЛабораторная работа 2.
Тема: Форма для работы с одиночной таблицей.
Цель работы: Изучение компонентов Delphi, предназначенных для работы с одной таблицей БД и её полями, а также с навигационным способом доступа к данным, хранящимся в БД, на примере таблицы заказчиков.
Структура таблицы «Заказчики»
Главная форма приложения.
Форма «Заказчики».
Исходные тексты программных модулей.
-
Главная форма
unit fm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus;
type
TMain = class(TForm)
MainMenu1: TMainMenu;
NFile: TMenuItem;
NZak: TMenuItem;
NClose: TMenuItem;
procedure NCloseClick(Sender: TObject);
procedure NZakClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Main: TMain;
implementation
uses fb;
{$R *.dfm}
procedure TMain.NCloseClick(Sender: TObject);
begin
Close;
end;
procedure TMain.NZakClick(Sender: TObject);
begin
Fbase:=TFbase.Create(Application);
Fbase.ShowModal;
Fbase.Free;
end;
end.
-
Форма «Заказчики»
unit fb;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, DB, DBTables, Mask, DBCtrls, XPMan;
type
TFbase = class(TForm)
Adress: TGroupBox;
XPManifest1: TXPManifest;
LInd: TLabel;
LCity: TLabel;
LStreet: TLabel;
LHome: TLabel;
LApart: TLabel;
DEIndex: TDBEdit;
DECity: TDBEdit;
DSZak: TDataSource;
TZak: TTable;
DEStreet: TDBEdit;
DEHome: TDBEdit;
DEApart: TDBEdit;
LName: TLabel;
DEName: TDBEdit;
LSearch: TLabel;
ESearch: TEdit;
BSearch: TButton;
BClose: TBitBtn;
BFirst: TButton;
BPred: TButton;
BNext: TButton;
BLast: TButton;
procedure FormActivate(Sender: TObject);
procedure BCloseClick(Sender: TObject);
procedure BPredClick(Sender: TObject);
procedure BFirstClick(Sender: TObject);
procedure BNextClick(Sender: TObject);
procedure BLastClick(Sender: TObject);
procedure BSearchClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Fbase: TFbase;
implementation
{$R *.dfm}
procedure TFbase.FormActivate(Sender: TObject);
begin
TZak.IndexName:='Name_Ind';
Tzak.ReadOnly:=True;
TZak.Active:=true;
Tzak.First;
BFirst.Enabled:=false;
BPred.Enabled:=false;
end;
procedure TFbase.BCloseClick(Sender: TObject);
begin
TZak.Close;
end;
procedure TFbase.BPredClick(Sender: TObject);
begin
TZak.Prior;
if TZak.Bof then begin BPred.Enabled:=false; BFirst.Enabled:=False; end;
BNext.Enabled:=true;
BLast.Enabled:=true;
end;
procedure TFbase.BFirstClick(Sender: TObject);
begin
TZak.First;
BFirst.Enabled:=false;
BPred.Enabled:=false;
BNext.Enabled:=true;
BLast.Enabled:=true;
end;
procedure TFbase.BNextClick(Sender: TObject);
begin
TZak.Next;
if TZak.Eof then begin BNext.Enabled:=false; BLast.Enabled:=false; end;
BFirst.Enabled:=true;
BPred.Enabled:=true;
end;
procedure TFbase.BLastClick(Sender: TObject);
begin
TZak.Last;
BNext.Enabled:=false;
BLast.Enabled:=false;
BFirst.Enabled:=true;
BPred.Enabled:=true;
end;
procedure TFbase.BSearchClick(Sender: TObject);
begin
if not(TZak.Locate('Name_Zak',ESearch.Text,[loCaseInsensitive,loPartialKey])) then ShowMessage('Запись не найдена. Извините');
end;
end.