4. Инструкция пользователя
Программа предназначена для учета устройств и материальных ценностей.
Вид главного окна (см. рисунок 9):
Рисунок 9 Главное окно программы
Как выполнить добавление/редактирование устройства или материальной ценности.
Добавление и редактирование информации об устройствах происходит по одному и тому же принципу, который заключается в вызове формы и ввода информации в определенные поля. Данная форма (см. рисунок 10) вызывается через контекстное меню таблицы с данными..
Рисунок 10 Форма добавления устройства.
Как выполнить удаление записи об устройстве или материальной ценности.
Чтобы выполнить удаление записи об устройстве или материальной ценности, нужно выбрать эту запись, щелкнуть по ней правой кнопкой мыши и в контекстном меню выбрать команду «Удалить» (см. рисунок 11).
Рисунок 11 Удаление записей
Как выполнить добавление, изменение и удаление информации в справочниках.
Чтобы удалить запись из справочника достаточно щелкнуть левой кнопкой мыши на кнопке с изображением «минуса»
Чтобы изменить запись, просто нужно изменить текст этой записи и нажать на кнопку с «галочкой»
Чтобы добавить информацию в справочник нужно нажать кнопку с «плюсом» , ввести информацию и нажать на кнопку с галочкой для сохранения или на кнопку с таким изображением для отмены.
Рисунок 12 Вид окна справочника
Поиск информации
Поиск для устройств и материальных ценностей осуществляется по их названию, для этого нужно ввести его в соответствующее поле. Из таблицы с основными данными будут удалены записи, несоответствующие условиям поиска (см. рисунок 13).
Рисунок 13 Поиск информации
Составление отчетов
Программа может составить отчет по типам устройств и по материальным ценностям. Для этого нужно выбрать соответствующий пункт в главном меню. Файл с отчетом в html-формате будет сохранен в папке с программой, и автоматически открыт браузером системы.
«О программе» и выход из программы
В пункте главного меню «о программе» можно нажать на кнопку «Закрыть». Для выхода из программы можно выбрать пункт меню «Выход» во вкладке «Файл».
5. Исходный код процедур и функций
Процедуры модуля umain:
procedure Tfmain.eobjnameChange(Sender: TObject);
begin
dm.filterobj.Execute;
fmain.sbobj.Panels[0].text:='Количество устройств - '+inttostr(dm.tobj.recordcount);
end;
procedure Tfmain.emcnameChange(Sender: TObject);
begin
dm.filtermc.execute;
fmain.sbmc.panels[0].Text:='Количество материальных ценностей - '+inttostr(dm.tmc.recordcount);
end;
procedure Tfmain.FormActivate(Sender: TObject);
begin
dm.fmainactivate.Execute;
end;
Процедуры модуля udm:
procedure Tdm.exitExecute(Sender: TObject);
begin
fmain.close;
end;
procedure Tdm.fmainactivateExecute(Sender: TObject);
begin
fmain.pcmain.activepageindex:=0;
fmain.sbobj.Panels[0].Text:=
'Количество устройств - '+inttostr(dm.tobj.RecordCount);
fmain.sbmc.panels[0].text:=
'Количество материальных ценностей - '+inttostr(dm.tmc.RecordCount);
end;
procedure Tdm.aboutopenExecute(Sender: TObject);
begin
fabout.labout.Caption:= 'Программа учета устройств и' +#13+
'материальных ценностей.';
fabout.ShowModal;
end;
procedure Tdm.aboutcloseExecute(Sender: TObject);
begin
fabout.Close;
end;
procedure Tdm.filterobjExecute(Sender: TObject);
var str:string;
begin
if (fmain.eobjname.Text='')
then str:='';
if (fmain.eobjname.Text<>'')
then str:='objname like '+quotedstr('%'+fmain.eobjname.Text+'%');
if str<>'' then
begin
dm.tobj.Filter:=str;
dm.tobj.Filtered:=true;
end
else
dm.tobj.Filtered:=false;
end;
procedure Tdm.filtermcExecute(Sender: TObject);
var str:string;
begin
if (fmain.emcname.Text='')
then str:='';
if (fmain.emcname.Text<>'')
then str:='mcname like '+quotedstr('%'+fmain.emcname.Text+'%');
if str<>'' then
begin
dm.tmc.Filter:=str;
dm.tmc.Filtered:=true;
end
else
dm.tmc.Filtered:=false;
end;
procedure Tdm.depopenExecute(Sender: TObject);
begin
fspr.Caption:='Подразделения';
fspr.dbgspr.DataSource:=dm.dsvdep;
fspr.dbnspr.datasource:=dm.dsvdep;
fspr.dbgspr.Columns.Clear;
fspr.dbgspr.Columns.Add;
fspr.dbgspr.Columns[0].Field:=dm.tvdepdepname;
dm.rcount.Execute;
fspr.ShowModal;
end;
procedure Tdm.tvdepAfterPost(DataSet: TDataSet);
begin
dm.rcount.Execute;
end;
procedure Tdm.tvdepAfterDelete(DataSet: TDataSet);
begin
dm.rcount.execute;
end;
procedure Tdm.placeopenExecute(Sender: TObject);
begin
fspr.Caption:='Кабинеты';
fspr.dbgspr.DataSource:=dm.dsvplace;
fspr.dbnspr.DataSource:=dm.dsvplace;
fspr.dbgspr.Columns.Clear;
fspr.dbgspr.columns.Add;
fspr.dbgspr.columns[0].Field:=dm.tvplaceplacename;
dm.rcount.Execute;
fspr.ShowModal;
end;
procedure Tdm.tvplaceAfterPost(DataSet: TDataSet);
begin
dm.rcount.Execute;
end;
procedure Tdm.tvplaceAfterDelete(DataSet: TDataSet);
begin
dm.rcount.Execute;
end;
procedure Tdm.tipopenExecute(Sender: TObject);
begin
fspr.caption:='Типы устройств';
fspr.dbgspr.datasource:=dm.dsvtip;
fspr.dbnspr.DataSource:=dm.dsvtip;
fspr.dbgspr.Columns.Clear;
fspr.dbgspr.Columns.add;
fspr.dbgspr.columns[0].Field:=dm.tvtiptipname;
dm.rcount.Execute;
fspr.ShowModal;
end;
procedure Tdm.tvtipAfterPost(DataSet: TDataSet);
begin
dm.rcount.Execute;
end;
procedure Tdm.tvtipAfterDelete(DataSet: TDataSet);
begin
dm.rcount.Execute;
end;
procedure Tdm.menopenExecute(Sender: TObject);
begin
fspr.caption:='Пользователи';
fspr.dbgspr.datasource:=dm.dsvmen;
fspr.dbnspr.DataSource:=dm.dsvmen;
fspr.dbgspr.columns.clear;
fspr.dbgspr.columns.add;
fspr.dbgspr.columns[0].field:=dm.tvmenfiomen;
dm.rcount.Execute;
fspr.ShowModal;
end;
procedure Tdm.tvmenAfterPost(DataSet: TDataSet);
begin
dm.rcount.Execute;
end;
procedure Tdm.tvmenAfterDelete(DataSet: TDataSet);
begin
dm.rcount.execute;
end;
procedure Tdm.ipopenExecute(Sender: TObject);
begin
fspr.caption:='IP-адреса';
fspr.dbgspr.datasource:=dm.dsviponly;
fspr.dbnspr.datasource:=dm.dsviponly;
fspr.dbgspr.Columns.clear;
fspr.dbgspr.Columns.add;
fspr.dbgspr.Columns[0].field:=dm.tviponlyipname;
dm.rcount.Execute;
fspr.showmodal;
end;
procedure Tdm.tviponlyAfterPost(DataSet: TDataSet);
begin
dm.rcount.Execute;
end;
procedure Tdm.tviponlyAfterDelete(DataSet: TDataSet);
begin
dm.rcount.execute;
end;
procedure Tdm.fsprcloseExecute(Sender: TObject);
begin
if (fspr.dbgspr.DataSource.DataSet.State=dsEdit) or
(fspr.dbgspr.DataSource.DataSet.State=dsInsert)
then fspr.dbgspr.DataSource.DataSet.Cancel;
end;
procedure Tdm.rcountExecute(Sender: TObject);
begin
fspr.sbspr.Panels[0].text:=
'Количество записей - '+inttostr(fspr.dbgspr.DataSource.DataSet.RecordCount);
end;
procedure Tdm.fobjinsertExecute(Sender: TObject);
begin
fobj.Caption:='Добавить устройство';
dm.tobj.Insert;
fobj.ShowModal;
end;
procedure Tdm.fobjeditExecute(Sender: TObject);
begin
fobj.caption:='Изменить информацию';
dm.tobj.Edit;
fobj.showmodal;
end;
procedure Tdm.objdeleteExecute(Sender: TObject);
begin
if Application.MessageBox(pchar('Удалить данные?'), 'Устройства' , MB_YESNO)=IDYES
then begin
dm.tobj.Delete;
Application.MessageBox(pchar('Данные удалены.'), 'Устройства', MB_OK);
end;
end;
procedure Tdm.fobjsaveExecute(Sender: TObject);
begin
if not dm.tobjidtip.IsNull then
if not dm.tobjobjname.IsNull then
if not dm.tobjnobj.IsNull then
begin
dm.tobj.Post;
fobj.Close;
end
else Application.MessageBox(pchar('Не указан серийный номер.'), 'Устройства', MB_OK)
else Application.MessageBox(pchar('Не указано имя устройства.'), 'Устройства', MB_OK)
else Application.MessageBox(pchar('Не выбран тип устройства.'), 'Устройства', MB_OK);
end;
procedure Tdm.fobjcancelExecute(Sender: TObject);
begin
fobj.Close;
end;
procedure Tdm.fobjcloseExecute(Sender: TObject);
begin
if (dm.tobj.State=dsInsert)or(dm.tobj.State=dsEdit)
then dm.tobj.Cancel;
end;
procedure Tdm.objrefreshExecute(Sender: TObject);
begin
dm.tobj.Close;
dm.tobj.open;
dm.tobjplace.Close;
dm.tobjplace.open;
dm.tipcomp.Close;
dm.tipcomp.Open;
dm.tobjuse.close;
dm.tobjuse.open;
fmain.sbobj.Panels[0].text:=
'Количество устройств - '+inttostr(dm.tobj.recordcount);
end;
procedure Tdm.tobjAfterDelete(DataSet: TDataSet);
begin
dm.objrefresh.Execute;
end;
procedure Tdm.tobjAfterPost(DataSet: TDataSet);
begin
dm.objrefresh.Execute;
end;
procedure Tdm.fmcinsertExecute(Sender: TObject);
begin
fmc.caption:='Добавление в инвентарь';
dm.tmc.Insert;
fmc.ShowModal;
end;
procedure Tdm.fmceditExecute(Sender: TObject);
begin
fmc.caption:='Изменение информации';
dm.tmc.Edit;
fmc.ShowModal;
end;
procedure Tdm.mcdeleteExecute(Sender: TObject);
begin
if Application.MessageBox(pchar('Удалить данные?'), 'Инвентарь' , MB_YESNO)=IDYES
then begin
dm.tmc.Delete;
Application.MessageBox(pchar('Данные удалены.'), 'Инвентарь', MB_OK);
end;
end;
procedure Tdm.fmcsaveExecute(Sender: TObject);
begin
if not dm.tmcmcname.IsNull then
begin
dm.tmc.Post;
fmc.Close;
end
else Application.MessageBox(pchar('Не указано название'), 'Инвентарь', MB_OK);
end;
procedure Tdm.fmccancelExecute(Sender: TObject);
begin
fmc.close;
end;
procedure Tdm.fmccloseExecute(Sender: TObject);
begin
if (dm.tmc.State=dsInsert)or(dm.tmc.State=dsEdit)
then dm.tmc.Cancel;
end;
procedure Tdm.mcrefreshExecute(Sender: TObject);
begin
dm.tmc.Close;
dm.tmc.open;
fmain.sbmc.panels[0].text:=
'Количество материальных ценностей - '+inttostr(dm.tmc.recordcount);
end;
procedure Tdm.tmcAfterDelete(DataSet: TDataSet);
begin
dm.mcrefresh.Execute;
end;
procedure Tdm.tmcAfterPost(DataSet: TDataSet);
begin
dm.mcrefresh.execute;
end;
// отчетность
procedure Tdm.createtipreportExecute(Sender: TObject);
var
tfile:TextFile;
i:integer;
filename:string;
begin
filename:='tipreport.html';
AssignFile(tfile,filename);
rewrite(tfile);
writeln(tfile,'<HTML>');
writeln(tfile,'<HEAD><TITLE>');
writeln(tfile,'Список устройств по типу');
writeln(tfile,'</TITLE></HEAD>');
writeln(tfile,'<BODY>');
writeln(tfile,'<H1>Список устройств по типу</H1>');
dm.ttip.Sort:='tipname';
dm.tobj.Sort:='objname';
dm.ttip.First;
while not dm.ttip.Eof do
begin
dm.tobj.Filter:='idtip='+inttostr(dm.ttipidtip.Value);
dm.tobj.Filtered:=true;
if not dm.tobj.IsEmpty then
begin
writeln(tfile,'<H2>'+dm.ttiptipname.value+'</H2>');
writeln(tfile,'<TABLE BORDER=1>');
writeln(tfile,'<TR>');
writeln(tfile,'<TH>№');
writeln(tfile,'<TH>Устройство');
writeln(tfile,'<TH>Серийный номер');
writeln(tfile,'<TH>Кабинет');
writeln(tfile,'<TH>Пользователь');
i:=1;
dm.tobj.First;
while not dm.tobj.Eof do
begin
writeln(tfile,'<TR>');
writeln(tfile,'<TD>'+inttostr(i));
writeln(tfile,'<TD>'+dm.tobjobjname.Value);
writeln(tfile,'<TD>'+dm.tobjnobj.value);
writeln(tfile,'<TD>'+dm.tplaceplacename.Value);
writeln(tfile,'<TD>'+dm.tmenfiomen.value);
i:=i+1;
dm.tobj.Next;
end;
writeln(tfile,'</TABLE>');
writeln(tfile,'<P>Количество устройств - '+inttostr(dm.tobj.RecordCount)+'</P>');
end;
dm.ttip.Next;
end;
tobj.Filtered:=false;
writeln(tfile,'<P>Всего устройств - '+inttostr(dm.tobj.RecordCount)+'</P>');
writeln(tfile,'</BODY></HTML>');
CloseFile(tfile);
ShellExecute(Application.Handle,'open',pchar(filename),nil,nil,SW_SHOW);
end;
procedure Tdm.createmcreportExecute(Sender: TObject);
var
tfile:TextFile;
i:integer;
filename:string;
begin
filename:='mcreport.html';
AssignFile(tfile,filename);
rewrite(tfile);
writeln(tfile,'<HTML>');
writeln(tfile,'<HEAD><TITLE>');
writeln(tfile,'Материальные ценности');
writeln(tfile,'</TITLE></HEAD>');
writeln(tfile,'<BODY>');
writeln(tfile,'<H1>Материальные ценности</H1>');
writeln(tfile,'<TABLE BORDER=1>');
writeln(tfile,'<TR>');
writeln(tfile,'<TH>№');
writeln(tfile,'<TH>Устройство');
writeln(tfile,'<TH>Матценность');
writeln(tfile,'<TH>Инвентарный номер');
writeln(tfile,'<TH>Цена');
writeln(tfile,'<TH>Количество');
writeln(tfile,'<TH>Год');
dm.tvreport.First;
i:=1;
while not dm.tvreport.Eof do
begin
writeln(tfile,'<TR>');
writeln(tfile,'<TD>'+inttostr(i));
writeln(tfile,'<TD>'+dm.tvreportobjname.Value);
writeln(tfile,'<TD>'+dm.tvreportmcname.Value);
writeln(tfile,'<TD>'+dm.tvreportmcinvn.Value);
writeln(tfile,'<TD>'+floattostr(dm.tvreportmccenaitog.Value));
writeln(tfile,'<TD>'+inttostr(dm.tvreportmckolitog.Value));
writeln(tfile,'<TD>'+inttostr(dm.tvreportmcyear.Value));
dm.tvreport.Next;
i:=i+1;
end;
writeln(tfile,'</TABLE>');
writeln(tfile,'<P>Всего устройств - '+inttostr(i)+'</P>');
writeln(tfile,'</BODY></HTML>');
CloseFile(tfile);
ShellExecute(Application.Handle,'open',pchar(filename),nil,nil,SW_SHOW);
end;
Процедуры модуля uobj:
procedure Tfobj.FormClose(Sender: TObject; var Action: TCloseAction);
begin
dm.fobjclose.execute;
end;
Процедуры модуля uspr:
procedure Tfspr.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if (dbgspr.DataSource = dm.dsvdep) then
begin
dm.tdep.Close;
dm.tdep.open;
end
else if (dbgspr.DataSource = dm.dsvplace) then
begin
dm.tplace.close;
dm.tplace.open;
end
else if (dbgspr.datasource = dm.dsvtip) then
begin
dm.ttip.Close;
dm.ttip.open;
end
else if (dbgspr.datasource = dm.dsvmen) then
begin
dm.tmen.Close;
dm.tmen.Open;
end
else if (dbgspr.datasource = dm.dsviponly) then
begin
dm.tip.close;
dm.tip.Open;
end;
dm.fsprclose.Execute;
end;