- •Государственное бюджетное образовательное учреждение среднего профессионального образования
- •«Уральский радиотехнический колледж им. А.С. Попова» Полевской филиал
- •Введение
- •1 Назначение и область применения
- •1.1 Назначение применения
- •1.2 Область применения
- •2 Постановка задачи
- •3 Требования к структуре и функционированию системы
- •5 Технический проект
- •4 Системный проект
- •6 Листинг
- •6 Экспериментальная часть
- •Заключение
- •Список использованных источников
6 Листинг
Главная форма.
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, StdCtrls, XPMan, ExtCtrls;
type
TFormMain = class(TForm)
StatusBar: TStatusBar;
ButtonEditor: TButton;
ButtonReport: TButton;
XPManifest: TXPManifest;
Timer: TTimer;
MainMenu1: TMainMenu;
MenuFile: TMenuItem;
MenuEditor: TMenuItem;
MenuReport: TMenuItem;
MenuExit: TMenuItem;
MenuHelp: TMenuItem;
Bevel1: TBevel;
procedure ButtonEditorClick(Sender: TObject);
procedure TimerTimer(Sender: TObject);
procedure ButtonReportClick(Sender: TObject);
procedure MenuExitClick(Sender: TObject);
procedure MenuHelpClick(Sender: TObject);
procedure MenuEditorClick(Sender: TObject);
procedure MenuReportClick(Sender: TObject);
end;
var
FormMain: TFormMain;
implementation
uses Editor, Report, ShellAPI;
{$R *.dfm}
procedure TFormMain.ButtonEditorClick(Sender: TObject);
begin
FormEditor.Show; //Показ Формы Editor
end;
procedure TFormMain.ButtonReportClick(Sender: TObject);
begin
FormReport.Show; //Показ Формы Report
end;
procedure TFormMain.TimerTimer(Sender: TObject);
begin
StatusBar.SimpleText:=FormatDateTime('dd mmm yyyy г. Текущее время hh:mm:ss', Date+Time);//Вывод даты и времени на статус баре
end;
procedure TFormMain.MenuHelpClick(Sender: TObject);
begin
ShellAboutA(Handle, PChar(Caption), 'Copyright 2013 by Александр Говорухин', Application.Icon.Handle); //вывод справки
end;
procedure TFormMain.MenuExitClick(Sender: TObject);
begin
Application.Terminate; //Выход из приложения
end;
procedure TFormMain.MenuEditorClick(Sender: TObject);
begin
ButtonEditorClick(nil); //вызов действия кнопки
end;
procedure TFormMain.MenuReportClick(Sender: TObject);
begin
ButtonReportClick(nil); //вызов действия кнопки
end;
end.
Форма «Отчет»
unit Report;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, DBGridEhGrouping, ToolCtrlsEh, DBGridEhToolCtrls,
Menus, GridsEh, DBGridEh, ExtCtrls, PrnDbgeh, StdCtrls,PrViewEh, printers,
DB, ADODB;
type
TFormReport = class(TForm)
StatusBar1: TStatusBar;
DBGridReport: TDBGridEh;
MainMenu1: TMainMenu;
N1: TMenuItem;
MenuEdit: TMenuItem;
MenuPrint: TMenuItem;
MenuClose: TMenuItem;
MenuExit: TMenuItem;
Timer1: TTimer;
Panel1: TPanel;
PrintDBReport: TPrintDBGridEh;
MenuView: TMenuItem;
ButtonPrint: TButton;
ButtonPreview: TButton;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
MenuLook: TMenuItem;
MenuAkt: TMenuItem;
MenuSpec: TMenuItem;
MenuPred: TMenuItem;
EditZapros: TEdit;
LabelZap: TLabel;
ButtonZap: TButton;
ButtonUsl: TButton;
LabelUsl: TLabel;
ComboBoxZap: TComboBox;
procedure Timer1Timer(Sender: TObject);
procedure MenuEditClick(Sender: TObject);
procedure MenuCloseClick(Sender: TObject);
procedure MenuExitClick(Sender: TObject);
procedure ButtonPreviewClick(Sender: TObject);
procedure MenuViewClick(Sender: TObject);
procedure ButtonPrintClick(Sender: TObject);
procedure MenuPrintClick(Sender: TObject);
procedure MenuAktClick(Sender: TObject);
procedure MenuPredClick(Sender: TObject);
procedure MenuSpecClick(Sender: TObject);
procedure ButtonZapClick(Sender: TObject);
procedure ButtonUslClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormReport: TFormReport;
implementation
uses Main,Editor;
{$R *.dfm}
//Процедура отображения времени
procedure TFormReport.Timer1Timer(Sender: TObject);
begin
StatusBar1.SimpleText:=FormatDateTime('dd mmm yyyy г. Текущее время hh:mm:ss', Date+Time);
end;
procedure TFormReport.MenuEditClick(Sender: TObject);
begin
FormMain.ButtonEditor.Click; //Дублер открытия формы
end;
procedure TFormReport.MenuCloseClick(Sender: TObject);
begin
Close; //Закрытие
end;
procedure TFormReport.MenuExitClick(Sender: TObject);
begin
application.Terminate; //Завершение работы приложения
end;
//Процедура предварительного просмотра
procedure TFormReport.ButtonPreviewClick(Sender: TObject);
begin
PrinterPreview.Orientation := poLandscape; //ориентируем по горизонтали
PrintDBReport.Preview;//Предварительный просмотр
end;
procedure TFormReport.MenuViewClick(Sender: TObject);
begin
ButtonPreviewClick(nil);
end;
//Выводим на печать
procedure TFormReport.ButtonPrintClick(Sender: TObject);
begin
PrintDBReport.PrinterSetupDialog;
end;
procedure TFormReport.MenuPrintClick(Sender: TObject);
begin
ButtonPrintClick(nil);
end;
//Выводим актеров
procedure TFormReport.MenuAktClick(Sender: TObject);
var i:byte;
begin
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('select Актеры.Имя, Актеры.Фамилия, Звание.Название, Актеры.Предыдущие_роли ');
AdoQuery1.SQL.Add ('From Актеры inner join Звание on Актеры.id_zv=Звание.id_zv');
AdoQuery1.open;
for i:=0 to DBGridReport.Columns.Count-1 do DBGridReport.Columns[i].OptimizeWidth;
end;
//Выводим актеров в спектаклях
procedure TFormReport.MenuPredClick(Sender: TObject);
var i:byte;
begin
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('select Актеры. Фамилия, Актеры.Имя, Спектакли. Наименование as ''Участие'', Представления.Amp as ''Амплуа'', Спектакли.Дата_проведения ');
AdoQuery1.SQL.Add('From Спектакли inner join Представления on Спектакли.id_sp = Представления.id_sp ');
AdoQuery1.SQL.Add('inner join Актеры on Представления.id_ak=Актеры.id_ak');
AdoQuery1.open;
for i:=0 to DBGridReport.Columns.Count-1 do DBGridReport.Columns[i].OptimizeWidth;
end;
//Выводим информацию о Спектаклях
procedure TFormReport.MenuSpecClick(Sender: TObject);
var i:byte;
begin
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('Select Спектакли.Наименование, Спектакли.Дата_проведения, Спектакли.Описание');
AdoQuery1.SQL.Add('From Спектакли');
AdoQuery1.open;
for i:=0 to DBGridReport.Columns.Count-1 do DBGridReport.Columns[i].OptimizeWidth;
end;
//Прописываем собственный запрос в Edit
procedure TFormReport.ButtonZapClick(Sender: TObject);
var i:byte;
begin
ADOQuery1.Close;
AdoQuery1.SQL.Clear;
ADOQuery1.SQL.Text:=EditZapros.Text;//Присваиваем значение
ADOQuery1.Open;
for i:=0 to DBGridReport.Columns.Count-1 do DBGridReport.Columns[i].OptimizeWidth;
end;
//Выводим работу запроса по условию, указанному в ComboBox
procedure TFormReport.ButtonUslClick(Sender: TObject);
var i:byte;
Text:String;
begin
Text:=ComboBoxZap.Text;
AdoQuery1.Close; //Закрываем
AdoQuery1.SQL.Clear; //Очищаем Sql код
AdoQuery1.SQL.Add('Select Актеры.Фамилия,Актеры.Имя,Звание.Название as ''Звание'', Спектакли.Дата_проведения, Спектакли.Наименование '); //Добавляем код в Query
AdoQuery1.SQL.Add('from Актеры inner join Звание on Актеры.Id_zv = Звание.Id_zv ');
AdoQuery1.SQL.Add('inner join Представлления on Представления.id_ak = Актеры.id_ak ');
AdoQuery1.SQL.Add('inner Join Спектакли on Спектакли.id_sp = Представления.id_sp ');
AdoQuery1.SQL.Add('Where Спектакли.Наименование='+''''+Text+'''');//Добавляем условие к общему коду
AdoQuery1.Active:=true; //Активируем
for i:=0 to DBGridReport.Columns.Count-1 do DBGridReport.Columns[i].OptimizeWidth;
end;
end.
Форма «Редактирование»
unit Editor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ToolCtrlsEh, StdCtrls,
Mask, DBCtrlsEh, GridsEh, DBGridEh, XPMan, DB, ADODB, ExtCtrls, Menus,
DBGridEhGrouping, DBGridEhToolCtrls, ComCtrls, ExtDlgs, DBCtrls;
type
TFormEditor = class(TForm)
ADOConnection: TADOConnection;
ADOTable: TADOTable;
DataSource: TDataSource;
PanelTop: TPanel;
ButtonFill: TButton;
ComboBoxTables: TComboBox;
Label1: TLabel;
Bevel1: TBevel;
DBGridEhMain: TDBGridEh;
Timer1: TTimer;
StatusBar1: TStatusBar;
ButtonExpAdd: TButton;
ButtonDel: TButton;
PanelADD: TPanel;
MainMenu1: TMainMenu;
N1: TMenuItem;
MenuReport: TMenuItem;
MenuBack: TMenuItem;
MenuExit: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
ButtonAdd: TButton;
L1pole: TLabel;
L2pole: TLabel;
L3pole: TLabel;
L4pole: TLabel;
L5pole: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
ButtonHide: TButton;
OpenPictureDialog1: TOpenPictureDialog;
PanelPic: TPanel;
ButtonImage: TButton;
DBImage1: TDBImage;
ButtonPic: TButton;
DBEditDel: TDBEdit;
ADOQuery1: TADOQuery;
procedure ButtonFillClick(Sender: TObject);
procedure MenuReportClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure MenuBackClick(Sender: TObject);
procedure MenuExitClick(Sender: TObject);
procedure ButtonExpAddClick(Sender: TObject);
procedure ButtonHideClick(Sender: TObject);
procedure ButtonAddClick(Sender: TObject);
procedure ButtonImageClick(Sender: TObject);
procedure ButtonPicClick(Sender: TObject);
procedure ButtonDelClick(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormEditor: TFormEditor;
implementation
uses Main,Report;
{$R *.dfm}
//Процедура вывода данных на DbGrid
procedure TFormEditor.ButtonFillClick(Sender: TObject);
var i:byte;
begin
ButtonExpAdd.Enabled:=true; //Активируем кнопку
ButtonDel.Enabled:=true; // Активируем кнопку
ButtonHideClick(nil); //вызываем процедуру кнопки скрыть
dbimage1.DataField:=''; //Очищаем поле image
if ComboBoxTables.ItemIndex < 0 then //Проверяем содержимое ComboBox, Если пусто, выводим сообщение
begin
MessageBox(Handle, 'Даных нет', 'Продолжить', MB_ICONINFORMATION or MB_OK);
Exit;
end;
AdoTable.Close;
ADOTable.TableName:=ComboBoxTables.Text; //Задаем таблицу в AdoTable
if ADOTable.TableName='Актеры' then DbEditDel.DataField:='id_ak'; //Условие для отображения данных в Edit
if ADOTable.TableName='Звание' then DbEditDel.DataField:='id_zv';
if ADOTable.TableName='Представление' then DbEditDel.DataField:='Amp';
if ADOTable.TableName='Спектакли' then DbEditDel.DataField:='id_sp';
ADOTable.Open;
for i:=0 to DBGridEhMain.Columns.Count-1 do DBGridEhMain.Columns[i].OptimizeWidth; //Оптимизируем ширину столбцов
if (ComboBoxTables.ItemIndex=0) or (ComboBoxTables.ItemIndex=3) then ButtonPic.Enabled:=true //Если поле ComboBox соответствует, разрешаем использование кнопки
else ButtonPic.Enabled:=false; //Если нет, запрещаем
end;
procedure TFormEditor.MenuReportClick(Sender: TObject);
begin
FormMain.ButtonReport.Click;
end;
procedure TFormEditor.N1Click(Sender: TObject);
begin
Application.Terminate; //Закрываем приложение
end;
//Процедура соединения с базой
procedure TFormEditor.FormCreate(Sender: TObject);
var DBName:string;
begin
DBName:=ExtractFilePath(ParamStr(0))+'Театры.mdF';
ADOConnection.Close;
ADOConnection.ConnectionString:='Provider=SQLOLEDB.1;'+
'Integrated Security=SSPI;'+
'Persist Security Info=False;'+
'Initial File Name='+DBName;
ADOConnection.Open;
ADOConnection.GetTableNames(ComboBoxTables.Items, False); //Задаем для ComboBox значение таблиц AdoConnect
if ComboBoxTables.Items.Count > 0 then ComboBoxTables.ItemIndex:=0; //Устанавливаем значение по умолчанию
end;
//Процедура вывода времени
procedure TFormEditor.Timer1Timer(Sender: TObject);
begin
StatusBar1.SimpleText:=FormatDateTime('dd mmm yyyy г. Текущее время hh:mm:ss', Date+Time);
end;
procedure TFormEditor.MenuBackClick(Sender: TObject);
begin
close; //Закрываем окно
end;
procedure TFormEditor.MenuExitClick(Sender: TObject);
begin
application.Terminate; //Завершаем работу
end;
//Процедура добавления данных
procedure TFormEditor.ButtonExpAddClick(Sender: TObject);
begin
FormEditor.ClientWidth:=1090; //Расширяем форму
PanelADD.Visible:=true; //Показываем панель
PanelPic.Visible:=False; //Скрываем
//Проверка значений ComboBox для заполнения соответствующими данными поля Label
case FormEditor.ComboBoxTables.ItemIndex of
0:Begin
L1pole.Visible:=true; L1pole.Caption:='id_ak';
L2pole.Visible:=true; L2pole.Caption:='Имя';
L3pole.Visible:=true; L3pole.Caption:='Фамилия';
L4pole.Visible:=true; L4pole.Caption:='id_zv';
L5pole.Visible:=true; L5pole.Caption:='Предыдущие роли';
Edit1.Visible:=true; Edit2.Visible:=true; Edit3.Visible:=true; Edit4.Visible:=true;
Edit5.Visible:=true;
end;
1:Begin
L1pole.Visible:=true; L1pole.Caption:='id_zv';
L2pole.Visible:=true; L2pole.Caption:='Название';
L3pole.Visible:=False;
L4pole.Visible:=False;
L5pole.Visible:=False;
Edit1.Visible:=true; Edit2.Visible:=true;Edit3.Visible:=False; Edit4.Visible:=False;
Edit5.Visible:=False;
end;
2:Begin
L1pole.Visible:=true; L1pole.Caption:='id_sp';
L2pole.Visible:=true; L2pole.Caption:='id_ak';
L3pole.Visible:=true; L3pole.Caption:='Амплуа';
L4pole.Visible:=False;
L5pole.Visible:=False;
Edit1.Visible:=true; Edit2.Visible:=true; Edit3.Visible:=true; Edit4.Visible:=False;
Edit5.Visible:=false;
end;
3:Begin
L1pole.Visible:=true; L1pole.Caption:='Id_sp';
L2pole.Visible:=true; L2pole.Caption:='Название';
L3pole.Visible:=true; L3pole.Caption:='Описание';
L4pole.Visible:=true; L4pole.Caption:='Дата представления';
L5pole.Visible:=False;
Edit1.Visible:=true; Edit2.Visible:=true; Edit3.Visible:=true; Edit4.Visible:=true;
Edit5.Visible:=false;
end;
end;
end;
//процедура для скрытия доп. блока
procedure TFormEditor.ButtonHideClick(Sender: TObject);
begin
FormEditor.ClientWidth:=728; //Изменяем размер
dbimage1.DataField:='';
PanelPic.Visible:=False;
PanelAdd.Visible:=False;
end;
//Внесение данных в таблицу
procedure TFormEditor.ButtonAddClick(Sender: TObject);
begin
ADOTable.Insert; //Добавляем данные
case ComboBoxTables.ItemIndex of //Проверяем условие по выбранной таблице
0: Begin
if Edit1.text='' then begin ShowMessage('Введите данные'); exit; end;
if Edit2.text='' then Edit2.Text:='Нет данных';
if Edit3.text='' then Edit3.Text:='Нет данных';
if Edit4.text='' then Edit4.Text:='0';
if Edit5.text='' then Edit5.Text:='Нет данных';
ADOTable.Fields.Fields[0].AsInteger:=StrToInt(Edit1.Text); //присваиваем значения полям таблицы
ADOTable.Fields.Fields[1].AsString:=Edit2.Text;
ADOTable.Fields.Fields[2].AsString:=Edit3.Text;
ADOTable.Fields.Fields[3].AsInteger:=StrToInt(Edit4.Text);
ADOTable.Fields.Fields[4].AsString:=Edit5.Text;
end;
1: begin
if Edit1.text='' then begin ShowMessage('Введите данные'); exit; end;
if Edit2.text='' then Edit2.Text:= 'Нет данных';
ADOTable.Fields.Fields[0].AsInteger:=StrToInt(Edit1.Text);
ADOTable.Fields.Fields[1].AsString:=Edit2.Text;
end;
2: begin
if Edit1.text='' then begin ShowMessage('Введите данные'); exit; end;
if Edit2.text='' then begin ShowMessage('Введите данные'); exit; end;
if Edit3.text='' then Edit3.Text:= 'Нет данных';
ADOTable.Fields.Fields[0].AsInteger:=StrToInt(Edit1.Text);
ADOTable.Fields.Fields[1].AsInteger:=StrToInt(Edit2.Text);
ADOTable.Fields.Fields[2].AsString:=Edit3.Text;
end;
3: begin
if Edit1.text='' then begin ShowMessage('Введите данные'); exit; end;
if Edit2.text='' then Edit2.Text:= 'Нет данных';
if Edit3.text='' then Edit3.Text:= 'Нет данных';
if Edit4.text='' then Edit4.Text:= 'Нет данных';
ADOTable.Fields.Fields[0].AsInteger:=StrToInt(Edit1.Text);
ADOTable.Fields.Fields[1].AsString:=Edit2.Text;
ADOTable.Fields.Fields[2].AsString:=Edit3.Text;
ADOTable.Fields.Fields[3].AsString:=Edit4.Text;
end;
end;
ADOTable.Post;
end;
//Кнопка добавления картинки
procedure TFormEditor.ButtonImageClick(Sender: TObject);
begin
if not OpenPictureDialog1.Execute then Exit; //Проверяем выполняется ли диалог
ADOTable.Edit;
TBLOBField(ADOTable.FieldByName('Фото')).LoadFromFile(OpenPictureDialog1.FileName); //Добавляем данные в таблицу
ADOTable.Post;
end;
//Кнопка, которая вызывает открытие доп. блока для просмотра иллюстрации
procedure TFormEditor.ButtonPicClick(Sender: TObject);
begin
FormEditor.ClientWidth:=1090;
PanelPic.Visible:=true;
PanelAdd.Visible:=false;
if (ComboboxTables.ItemIndex=0) or (ComboboxTables.ItemIndex=3) then dbimage1.DataField:='Фото'
else dbimage1.DataField:='';
end;
//Кнопка удаления данных
procedure TFormEditor.ButtonDelClick(Sender: TObject);
Var
text: string;
Tabl:integer;
begin
if AdoTable.TableName='Актеры' then Tabl:=0;
if AdoTable.TableName='Звание' then Tabl:=1;
if AdoTable.TableName='Представление' then Tabl:=2;
if AdoTable.TableName='Спектакли' then Tabl:=3;
text:=DbeditDel.Text;
if Tabl<>ComboBoxTables.itemIndex then begin ButtonDel.Enabled:=false; exit; end; //если значение не соответсвует выбранной талице запрещаем использование кнопки
ADoQuery1.Close;
Case ComboBoxTables.ItemIndex of //Удаляем запись с помощью SQL кода
0: AdOQuery1.SQL.Text:='DELETE FROM Актеры WHERE id_ak= '+''''+Text+'''';
1: AdOQuery1.SQL.Text:='DELETE FROM Звание WHERE id_zv= '+''''+Text+'''';
2: AdOQuery1.SQL.Text:='DELETE FROM Представления WHERE Amp= '+''''+Text+'''';
3: AdOQuery1.SQL.Text:='DELETE FROM Спектакли WHERE id_sp= '+''''+Text+'''';
end;
AdoQuery1.ExecSQL; //Выполняем запрос
buttonFillClick(nil);
end;
procedure TFormEditor.N6Click(Sender: TObject);
begin
ButtonExpAddClick(nil);//Дублер меню
end;
procedure TFormEditor.N7Click(Sender: TObject);
begin
ButtonDelClick(nil);// Дублер меню
end;
end.
