Курсовые работы / ПРИС П _21
.pdfПРИЛОЖЕНИЕ А Диаграмма IDEF0
Рисунок А.1 – Декомпозиция блока «Поступление книг»
Рисунок А.2 – Декомпозиция блока «Ведение БД»
32
Рисунок А.3 – Декомпозиция блока «Выдача книг»
Рисунок А.4 – Декомпозиция блока «Возврат»
Рисунок А.5 – Декомпозиция блока «Формирование отчетной информации»
33
ПРИЛОЖЕНИЕ Б
Листинг программы
Листинг Б.1 – Main_menu
unit Main_menu; |
|
|
|
|
|
var |
|
|
|
interface |
Form1: TForm1; |
|
|
|
|
posetitel:string; |
|
|
|
uses |
|
|
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, |
implementation |
|
|
|
Forms, |
|
|
|
|
Dialogs, Menus, IniFiles, jpeg, ExtCtrls, StdCtrls; |
Uses |
Fond,Chitatel,Vidacha,Zakaz, |
Oplata, |
Zadolgniki, |
|
Nevip_zakaz,Dolgniki,Otbor,Sost_fond, |
|
|
|
type |
Data_modul,Parol,Smena_parol; |
|
|
|
TForm1 = class(TForm) |
|
|
|
|
MainMenu1: TMainMenu; |
|
|
|
|
N1: TMenuItem; |
{$R *.dfm} |
|
|
|
N2: TMenuItem; |
|
|
|
|
N22: TMenuItem; |
procedure TForm1.N2Click(Sender: TObject); |
|
|
|
N3: TMenuItem; |
begin |
|
|
|
N5: TMenuItem; |
FFond:=TFFond.Create(Self); |
|
|
|
N6: TMenuItem; |
FFond.ShowModal; |
|
|
|
N7: TMenuItem; |
end; |
|
|
|
N8: TMenuItem; |
|
|
|
|
N9: TMenuItem; |
procedure TForm1.N22Click(Sender: TObject); |
|
|
|
N10: TMenuItem; |
begin |
|
|
|
N11: TMenuItem; |
CChitatel:=TCChitatel.Create(Self); |
|
|
|
N12: TMenuItem; |
CChitatel.ShowModal; |
|
|
|
N4: TMenuItem; |
end; |
|
|
|
N13: TMenuItem; |
|
|
|
|
N14: TMenuItem; |
procedure TForm1.N5Click(Sender: TObject); |
|
|
|
N15: TMenuItem; |
begin |
|
|
|
N16: TMenuItem; |
VVidacha:=TVVidacha.Create(Self); |
|
|
|
OpenDialog1: TOpenDialog; |
VVidacha.ShowModal; |
|
|
|
N17: TMenuItem; |
end; |
|
|
|
N18: TMenuItem; |
|
|
|
|
N19: TMenuItem; |
procedure TForm1.N3Click(Sender: TObject); |
|
|
|
N20: TMenuItem; |
begin |
|
|
|
N21: TMenuItem; |
ZZakaz:=TZZakaz.Create(Self); |
|
|
|
Image1: TImage; |
ZZakaz.ShowModal; |
|
|
|
Label3: TLabel; |
end; |
|
|
|
Label1: TLabel; |
|
|
|
|
Label2: TLabel; |
procedure TForm1.N6Click(Sender: TObject); |
|
|
|
Timer1: TTimer; |
begin |
|
|
|
Label4: TLabel; |
OOplata:=TOOplata.Create(Self); |
|
|
|
procedure N2Click(Sender: TObject); |
OOplata.ShowModal; |
|
|
|
procedure N22Click(Sender: TObject); |
end; |
|
|
|
procedure N5Click(Sender: TObject); |
|
|
|
|
procedure N3Click(Sender: TObject); |
procedure TForm1.N8Click(Sender: TObject); |
|
|
|
procedure N6Click(Sender: TObject); |
begin |
|
|
|
procedure N8Click(Sender: TObject); |
ZZadolgniki:=TZZadolgniki.Create(Self); |
|
|
|
procedure N9Click(Sender: TObject); |
ZZadolgniki.ShowModal; |
|
|
|
procedure N10Click(Sender: TObject); |
end; |
|
|
|
procedure N11Click(Sender: TObject); |
|
|
|
|
procedure N12Click(Sender: TObject); |
procedure TForm1.N9Click(Sender: TObject); |
|
|
|
procedure N13Click(Sender: TObject); |
begin |
|
|
|
procedure N15Click(Sender: TObject); |
NNevip_zakaz:=TNNevip_zakaz.Create(Self); |
|
|
|
procedure N16Click(Sender: TObject); |
NNevip_zakaz.ShowModal; |
|
|
|
procedure N18Click(Sender: TObject); |
end; |
|
|
|
procedure N19Click(Sender: TObject); |
|
|
|
|
procedure N21Click(Sender: TObject); |
procedure TForm1.N10Click(Sender: TObject); |
|
|
|
procedure Timer1Timer(Sender: TObject); |
begin |
|
|
|
procedure FormCreate(Sender: TObject); |
DDolgniki:=TDDolgniki.Create(Self); |
|
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction); |
DDolgniki.ShowModal; |
|
|
|
private |
end; |
|
|
|
{ Private declarations } |
|
|
|
|
public |
procedure TForm1.N11Click(Sender: TObject); |
|
|
|
{ Public declarations } |
begin |
|
|
|
end; |
OOtbor:=TOOtbor.Create(Self); |
|
|
|
|
34 |
|
|
|
OOtbor.ShowModal;
end;
procedure TForm1.N12Click(Sender: TObject); begin
SSost_fond:=TSSost_fond.Create(Self); SSost_fond.ShowModal;
end;
procedure TForm1.N13Click(Sender: TObject); // связь с бд var F:TiniFile;
DBPath:widestring; begin
buttonSelected:=MessageDlg('Изменить путь к базе данных?',mtInformation, mbOKCancel, 0);
if buttonSelected = mrOK then begin
F:=TiniFile.Create(ExtractFilePath(Application.ExeName)+'Options.ini');
if OpenDialog1.Execute then
begin
DBPath:=ExtractFilePath(OpenDialog1.FileName);
F.WriteString('Section_DBPath','Path',DBPath);
DM.ADOConnection1.Close;
DM.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLE DB.4.0;Data Source='+OpenDialog1.FileName+';Persist Security Info=False';
DM.ADOConnection1.Open;
end;
F.Free; end
end;
procedure TForm1.N15Click(Sender: TObject); begin
Form1.Close;
end;
procedure TForm1.N16Click(Sender: TObject); begin
MessageDlg('Программа "Движение книжного фонда в библиотеке" представляет собой файл-серверное приложение. В данном приложении'+
'реализованы такие возможности как: просмотр сведений о книгах, читателях, заказах, выдаче, видах штрафов и оплате;'+
'реализована возможность получения информации о должниках и задолжниках, о невыполненных заказах, получения списка литературы и ее отбор по критериям,'+
'ознакомление с состоянием фонда библиотеки; также реализован поиск по всем полям'+
'для нахождения необходимой информации. Программа поддерживает многопользовательский режим работы.', mtInformation,[mbOk], 0);
end;
procedure TForm1.N18Click(Sender: TObject); var
ogPath:PChar; buttonSelected : Integer;
begin
buttonSelected:=MessageDlg('Программа будет перезапущена. ',mtInformation, mbOKCancel, 0);
if buttonSelected = mrOK then begin
ogPath:=PChar(Application.ExeName); WinExec(ogPath,SW_SHOW); Application.Terminate;
end;
end;
procedure TForm1.N19Click(Sender: TObject); begin
SSmena_parol:=TSSmena_parol.Create(Self); SSmena_parol.ShowModal;
end;
35
procedure TForm1.N21Click(Sender: TObject); var F:TiniFile;
DBPath1:string; begin
F:=TiniFile.Create(ExtractFilePath(Application.ExeName)+'Options.ini');
DBPath1:=F.ReadString('Section_DBPath','Path','');
F.Free;
CopyFile(pchar(DBPath1+'biblio.mdb'),pchar(DBPath1+'Copy_biblio.md b'),false);
MessageDlg('Создана резервная копия БД ',mtInformation, [mbOk], 0);
end;
procedure TForm1.Timer1Timer(Sender: TObject); begin
Label1.Caption:=timetostr(now);
Label2.Caption:=DateToStr(now);
end;
procedure TForm1.FormCreate(Sender: TObject); begin
if PParol.DBLookupComboBox1.Text='АДМИНИСТРАТОР' then begin
N7.Visible:=true; // отчеты N12.Enabled:=true; // состояние фонда N11.Enabled:=true; // отбор литературы N8.Enabled:=true; // задолжники N9.Enabled:=true; // невыполненные заказы N10.Enabled:=true; // должники N4.Enabled:=true; // файл N1.Enabled:=true; // справочники N17.Enabled:=true; // сервис N19.Visible:=true; // смена пароля N21.Visible:=true; // резервное копирование N16.Enabled:=true; // справка
end;
if PParol.DBLookupComboBox1.Text='БИБЛИОТЕКАРЬ' then begin
N7.Visible:=true; // отчеты N12.Enabled:=true; // состояние фонда N11.Enabled:=true; // отбор литературы N8.Enabled:=true; // задолжники N9.Enabled:=false; // невыполненные заказы N10.Enabled:=false; // должники N4.Enabled:=true; // файл N1.Enabled:=true; // справочники N17.Enabled:=true; // сервис N19.Visible:=true; // смена пароля N21.Visible:=true; // резервное копирование N16.Enabled:=true; // справка
end;
if PParol.DBLookupComboBox1.Text='ГОСТЬ' then begin
N7.Visible:=false; // отчеты N12.Enabled:=false; // состояние фонда N11.Enabled:=false; // отбор литературы N8.Enabled:=false; // задолжники N9.Enabled:=false; // невыполненные заказы N10.Enabled:=false; // должники N4.Enabled:=true; // файл N1.Enabled:=true; // справочники N17.Enabled:=true; // сервис N19.Visible:=false; // смена пароля N21.Visible:=false; // резервное копирование N16.Enabled:=true; // справка
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin DM.ADOConnection1.Connected:=False; Application.Terminate;
end;
end.
Листинг Б.2 – Data_modul
unit Data_modul; |
OtborSource2: TDataSource; |
|
|
|
|
|
|
Sost_fondQuery1: TADOQuery; |
|
|
|
||
interface |
Sost_fondSource1: TDataSource; |
|
|
|
||
|
ParolQuery1: TADOQuery; |
|
|
|
|
|
uses |
ParolSource1: TDataSource; |
|
|
|
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, |
ADOQuery1: TADOQuery; |
|
|
|
|
|
Forms, |
Smena_parolQuery1: TADOQuery; |
|
|
|
||
Dialogs, ExtCtrls, DB, ADODB, StdCtrls, DBCtrls, Mask, Grids, |
Smena_parolSource1: TDataSource; |
|
|
|
||
DBGrids, |
VidachaQuery3: TADOQuery; |
|
|
|
||
jpeg, ComCtrls, DateUtils; |
VidachaSource3: TDataSource; |
|
|
|
||
|
procedure ChitatelQuery1BeforePost(DataSet: TDataSet); |
|
||||
type |
procedure VidachaQuery1BeforePost(DataSet: TDataSet); |
|
||||
TDM = class(TForm) |
procedure ZakazQuery1BeforePost(DataSet: TDataSet); |
|
||||
FondSource1: TDataSource; |
procedure OplataQuery1CalcFields(DataSet: TDataSet); |
|
||||
FondQuery1: TADOQuery; |
procedure FormCreate(Sender: TObject); |
|
|
|||
ADOConnection1: TADOConnection; |
private |
|
|
|
|
|
FondQuery2: TADOQuery; |
{ Private declarations } |
|
|
|
|
|
CheckQuery1: TADOQuery; |
public |
|
|
|
|
|
CheckSource1: TDataSource; |
{ Public declarations } |
|
|
|
|
|
ChitatelQuery1: TADOQuery; |
end; |
|
|
|
|
|
ChitatelSource1: TDataSource; |
|
|
|
|
|
|
ChitatelQuery2: TADOQuery; |
var |
|
|
|
|
|
VidachaSource1: TDataSource; |
DM: TDM; |
|
|
|
|
|
VidachaQuery1: TADOQuery; |
|
|
|
|
|
|
VidachaQuery2: TADOQuery; |
implementation |
|
|
|
|
|
ZakazSource1: TDataSource; |
|
|
|
|
|
|
ZakazQuery1: TADOQuery; |
uses |
Fond, |
Chitatel, |
Vidacha,Zakaz,Oplata, |
||
ZakazQuery2: TADOQuery; |
Zadolgniki,Nevip_zakaz,Dolgniki,Otbor,Sost_fond,Parol,Smena_parol; |
|
||||
OplataQuery1: TADOQuery; |
|
|
|
|
|
|
OplataSource1: TDataSource; |
|
|
|
|
|
|
OplataQuery2: TADOQuery; |
{$R *.dfm} |
|
|
|
|
|
OplataQuery1ch_nomer: TIntegerField; |
|
|
|
|
|
|
OplataQuery1f_nazvanie: TWideStringField; |
procedure TDM.ChitatelQuery1BeforePost(DataSet: TDataSet); |
|
||||
OplataQuery1f_vid: TWideStringField; |
begin |
|
|
|
|
|
OplataQuery1v_data: TDateTimeField; |
if (CChitatel.DBEdit2.Text='') or (CChitatel.DBEdit3.Text='') or |
|||||
OplataQuery1v_pred_vozv: TDateTimeField; |
(CChitatel.DBEdit4.Text='') |
or |
(CChitatel.DBEdit5.Text='') |
or |
||
OplataQuery1v_real_vozv: TDateTimeField; |
(CChitatel.DBEdit6.Text='') then |
|
|
|
||
OplataQuery1prosroch: TIntegerField; |
begin |
|
|
|
|
|
OplataQuery1dolg: TIntegerField; |
MessageDlg('Введите все данные',mtError,[mbOk],0); |
|
||||
ShtrafQuery1: TADOQuery; |
Abort; |
|
|
|
|
|
ShtrafSource1: TDataSource; |
end; |
|
|
|
|
|
ZadolgnikiQuery1: TADOQuery; |
end; |
|
|
|
|
|
ZadolgnikiSource1: TDataSource; |
|
|
|
|
|
|
Nevip_zakQuery1: TADOQuery; |
procedure TDM.VidachaQuery1BeforePost(DataSet: TDataSet); |
|
||||
Nevip_zakSource1: TDataSource; |
begin |
|
|
|
|
|
DolgnikiQuery1: TADOQuery; |
if |
(VVidacha.DBLookupComboBox1.Text='') |
or |
|||
DolgnikiSource1: TDataSource; |
(VVidacha.DBLookupComboBox2.Text='') |
|
or |
|||
OtborQuery1: TADOQuery; |
(VVidacha.DBEdit2.Text='') or (VVidacha.DBEdit3.Text='') then |
|
||||
OtborSource1: TDataSource; |
begin |
|
|
|
|
|
OtborQuery2: TADOQuery; |
MessageDlg('Введите все данные!',mtError,[mbOk],0); |
|
||||
|
36 |
|
|
|
|
|
|
Abort; |
|
|
|
|
if |
|
end; |
|
|
|
|
OOplata.DBGrid1.DataSource.DataSet.FieldByName('prosroch').Value< |
end; |
|
|
|
|
0 then |
|
|
|
|
|
|
|
OplataQuery1prosroch.AsInteger:=0; |
procedure TDM.ZakazQuery1BeforePost(DataSet: TDataSet); |
|
if |
||||
begin |
|
|
|
|
OOplata.DBGrid1.DataSource.DataSet.FieldByName('f_vid').AsString=' |
|
if |
(ZZakaz.DBEdit2.Text='') |
or |
(ZZakaz.DBEdit3.Text='') |
or |
УЧЕБНАЯ' then |
|
(ZZakaz.DBEdit4.Text='') |
or |
(ZZakaz.DBEdit5.Text='') |
or |
OplataQuery1dolg.AsInteger:=2*OplataQuery1prosroch.AsInteger |
||
(ZZakaz.DBEdit6.Text='') |
or |
|
(ZZakaz.DBEdit7.Text='') |
or |
else |
|
(ZZakaz.DBEdit8.Text='') |
or |
|
(ZZakaz.DBEdit9.Text='') |
or |
OplataQuery1dolg.AsInteger:=1*OplataQuery1prosroch.AsInteger; } |
|
(ZZakaz.DBComboBox1.Text='') then |
|
|
end; |
|||
|
begin |
|
|
|
|
|
|
MessageDlg('Введите все данные!',mtError,[mbOk],0); |
|
procedure TDM.FormCreate(Sender: TObject); |
|||
|
Abort; |
|
|
|
|
begin |
|
end; |
|
|
|
|
ChitatelQuery1.Open; |
end; |
|
|
|
|
ChitatelQuery2.Open; |
|
|
|
|
|
|
|
DolgnikiQuery1.Open; |
procedure TDM.OplataQuery1CalcFields(DataSet: TDataSet); |
|
FondQuery1.Open; |
||||
var |
|
|
|
|
FondQuery2.Open; |
|
a:TDate; |
|
|
|
|
Nevip_zakQuery1.Open; |
|
begin |
|
|
|
|
OplataQuery1.Open; |
|
{if |
|
|
|
|
OtborQuery1.Open; |
|
OOplata.DBGrid1.DataSource.DataSet.FieldByName('v_real_vozv').Val |
OtborQuery2.Open; |
|||||
ue=Null then |
|
|
|
|
ParolQuery1.Open; |
|
begin |
|
|
|
|
ShtrafQuery1.Open; |
|
|
a:=Date; |
|
|
|
|
Smena_parolQuery1.Open; |
end |
|
|
|
|
Sost_fondQuery1.Open; |
|
else |
|
|
|
|
VidachaQuery1.Open; |
|
a:=OplataQuery1v_real_vozv.Value; |
|
|
ZadolgnikiQuery1.Open; |
|||
|
|
|
|
|
|
ZakazQuery1.Open; |
OplataQuery1prosroch.AsInteger:=DaysBetween(OplataQuery1v_data.V |
end; |
|||||
alue,a)- |
|
|
|
|
|
|
DaysBetween(OplataQuery1v_data.Value,OplataQuery1v_pred_vozv.Va |
end. |
|||||
lue); |
|
|
|
|
|
Листинг Б.3 – Fond
unit Fond; |
DBEdit3: TDBEdit; |
|
DBEdit4: TDBEdit; |
interface |
DBComboBox1: TDBComboBox; |
|
DBEdit5: TDBEdit; |
uses |
DBEdit6: TDBEdit; |
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, |
DBEdit7: TDBEdit; |
Forms, |
DBNavigator2: TDBNavigator; |
Dialogs, StdCtrls, DBCtrls, Mask, ExtCtrls, DB, ADODB, Grids, |
GroupBox2: TGroupBox; |
DBGrids, |
RadioButton1: TRadioButton; |
Buttons, jpeg; |
RadioButton2: TRadioButton; |
|
GroupBox3: TGroupBox; |
type |
Edit1: TEdit; |
TFFond = class(TForm) |
ComboBox1: TComboBox; |
Timer1: TTimer; |
BitBtn1: TBitBtn; |
Panel1: TPanel; |
Label1: TLabel; |
Label7: TLabel; |
Label2: TLabel; |
DBGrid1: TDBGrid; |
Label3: TLabel; |
GroupBox1: TGroupBox; |
Label4: TLabel; |
DBEdit1: TDBEdit; |
Label5: TLabel; |
DBEdit2: TDBEdit; |
Label6: TLabel; |
|
37 |
Label8: TLabel;
Label9: TLabel;
Image1: TImage;
procedure FormCreate(Sender: TObject); procedure DBGrid1TitleClick(Column: TColumn); procedure Edit1Change(Sender: TObject);
procedure DBNavigator2BeforeAction(Sender: TObject; Button: TNavigateBtn);
procedure BitBtn1Click(Sender: TObject); procedure DBEdit1Change(Sender: TObject); procedure DBEdit2Enter(Sender: TObject); procedure DBEdit2Exit(Sender: TObject); procedure Timer1Timer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure DBEdit6KeyPress(Sender: TObject; var Key: Char); procedure DBComboBox1KeyPress(Sender: TObject; var Key: Char); procedure DBEdit4KeyPress(Sender: TObject; var Key: Char); procedure DBEdit5KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations } procedure Refresh; procedure isEdit; procedure noEdit;
function checkEdit:boolean; public
{ Public declarations } end;
var
FFond: TFFond; s:string; ins:boolean;
buttonSelected:integer;
implementation
{$R *.dfm}
uses Data_modul, Parol;
procedure TFFond.Refresh; begin
DM.FondQuery1.Close;
DM.FondQuery1.Open;
end;
procedure TFFond.isEdit; begin
if DBEdit1.Text<>'' then begin
DM.CheckQuery1.SQL.Text:='UPDATE Fond SET Fond.EDIT = True WHERE Fond.f_id='+DBEdit1.Text+';';
DM.CheckQuery1.ExecSQL;
DM.CheckQuery1.SQL.Text:='Select * from Fond WHERE f_id='+DBEdit1.Text+';';
DM.CheckQuery1.Open;
end;
end;
procedure TFFond.noEdit; begin
if DBEdit1.Text<>'' then begin
DM.CheckQuery1.SQL.Text:='UPDATE Fond SET Fond.EDIT = False WHERE Fond.f_id='+DBEdit1.Text+';';
DM.CheckQuery1.ExecSQL;
DM.CheckQuery1.SQL.Text:='Select * from Fond WHERE f_id='+DBEdit1.Text+';';
DM.CheckQuery1.Open;
end;
end;
function TFFond.checkEdit:boolean; begin
checkEdit:=false;
if DBEdit1.Text<>'' then DM.CheckQuery1.SQL.Text:='Select * from Fond'+' WHERE f_id='+DBEdit1.Text+';';
DM.CheckQuery1.Open;
if DBEdit7.Text<>'' then begin
Label7.Visible:=StrToBool(DBEdit7.Text); DBEdit2.Enabled:= not StrToBool(DBEdit7.Text); DBEdit3.Enabled:= not StrToBool(DBEdit7.Text); DBEdit4.Enabled:= not StrToBool(DBEdit7.Text); DBEdit5.Enabled:= not StrToBool(DBEdit7.Text); DBEdit6.Enabled:= not StrToBool(DBEdit7.Text); checkEdit:=StrToBool(DBEdit7.Text);
end;
end;
procedure TFFond.FormCreate(Sender: TObject); var i:integer;
begin DM.ADOConnection1.Connected:=true; DM.FondQuery1.SQL.Clear;
DM.FondQuery1.SQL.Add('SELECT *FROM Fond'); DM.FondQuery1.Open;
for i:=0 to DBGrid1.Columns.Count-1 do ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption); if PParol.DBLookupComboBox1.Text='ГОСТЬ' then
begin GroupBox1.Enabled:=False;
end;
end;
procedure TFFond.DBGrid1TitleClick(Column: TColumn); var
i:integer;
clr:TColor; begin
s:=' ASC';
clr:= clMoneyGreen;
if RadioButton2.Checked then begin
s:=' DESC'; clr:= clSkyBlue; end;
for i:=0 to DBGrid1.Columns.Count-1 do DBGrid1.Columns.Items[i].Title.Color:= clBtnFace; DBGrid1.Columns.Items[Column.Index].Title.Color:=clr; DM.FondQuery1.Sort:=
DBGrid1.Columns.Items[Column.Index].FieldName+s;
end;
procedure TFFond.Edit1Change(Sender: TObject); begin
if ComboBox1.ItemIndex=-1 then ComboBox1.ItemIndex:=0; S:=DBGrid1.Columns.Items[ComboBox1.ItemIndex].FieldName; DM.FondQuery1.SQL.Clear; DM.FondQuery1.SQL.Add('SELECT *FROM Fond'+
' WHERE '+s+' LIKE "'+Edit1.text+'%"'); Refresh;
end;
procedure TFFond.DBNavigator2BeforeAction(Sender: TObject; Button: TNavigateBtn);
var n:integer;
begin ins:=false;
if Button=nbInsert then begin
ins:=true;
if DBEdit2.Enabled then DBEdit2.SetFocus; end;
if (Button=nbRefresh) then begin
n:=DM.FondQuery1.FieldValues['f_iD']; Refresh; DM.FondQuery1.Locate('f_id',n,[]);
end;
end;
procedure TFFond.BitBtn1Click(Sender: TObject); begin
if DM.FondQuery1.FieldValues['EDIT']=false then
38
begin buttonSelected:=MessageDlg('Удалить
запись?',mtWarning,mbOKCancel, 0); if buttonSelected = mrOK then
begin DM.FondQuery2.Close; DM.FondQuery2.SQL.Clear;
DM.FondQuery2.SQL.Add('DELETE Fond.f_id, *FROM Fond WHERE Fond.f_id='+DBEdit1.Text+';');
DM.FondQuery2.ExecSQL;
end; end else
MessageDlg('Запись редактируется другим пользователем',mtError,[mbOK],0);
end;
procedure TFFond.DBEdit1Change(Sender: TObject); begin
if (DBEdit1.Text<>'') and (not ins) then checkEdit; end;
procedure TFFond.DBEdit2Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'') and (not ins) then if not checkEdit then isEdit;
end;
procedure TFFond.DBEdit2Exit(Sender: TObject); begin
Timer1.Enabled:=True;
noEdit;
end;
procedure TFFond.Timer1Timer(Sender: TObject); begin
if DBNavigator2.Controls[6].Enabled then begin
DBNavigator2.BtnClick(nbEdit);
DBNavigator2.BtnClick(nbRefresh);
Листинг Б.4 - Chitatel
end;
end;
procedure TFFond.FormClose(Sender: TObject; var Action: TCloseAction);
begin noEdit;
Timer1.Enabled:=false;
end;
procedure TFFond.DBEdit6KeyPress(Sender: TObject; var Key: Char); begin
If not (Key in ['0'..'9', '-','.','(',')','[',']',#8]) then Key:=#0 ;
end;
procedure TFFond.DBComboBox1KeyPress(Sender: TObject; var Key: Char);
begin Key:=#0;
end;
procedure TFFond.DBEdit4KeyPress(Sender: TObject; var Key: Char); begin
if Length(DBEdit4.Text)>=4 then if key<>#8 then
key:=#0;
If not (Key in ['0'..'9', #8]) then Key:=#0 ;
end;
procedure TFFond.DBEdit5KeyPress(Sender: TObject; var Key: Char); begin
if Length(DBEdit5.Text)>=4 then if key<>#8 then
key:=#0;
If not (Key in ['0'..'9', #8]) then Key:=#0;
end;
end.
unit Chitatel; |
Label1: TLabel; |
|
Label2: TLabel; |
interface |
Label3: TLabel; |
|
Label4: TLabel; |
uses |
Label5: TLabel; |
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, |
Label6: TLabel; |
Forms, |
Label8: TLabel; |
Dialogs, ExtCtrls, StdCtrls, Buttons, DBCtrls, Mask, Grids, DBGrids; |
procedure FormCreate(Sender: TObject); |
|
procedure DBGrid1TitleClick(Column: TColumn); |
type |
procedure Edit1Change(Sender: TObject); |
TCChitatel = class(TForm) |
procedure DBNavigator2BeforeAction(Sender: TObject; |
Panel1: TPanel; |
Button: TNavigateBtn); |
Label7: TLabel; |
procedure BitBtn1Click(Sender: TObject); |
DBGrid1: TDBGrid; |
procedure DBEdit1Change(Sender: TObject); |
GroupBox1: TGroupBox; |
procedure DBEdit2Enter(Sender: TObject); |
DBEdit1: TDBEdit; |
procedure DBEdit2Exit(Sender: TObject); |
DBNavigator2: TDBNavigator; |
procedure Timer1Timer(Sender: TObject); |
GroupBox2: TGroupBox; |
procedure FormClose(Sender: TObject; var Action: TCloseAction); |
RadioButton1: TRadioButton; |
procedure DBEdit2KeyPress(Sender: TObject; var Key: Char); |
RadioButton2: TRadioButton; |
procedure DBEdit3KeyPress(Sender: TObject; var Key: Char); |
GroupBox3: TGroupBox; |
procedure DBEdit5KeyPress(Sender: TObject; var Key: Char); |
Edit1: TEdit; |
procedure DBEdit6KeyPress(Sender: TObject; var Key: Char); |
ComboBox1: TComboBox; |
private |
BitBtn1: TBitBtn; |
{ Private declarations } |
Timer1: TTimer; |
procedure Refresh; |
DBEdit2: TDBEdit; |
procedure isEdit; |
DBEdit3: TDBEdit; |
procedure noEdit; |
DBEdit4: TDBEdit; |
function checkEdit:boolean; |
DBEdit5: TDBEdit; |
public |
DBEdit6: TDBEdit; |
{ Public declarations } |
DBEdit7: TDBEdit; |
end; |
39
|
|
|
|
|
procedure TCChitatel.DBGrid1TitleClick(Column: TColumn); |
|
|
var |
|
|
|
|
var |
|
|
CChitatel: TCChitatel; |
|
|
|
|
i:integer; |
|
|
s:string; |
|
|
|
|
clr:TColor; |
|
|
ins:boolean; |
|
|
|
|
begin |
|
|
buttonSelected:integer; |
|
|
|
|
s:=' ASC'; |
|
|
|
|
|
|
|
clr:= clMoneyGreen; |
|
|
implementation |
|
|
|
|
if RadioButton2.Checked then |
|
|
|
|
|
|
|
begin |
|
|
{$R *.dfm} |
|
|
|
|
s:=' DESC'; |
|
|
|
|
|
|
|
clr:= clSkyBlue; |
|
|
uses Data_modul, Parol; |
|
|
|
|
end; |
|
|
|
|
|
|
|
for i:=0 to DBGrid1.Columns.Count-1 do |
|
|
procedure TCChitatel.Refresh; |
|
|
|
|
DBGrid1.Columns.Items[i].Title.Color:= clBtnFace; |
|
|
begin |
|
|
|
|
DBGrid1.Columns.Items[Column.Index].Title.Color:=clr; |
|
|
DM.ChitatelQuery1.Close; |
|
|
|
|
DM.ChitatelQuery1.Sort:= |
|
|
DM.ChitatelQuery1.Open; |
|
|
|
|
DBGrid1.Columns.Items[Column.Index].FieldName+s; |
|
|
end; |
|
|
|
|
end; |
|
|
procedure TCChitatel.isEdit; |
|
|
|
|
procedure TCChitatel.Edit1Change(Sender: TObject); |
|
|
begin |
|
|
|
|
begin |
|
|
if DBEdit1.Text<>'' then |
|
|
|
|
if ComboBox1.ItemIndex=-1 then ComboBox1.ItemIndex:=0; |
|
|
begin |
|
|
|
|
S:=DBGrid1.Columns.Items[ComboBox1.ItemIndex].FieldName; |
||
DM.CheckQuery1.SQL.Text:='UPDATE Chitatel SET Chitatel.EDIT |
DM.ChitatelQuery1.SQL.Clear; |
|
|
||||
= True WHERE Chitatel.ch_id='+DBEdit1.Text+';'; |
|
|
DM.ChitatelQuery1.SQL.Add('SELECT *FROM Chitatel'+ |
|
|||
DM.CheckQuery1.ExecSQL; |
|
|
|
|
' WHERE '+s+' LIKE "'+Edit1.text+'%"'); |
|
|
DM.CheckQuery1.SQL.Text:='Select |
* |
from |
Chitatel |
WHERE |
Refresh; |
|
|
ch_id='+DBEdit1.Text+';'; |
|
|
|
|
end; |
|
|
DM.CheckQuery1.Open; |
|
|
|
|
|
|
|
end; |
|
|
|
|
procedure TCChitatel.DBNavigator2BeforeAction(Sender: TObject; |
||
end; |
|
|
|
|
Button: TNavigateBtn); |
|
|
|
|
|
|
|
var |
|
|
procedure TCChitatel.noEdit; |
|
|
|
|
n:integer; |
|
|
begin |
|
|
|
|
begin |
|
|
if DBEdit1.Text<>'' then |
|
|
|
|
ins:=false; |
|
|
begin |
|
|
|
|
if Button=nbInsert then |
|
|
DM.CheckQuery1.SQL.Text:='UPDATE Chitatel SET Chitatel.EDIT |
begin |
|
|
||||
= False WHERE Chitatel.ch_id='+DBEdit1.Text+';'; |
|
|
ins:=true; |
|
|
||
DM.CheckQuery1.ExecSQL; |
|
|
|
|
if DBEdit2.Enabled then DBEdit2.SetFocus; |
|
|
DM.CheckQuery1.SQL.Text:='Select |
* |
from |
Chitatel |
WHERE |
end; |
|
|
ch_id='+DBEdit1.Text+';'; |
|
|
|
|
if (Button=nbRefresh) then |
|
|
DM.CheckQuery1.Open; |
|
|
|
|
begin |
|
|
end; |
|
|
|
|
n:=DM.ChitatelQuery1.FieldValues['ch_id']; |
|
|
end; |
|
|
|
|
Refresh; |
|
|
|
|
|
|
|
DM.ChitatelQuery1.Locate('ch_id',n,[]); |
|
|
function TCChitatel.checkEdit:boolean; |
|
|
|
|
end; |
|
|
begin |
|
|
|
|
end; |
|
|
checkEdit:=false; |
|
|
|
|
|
|
|
if DBEdit1.Text<>'' then DM.CheckQuery1.SQL.Text:='Select * from |
procedure TCChitatel.BitBtn1Click(Sender: TObject); |
|
|||||
Chitatel'+' WHERE ch_id='+DBEdit1.Text+';'; |
|
|
|
begin |
|
|
|
DM.CheckQuery1.Open; |
|
|
|
|
if DM.CheckQuery1.FieldValues['EDIT']=false then |
|
|
if DBEdit7.Text<>'' then |
|
|
|
|
begin |
|
|
begin |
|
|
|
|
buttonSelected:=MessageDlg('Удалить |
|
|
Label7.Visible:=StrToBool(DBEdit7.Text); |
|
|
запись?',mtWarning,mbOKCancel, 0); |
|
|||
DBEdit2.Enabled:= not StrToBool(DBEdit7.Text); |
|
if buttonSelected = mrOK then |
|
|
|||
DBEdit3.Enabled:= not StrToBool(DBEdit7.Text); |
|
begin |
|
|
|||
DBEdit4.Enabled:= not StrToBool(DBEdit7.Text); |
|
DM.ChitatelQuery2.Close; |
|
|
|||
DBEdit5.Enabled:= not StrToBool(DBEdit7.Text); |
|
DM.ChitatelQuery2.SQL.Clear; |
|
||||
DBEdit6.Enabled:= not StrToBool(DBEdit7.Text); |
|
DM.ChitatelQuery2.SQL.Add('DELETE Chitatel.ch_id, *FROM |
|||||
checkEdit:=StrToBool(DBEdit7.Text); |
|
|
|
Chitatel WHERE Chitatel.ch_id='+DBEdit1.Text+';'); |
|
||
end; |
|
|
|
|
DM.ChitatelQuery2.ExecSQL; |
|
|
end; |
|
|
|
|
end; |
|
|
|
|
|
|
|
end |
|
|
procedure TCChitatel.FormCreate(Sender: TObject); |
|
|
else |
|
|
||
var i:integer; |
|
|
|
|
MessageDlg('Запись |
редактируется |
другим |
begin |
|
|
|
|
пользователем',mtError,[mbOK],0); |
|
|
DM.ADOConnection1.Connected:=true; |
|
|
|
end; |
|
|
|
DM.ChitatelQuery1.SQL.Clear; |
|
|
|
|
|
|
|
DM.ChitatelQuery1.SQL.Add('SELECT *FROM Chitatel'); |
|
procedure TCChitatel.DBEdit1Change(Sender: TObject); |
|
||||
DM.ChitatelQuery1.Open; |
|
|
|
|
begin |
|
|
for i:=0 to DBGrid1.Columns.Count-1 |
do |
|
|
|
if (DBEdit1.Text<>'') and (not ins) then checkEdit; |
|
|
ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption); |
end; |
|
|
||||
if PParol.DBLookupComboBox1.Text='ГОСТЬ' then |
|
|
|
|
|||
begin |
|
|
|
|
procedure TCChitatel.DBEdit2Enter(Sender: TObject); |
|
|
GroupBox1.Enabled:=False; |
|
|
|
|
begin |
|
|
end; |
|
|
|
|
Timer1.Enabled:=false; |
|
|
end; |
|
|
|
|
if (DBEdit1.Text<>'') and (not ins) then |
|
|
|
|
|
|
|
if not checkEdit then isEdit; |
|
|
40
end;
procedure TCChitatel.DBEdit2Exit(Sender: TObject); begin
Timer1.Enabled:=True;
noEdit;
end;
procedure TCChitatel.Timer1Timer(Sender: TObject); begin
if DBNavigator2.Controls[6].Enabled then begin
DBNavigator2.BtnClick(nbEdit);
DBNavigator2.BtnClick(nbRefresh);
end;
end;
procedure TCChitatel.FormClose(Sender: TObject; var Action: TCloseAction);
begin noEdit;
Timer1.Enabled:=false;
end;
procedure TCChitatel.DBEdit2KeyPress(Sender: TObject; var Key: Char);
begin
if Length(DBEdit2.Text)>3 then if key<>#8 then
key:=#0;
If not (Key in ['0'..'9', #8]) then
Листинг Б.5 – Zakaz
unit Zakaz;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DB, ADODB, StdCtrls, DBCtrls, Mask, Grids, DBGrids,
ComCtrls, jpeg, CommCtrl, Buttons;
type
TZZakaz = class(TForm) Panel1: TPanel; Label7: TLabel; DBGrid1: TDBGrid;
GroupBox1: TGroupBox; DBEdit1: TDBEdit; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit4: TDBEdit; DBEdit5: TDBEdit; DBEdit6: TDBEdit; DBEdit7: TDBEdit;
DBNavigator2: TDBNavigator; GroupBox2: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; GroupBox3: TGroupBox; Edit1: TEdit;
ComboBox1: TComboBox; BitBtn1: TBitBtn;
Timer1: TTimer; DBEdit8: TDBEdit; DBEdit9: TDBEdit; DBEdit10: TDBEdit;
DBComboBox1: TDBComboBox; DateTimePicker1: TDateTimePicker; DateTimePicker2: TDateTimePicker; DBCheckBox1: TDBCheckBox;
Key:=#0;
end;
procedure TCChitatel.DBEdit3KeyPress(Sender: TObject; var Key: Char);
begin
If (Key in ['0'..'9']) then Key:=#0;
end;
procedure TCChitatel.DBEdit5KeyPress(Sender: TObject; var Key: Char);
begin
if Length(DBEdit5.Text)>10 then if key<>#8 then
key:=#0;
If not (Key in ['0'..'9', ' ', #8]) then Key:=#0;
end;
procedure TCChitatel.DBEdit6KeyPress(Sender: TObject; var Key: Char);
begin
if Length(DBEdit6.Text)>10 then if key<>#8 then
key:=#0;
If not (Key in ['0'..'9', #8]) then Key:=#0;
end;
end.
DBGrid2: TDBGrid; FondQuery: TADOQuery; Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure DBGrid1TitleClick(Column: TColumn);
procedure Edit1Change(Sender: TObject);
procedure DBNavigator2BeforeAction(Sender: TObject; Button: TNavigateBtn);
procedure BitBtn1Click(Sender: TObject); procedure DBEdit1Change(Sender: TObject); procedure DBEdit2Enter(Sender: TObject); procedure DBEdit2Exit(Sender: TObject); procedure Timer1Timer(Sender: TObject);
procedure DateTimePicker1CloseUp(Sender: TObject); procedure DateTimePicker2CloseUp(Sender: TObject); procedure DBEdit5Change(Sender: TObject); procedure DBEdit6Change(Sender: TObject); procedure DBCheckBox1Click(Sender: TObject);
procedure DBEdit2KeyPress(Sender: TObject; var Key: Char); procedure DBEdit7KeyPress(Sender: TObject; var Key: Char); procedure DBComboBox1KeyPress(Sender: TObject; var Key: Char); procedure DBEdit8KeyPress(Sender: TObject; var Key: Char); procedure DBEdit9KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations } procedure Refresh; procedure isEdit; procedure noEdit;
41