Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет АЙС.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
820 Кб
Скачать
☆

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.