- •Анотація
- •1 Технологічна частина
- •1.1 Призначення та область застосування програмного продукту
- •1.2 Функціональні вимоги до програмного продукту
- •1.3 Кваліфікаційні вимоги до програмного продукту
- •1.4. Вимоги до умов експлуатації програмного продукту
- •2. Спеціальна частина
- •2.1 Структура інформаційної бази програмного продукту
- •2.2 Архітектура програмного продукту
- •2.3 Опис використаних стандартних компонентів
- •2.4 План тестування програмного продукту
- •2.5 Опис інтефейсу програмного продукту з користувачем
- •2.6 Інструкція по експлуатації програмного продукту
- •Висновки
- •Перелік використаних джерел та літератури
- •Результати тестування програмного продукту
- •Програмний код
Перелік використаних джерел та літератури
Митчелл К.Керман. Программирование и отладка в Delphi. Учебный курс. Москва – Санки-Петербург – Киев, 2003, - 669с.
Орлов С.А. Технологии разработки программного обеспечения. Учебник для ВУЗов. Москва-… 2002, - 623с.
Проектування інформаційних систем. Посібник під ред.. Д.е.н., професора В.С.Пономаренка. – К., ВЦ «Академія», 2002, - 542с.
Фленов. М. Библия Delphi. Санкт-Петербург, 2005, - 865с.
ДОДАТОК 1
Результати тестування програмного продукту
Тестування програмного продукту проведене згідно плану, наведенному в п.2.4.
На рис.8 представлений вигляд головного вікна програмного продукту після виконання декількох технологічних операцій в журналі дипетчера. Вигляд схеми стоянки повністю відповідає журналу.
Вигляд реєстру постійних клієнтів наведений на рис.9. Фрагмент реєстру місць зображений на рис.10.
Рис.8. Вигляд інтерфейсу програмного продукту в робочому стані
Рис.9 Реєстр
постійних клієнтів
Рис.10 Фрагмент
реєстру місць автостоянки
ДОДАТОК 2
Програмний код
unit Umain;
{Автостоянка}
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, ExtCtrls, Menus, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem;
Panel3: TPanel;
StringGrid2: TStringGrid;
N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem;
StringGrid3: TStringGrid; StringGrid4: TStringGrid; ScrollBox1: TScrollBox; N9: TMenuItem;
{власні методи}
procedure menucontrol;
procedure rowscontrol(sender: TObject; z: integer);
procedure openjurnal;
procedure savejurnal;
procedure openparam;
procedure saveparam;
procedure openklient;
procedure saveklient;
procedure paintsto;
procedure colrow(mes:integer);
procedure findklient(sender: TObject; key: string; kz: integer; var z: integer);
function whereklient(key: string): boolean;
procedure delinttabl(sender: TObject; nz: integer; var kz:integer);
{події компонентів}
procedure FormActivate(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
TKlient=record
vlas: string[40]; mark: string[20]; znak: string[10]; end;
TJurnal=record
kli : TKlient; datz: string[10]; timz: string[5]; datv: string[10]; timv: string[5]; mest: string[5]; end;
TMest=record
nom: string[5]; zan: string[1]; {'+' - зайнято, ' ' - вільно} end;
var Form1: TForm1;
Jur: TJurnal; fj: file of TJurnal; {змінні для роботи з журналом}
fp: text; {файлова змінна параметрів автостоянки}
kj: integer; {загальна кількість записів у журналі}
Mes: TMest; fm: file of TMest; {змінні для роботи з реєстром місць}
km: integer; {загальна кількість місць на стоянці}
kv: integer; {кількість вільних місць на стоянці}
Kli: TKlient; fk: file of TKlient; kk: integer; {змінні для роботи з реєстром постійних кліентів}
oper: char; {ознака операції в реєстрі: 'z'-в"їзд авто (новий запис в журналі);
'd'-видалення; 'r'-редагування; 'p'-перегляд реєстру постійних клієнтів}
cm,rm: integer; {координати клітинки таблиці для заданого місця}
yyy: boolean;
implementation
uses UDod, Uparam, UDialZRD, UKlient, UZnak;
{$R *.dfm}
{Контроль доступу до пунктів меню}
procedure TForm1.menucontrol;
begin
if kj=0 {журнал порожній}
then begin n4.Enabled:=true; n5.Enabled:=false; n6.Enabled:=false; n7.Enabled:=false; end
else
begin
if (stringgrid2.Cells[0,stringgrid2.Row]=''){в журналі виділено порожній запис}
then begin n6.Enabled:=false; n7.Enabled:=false; end else begin n6.Enabled:=true; n7.Enabled:=true; end;
if kv=0 {вільних місць немає} then n4.Enabled:=false else n4.Enabled:=true;
if km=kv {стоянка порожня} then n5.Enabled:=false else n5.Enabled:=true;
end;
end;
{Контроль кількості видимих рядків у журналі}
procedure TForm1.rowscontrol(sender: TObject; z: integer);
begin
if z>10 then (sender as Tstringgrid).RowCount:=z+1 else (sender as Tstringgrid).RowCount:=11;
end;
{Завантаження журналу з файлу}
procedure TForm1.openjurnal;
begin
kj:=0;
if fileexists('Jurnal') then begin
assignfile(fj,'Jurnal'); reset(fj);
while not eof(fj) do
begin kj:=kj+1; read(fj,Jur);
StringGrid2.Cells[0,kj]:=inttostr(kj);
StringGrid2.Cells[1,kj]:=Jur.kli.vlas;
StringGrid2.Cells[2,kj]:=Jur.kli.mark;
StringGrid2.Cells[3,kj]:=Jur.kli.znak;
StringGrid2.Cells[4,kj]:=Jur.datz;
StringGrid2.Cells[5,kj]:=Jur.timz;
StringGrid2.Cells[6,kj]:=Jur.datv;
StringGrid2.Cells[7,kj]:=Jur.timv;
StringGrid2.Cells[8,kj]:=Jur.mest;
if (Jur.mest<>'') and (Jur.datv='') then begin colrow(strtoint(Jur.mest)); StringGrid1.Cells[cm,rm]:='||'; end;
end;
closefile(fj);
end;
rowscontrol(StringGrid2,kj); menucontrol;
end;
{Запис журналу в файл}
procedure TForm1.savejurnal;
var j: integer;
begin
assignfile(fj,'Jurnal'); rewrite(fj);
for j:=1 to kj do begin
Jur.kli.vlas:=StringGrid2.Cells[1,j];
Jur.kli.mark:=StringGrid2.Cells[2,j];
Jur.kli.znak:=StringGrid2.Cells[3,j];
Jur.datz:=StringGrid2.Cells[4,j];
Jur.timz:=StringGrid2.Cells[5,j];
Jur.datv:=StringGrid2.Cells[6,j];
Jur.timv:=StringGrid2.Cells[7,j];
Jur.mest:=StringGrid2.Cells[8,j];
write(fj,Jur);
end;
closefile(fj);
end;
{Завантаження параметрів стоянки з файлу}
procedure TForm1.openparam;
var i: integer;
begin
km:=0; kv:=0;
if fileexists('Param') then begin
assignfile(fm,'Param'); reset(fm);
while not eof(fm) do begin
km:=km+1;
read(fm,Mes);
Form2.StringGrid1.Cells[0,km]:=Mes.nom;
if Mes.zan='' then kv:=kv+1 else Form2.StringGrid1.Cells[1,km]:=Mes.zan;
end;
closefile(fm);
form3.UpDown1.Position:=km;
end;
if km=0 {Параметри стоянки не визначені} then begin
km:=30; kv:=30;
for i:=1 to km do begin Form2.StringGrid1.Cells[0,i]:=inttostr(i); Form2.StringGrid1.Cells[1,i]:=''; end;
end;
form3.UpDown1.Position:=km;
rowscontrol(form2.StringGrid1,km); menucontrol; paintsto;
end;
{Запис параметрів стоянки в файл}
procedure TForm1.saveparam;
var m: integer;
begin
assignfile(fm,'Param'); rewrite(fm);
for m:=1 to km do begin
Mes.nom:=form2.StringGrid1.Cells[0,m];
Mes.zan:=form2.StringGrid1.Cells[1,m];
write(fm,Mes);
end;
closefile(fm);
end;
{Завантаження реєстру постійних клієнтів з файлу}
procedure TForm1.openklient;
begin
kk:=0;
if fileexists('Klient') then begin
assignfile(fk,'Klient'); reset(fk);
while not eof(fk) do begin
kk:=kk+1;
read(fk,Kli);
form5.StringGrid2.Cells[0,kk]:=inttostr(kk);
form5.StringGrid2.Cells[1,kk]:=kli.vlas;
form5.StringGrid2.Cells[2,kk]:=kli.mark;
form5.StringGrid2.Cells[3,kk]:=kli.znak;
end;
closefile(fk);
end;
rowscontrol(form5.StringGrid2,kk); menucontrol;
end;
{Збереження реєстру постійних клієнтів у файлі}
procedure TForm1.saveklient;
var j: integer;
begin
assignfile(fk,'Klient'); rewrite(fk);
for j:=1 to kk do begin
kli.vlas:=form5.StringGrid2.Cells[1,j];
kli.mark:=form5.StringGrid2.Cells[2,j];
kli.znak:=form5.StringGrid2.Cells[3,j];
write(fk,Kli);
end;
closefile(fk);
end;
{Відображення стоянки}
procedure TForm1.paintsto;
var i,r: integer;
begin
r:= km div 2;
stringgrid1.ColCount:=r; stringgrid3.ColCount:=r; stringgrid4.ColCount:=r;
stringgrid1.Width:=r*40+3; stringgrid3.Width:=r*40+3; stringgrid4.Width:=r*40+3;
for i:=0 to r-1 do stringgrid3.Cells[i,0]:=inttostr(i+1);
for i:=0 to r-1 do stringgrid4.Cells[i,0]:=inttostr(km-i);
end;
{Визначення координат клітинки таблиці для заданого місця стоянки}
procedure TForm1.colrow(mes:integer);
var p: integer;
begin
p:=km div 2;
if mes<=p then begin cm:=mes-1; rm:=0; end
else begin cm:=km-mes; rm:=2; end;
end;
{Пошук клієнта з номерним знаком}
procedure TForm1.findklient(sender: TObject; key: string; kz: integer; var z: integer);
var i: integer;
begin
z:=0;
for i:=1 to kz do
if ((sender as TStringgrid).Cells[3,i]=key) and ((sender as TStringgrid).Cells[6,i]='') then begin z:=i; break; end;
end;
{Перевірка наявності машини з заданим номерним знаком на стоянці}
function TForm1.whereklient(key: string): boolean;
var i: integer;
begin
whereklient:=false;
for i:=1 to kj do
if (StringGrid2.Cells[3,i]=key) and (StringGrid2.Cells[6,i]='') then whereklient:=true;
end;
{Видалення рядків таблиць}
procedure TForm1.delinttabl(sender: TObject; nz: integer; var kz:integer);
var i: integer;
begin
for i:=nz to kz-1 do (Sender as TStringGrid).Rows[i]:=(Sender as TStringGrid).Rows[i+1];
(Sender as TStringGrid).Rows[kz].Clear;
kz:=kz-1;
for i:=1 to kz do (Sender as TStringGrid).Cells[0,i]:=inttostr(i);
end;
{Початкові установки інтерфейсу проекту}
procedure TForm1.FormActivate(Sender: TObject);
begin
yyy:=false;
stringgrid2.Cells[0,0]:='№';
stringgrid2.Cells[1,0]:='Власник авто';
stringgrid2.Cells[2,0]:='Марка авто';
stringgrid2.Cells[3,0]:='Номер авто';
stringgrid2.Cells[4,0]:='Дата в"їзду';
stringgrid2.Cells[5,0]:='Час в"їзду';
stringgrid2.Cells[6,0]:='Дата виїзду';
stringgrid2.Cells[7,0]:='Час виїзду';
stringgrid2.Cells[8,0]:='Місце';
openparam; openjurnal; openklient;
end;
{Параметри стоянки}
procedure TForm1.N1Click(Sender: TObject);
begin
form3.Left:=form1.Left+165; form3.Top:=form1.Top+165; form3.ShowModal;
end;
{В"їзд авто}
procedure TForm1.N4Click(Sender: TObject);
begin
oper:='z'; form4.Caption:=n4.Caption; form4.ShowModal;
end;
{Реєстр місць}
procedure TForm1.N8Click(Sender: TObject);
begin
form2.ShowModal;
end;
{Керування доступом до команд меню під час "навігації" по журналу}
procedure TForm1.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
menucontrol;
end;
{Виїзд авто}
procedure TForm1.N5Click(Sender: TObject);
begin
form6.Left:=form1.Left+165; form6.Top:=form1.Top+165; form6.ShowModal;
end;
{Редагування запису}
procedure TForm1.N6Click(Sender: TObject);
begin
oper:='r'; form4.ShowModal;
end;
{Видалення запису}
procedure TForm1.N7Click(Sender: TObject);
var i,k: integer; key: string;
begin
{Номерний знак машини у виділеному рядку журналу}
key:=StringGrid2.Cells[3,StringGrid2.row];
{Обчислюється кількість записів у журналі для виділеного в ньому номера машини}
k:=0;
for i:=1 to kj do if StringGrid2.Cells[3,i]=key then k:=k+1;
i:=strtoint(StringGrid2.Cells[8,StringGrid2.row]);
form2.StringGrid1.Cells[1,i]:=''; {Звільняється місце}
delinttabl(StringGrid2,StringGrid2.Row,kj); colrow(i);
StringGrid1.Cells[cm,rm]:='';
if k=1 {якщо видалений запис був єдиним для заданого номерного знака}
then {а клієнт був зареєстрований як постійний,}
begin {то він видаляється з реєстру постійних клієнтів}
findklient(Form5.StringGrid2, key, kk, i);
if i<>0 then delinttabl(Form5.StringGrid2,i,kk);
end;
rowscontrol(StringGrid2,kj); rowscontrol(form5.StringGrid2,kk); menucontrol;
{Якщо видалено останній запис з журналу для заданого номера,
то клієнт видаляється з реєстру постійних}
if k>1 then ;
end;
{Вихід з проекту зі збереженням даних у файлах}
procedure TForm1.N3Click(Sender: TObject);
begin
saveparam; savejurnal; saveklient;
close;
end;
{Реєстр постійних кліентів}
procedure TForm1.N9Click(Sender: TObject);
begin
oper:='p'; form5.ShowModal;
end;
{Вихід з використанням системної кнопки}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
saveparam; savejurnal; saveklient;
end;
end.
unit Uparam;
{Визначення кількості місць на стоянці}
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls;
type
TForm3 = class(TForm)
LabeledEdit1: TLabeledEdit; UpDown1: TUpDown; BitBtn1: TBitBtn; BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
end;
var Form3: TForm3;
implementation
uses Umain, UDod, UKlient;
{$R *.dfm}
{Введення кількості місць}
procedure TForm3.BitBtn1Click(Sender: TObject);
var i: integer;
begin
{Знищення інформаційної бази}
for i:=1 to kj do form1.StringGrid2.Rows[i].Clear;
for i:=1 to kk do form5.StringGrid2.Rows[i].Clear;
form2.StringGrid1.Cols[1].Clear;
kj:=0; kk:=0;
km:=UpDown1.Position;
for i:=1 to km do form2.StringGrid1.Cells[0,i]:=inttostr(i);
for i:=0 to form1.StringGrid1.ColCount-1 do form1.StringGrid1.Rows[i].Clear;
form1.paintsto;
end;
end.
unit UDialZRD;
{Діалогова форма редагування журналу}
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;
type
TForm4 = class(TForm)
BitBtn1: TBitBtn; BitBtn2: TBitBtn; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel;
Edit1: TEdit; Edit3: TEdit; Button3: TButton; Edit2: TEdit; Edit4: TEdit; Edit5: TEdit; ComboBox1: TComboBox;
CheckBox1: TCheckBox;
procedure FormActivate(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
end;
var Form4: TForm4;
implementation
uses UDod, Umain, UKlient;
{$R *.dfm}
{Настройка інтерфейсу при відкритті діалогового вікна в"їзду авто}
procedure TForm4.FormActivate(Sender: TObject);
var t: string; i: integer;
begin
combobox1.Clear;
for i:=1 to km do
if form2.StringGrid1.Cells[1,i]='' then combobox1.Items.Add(form2.StringGrid1.Cells[0,i]);
case oper of
'z': begin
edit1.Clear; edit2.Clear; edit3.Clear;
edit4.Text:=datetostr(date());
t:=copy(timetostr(time()),1,5);
if copy(t,5,1)=':' then begin delete(t,5,1); t:='0'+t; end;
edit5.Text:=t;
CheckBox1.Checked:=false;
bitbtn1.Enabled:=false;
end;
'r': begin
i:=form1.StringGrid2.Row;
edit1.Text :=form1.StringGrid2.Cells[1,i];
edit2.Text :=form1.StringGrid2.Cells[2,i];
edit3.Text :=form1.StringGrid2.Cells[3,i];
edit4.Text :=form1.StringGrid2.Cells[4,i];
edit5.Text :=form1.StringGrid2.Cells[5,i];
combobox1.Text:=form1.StringGrid2.Cells[8,i];
form1.findklient(form5.StringGrid2, edit3.Text, kk , i);
if i<>0 then CheckBox1.Checked:=true;
end;
end;
end;
{Керування доступом до кнопки "Ввести"}
procedure TForm4.Edit1Change(Sender: TObject);
begin
if (edit1.Text='') or (edit2.Text='') or (edit3.Text='') or (combobox1.Text='') then bitbtn1.Enabled:=false else bitbtn1.Enabled:=true;
end;
{Показ реєстру постійних клієнтів}
procedure TForm4.Button3Click(Sender: TObject);
begin
form5.ShowModal;
end;
{Ввести або редагувати дані в журналі та реєстрі постійних клієнтів}
procedure TForm4.BitBtn1Click(Sender: TObject);
var nz,ms: integer; y: boolean;
begin
y:=false; nz:=0;
case oper of
'z': begin
y:=form1.whereklient(edit3.Text);
if y then showmessage('Машина клієнта вже знаходиться на стоянці') else begin kj:=kj+1; nz:=kj; end;
end;
'r': begin
nz:=form1.StringGrid2.Row;
ms:=strtoint(form1.StringGrid2.Cells[8,nz]);
form1.colrow(ms);
form1.StringGrid1.Cells[cm,rm]:='';
form2.StringGrid1.Cells[1,ms]:='';
kv:=kv-1;
end;
end;
if not y then
begin
form1.StringGrid2.Cells[0,nz]:=inttostr(nz);
form1.StringGrid2.Cells[1,nz]:=edit1.Text;
form1.StringGrid2.Cells[2,nz]:=edit2.Text;
form1.StringGrid2.Cells[3,nz]:=edit3.Text;
form1.StringGrid2.Cells[4,nz]:=edit4.Text;
form1.StringGrid2.Cells[5,nz]:=edit5.Text;
form1.StringGrid2.Cells[8,nz]:=combobox1.Text;
form1.colrow(strtoint(combobox1.Text));
form1.StringGrid1.Cells[cm,rm]:='||';
form2.StringGrid1.Cells[1,strtoint(combobox1.Text)]:='+';
kv:=kv-1;
form1.findklient(form5.StringGrid2, edit3.Text, kk, nz);
if CheckBox1.Checked then begin {реєстрація або редагування постійного клієнта в реєстрі}
if nz=0 then begin kk:=kk+1; nz:=kk; end;
form5.StringGrid2.Cells[0,nz]:=inttostr(nz);
form5.StringGrid2.Cells[1,nz]:=edit1.Text;
form5.StringGrid2.Cells[2,nz]:=edit2.Text;
form5.StringGrid2.Cells[3,nz]:=edit3.Text;
end
else begin {видалення постійного клієнта з реєстру}
if nz<>0 then form1.delinttabl(Form5.StringGrid2,nz,kk);
end;
form1.rowscontrol(form5.StringGrid2,kj); form1.menucontrol;
end;
end;
{}
procedure TForm4.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
key:=chr(0);
end;
end.
unit UZnak;
{Виїзд автомобіля з автостоянки}
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;
type
TForm6 = class(TForm)
Label6: TLabel; ComboBox1: TComboBox; BitBtn1: TBitBtn; BitBtn2: TBitBtn;
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
end;
var Form6: TForm6;
implementation
uses Umain, UDod;
{$R *.dfm}
{Настройка інтерфейсу при відкритті діалогового вікна виїзду авто}
procedure TForm6.FormActivate(Sender: TObject);
var i: integer;
begin
BitBtn1.Enabled:=false; ComboBox1.Clear;
for i:=1 to kj do
if form1.StringGrid2.Cells[6,i]='' then ComboBox1.Items.Add(form1.StringGrid2.Cells[3,i]);
end;
{Зафіксувати виїзд авто в журналі}
procedure TForm6.BitBtn1Click(Sender: TObject);
var r,m: integer; t: string;
begin
{Фіксування в журналі}
form1.findklient(form1.StringGrid2, combobox1.Text, kj, r);
form1.StringGrid2.Cells[6,r]:=datetostr(date());
t:=copy(timetostr(time()),1,5);
if copy(t,5,1)=':' then begin delete(t,5,1); t:='0'+t; end;
form1.StringGrid2.Cells[7,r]:=t;
m:=strtoint(form1.StringGrid2.Cells[8,r]);
form1.colrow(m);
form1.StringGrid1.Cells[cm,rm]:='';
{Звільнення місця}
form2.StringGrid1.Cells[1,m]:='';
kv:=kv+1;
form1.menucontrol;
end;
{Керування доступом до кнопки "Ввести" при фіксуванні виїзду авто в журналі }
procedure TForm6.ComboBox1Change(Sender: TObject);
begin
if combobox1.Text='' then BitBtn1.Enabled:=false else BitBtn1.Enabled:=true;
end;
end.
unit UKlient;
{Реєстр постійних клієнтів}
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls, Buttons;
type
TForm5 = class(TForm)
StringGrid2: TStringGrid; BitBtn1: TBitBtn; BitBtn2: TBitBtn;
procedure StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
end;
var Form5: TForm5;
implementation
uses UDialZRD, Umain;
{$R *.dfm}
{Керування доступом до кнопки "Ввести" під час "навігації" по реєстру постійних клієнтів}
procedure TForm5.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if StringGrid2.Cells[0,ARow]='' then BitBtn1.Enabled:=false else BitBtn1.Enabled:=true;
end;
{Початкові установки інтерфейсу з реєстром постійних клієнтів}
procedure TForm5.FormActivate(Sender: TObject);
begin
stringgrid2.Cells[0,0]:='№';
stringgrid2.Cells[1,0]:='Власник авто';
stringgrid2.Cells[2,0]:='Марка авто';
stringgrid2.Cells[3,0]:='Номер авто';
case oper of
'z','r': begin BitBtn1.Visible:=true; BitBtn2.Visible:=true end;
'p' : begin BitBtn1.Visible:=false; BitBtn2.Visible:=false end;
end;
end;
{Введення даних про постійного клієнта в діалогове вікно}
procedure TForm5.BitBtn1Click(Sender: TObject);
begin
{Первірка наявності машини клієнта на автостоянці}
if form1.whereklient(form1.StringGrid2.Cells[3,form1.StringGrid2.Row])
then showmessage('Машина клієнта вже знаходиться на стоянці')
else begin
form4.Edit1.Text:=StringGrid2.Cells[1,StringGrid2.Row];
form4.Edit2.Text:=StringGrid2.Cells[2,StringGrid2.Row];
form4.Edit3.Text:=StringGrid2.Cells[3,StringGrid2.Row];
end;
end;
end.