unit MainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, ComCtrls, ComObj, UCeh2, Menus, ActnList,
ToolWin, ImgList, ExtCtrls;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
N8: TMenuItem;
N10: TMenuItem;
N12: TMenuItem;
N14: TMenuItem;
ActionList1: TActionList;
AddBeginning: TAction;
DeleteObject: TAction;
OpenFile: TAction;
SaveFile: TAction;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
ToolBar1: TToolBar;
ImageList1: TImageList;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
StringGrid1: TStringGrid;
Button4: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button_SearchForPrep: TButton;
Button_SearchForGroup: TButton;
Button_SearchForKolDol: TButton;
Label4: TLabel;
StatusBar1: TStatusBar;
Beginning: TAction;
ToolButton3: TToolButton;
ends: TAction;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
up: TAction;
down: TAction;
ToolButton6: TToolButton;
AddEnd: TAction;
AddNext: TAction;
AddPrev: TAction;
N4: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N101: TMenuItem;
N9: TMenuItem;
N11: TMenuItem;
N13: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
excel1: TMenuItem;
SaveDialog2: TSaveDialog;
HELP1: TMenuItem;
procedure N12Click(Sender: TObject);
procedure ToolButton8Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure OpenFileExecute(Sender: TObject);
procedure SaveFileExecute(Sender: TObject);
procedure AddBeginningExecute(Sender: TObject);
|
|
procedure DeleteObjectExecute(Sender: TObject);
procedure CreateMassiveExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button_SearchForPrepClick(Sender: TObject);
procedure Button_SearchForGroupClick(Sender: TObject);
procedure Button_SearchForKolDolClick(Sender: TObject);
procedure BeginningExecute(Sender: TObject);
procedure endsExecute(Sender: TObject);
procedure upExecute(Sender: TObject);
procedure downExecute(Sender: TObject);
procedure AddEndExecute(Sender: TObject);
procedure AddNextExecute(Sender: TObject);
procedure AddPrevExecute(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure N9Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N19Click(Sender: TObject);
procedure N20Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure excel1Click(Sender: TObject);
procedure HELP1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
CH: boolean;
Spis: TSpisok;
implementation
uses Information, Picture, Help;
{$R *.dfm}
procedure status;
var s:string; // строка для подбора окончания
begin
if Form1.StringGrid1.visible then // если список не пуст
begin
case Form1.StringGrid1.rowcount-1 mod 10 of
1: s:='';
2..4: s:='и';
else s:='ей';
end;
Form1.StatusBar1.panels[0].text:='В списке '+inttostr(Form1.StringGrid1.rowcount-1)+' запис'+s; // количество записей
end
else
begin
Form1.StatusBar1.panels[0].text:='У вас нет записей, откройте документ или добавьте вручную';
end;
end;
procedure TForm1.AddBeginningExecute(Sender: TObject);
begin
Spis.AddFirst(Edit2.Text, Edit1.Text, StrToInt(Edit3.Text));
Spis.ToGrid(StringGrid1);
CH:= True;
status;
// добавить
end;
procedure TForm1.AddEndExecute(Sender: TObject);
begin
Spis.AddLast(Edit2.Text, Edit1.Text, StrToInt(Edit3.Text)); //заполняем
Spis.ToGrid(StringGrid1); //добавляем в стинггрид
CH:= true;
status;
//добавить в конец
end;
procedure TForm1.AddNextExecute(Sender: TObject);
begin
Spis.AddNext(Edit2.Text, Edit1.Text, StrToInt(Edit3.Text));
Spis.ToGrid(StringGrid1);
CH:= true;
status; //статус
//добавить после текущего
end;
procedure TForm1.AddPrevExecute(Sender: TObject);
|
|
begin
Spis.AddPrev(Edit2.Text, Edit1.Text, StrToInt(Edit3.Text));
Spis.ToGrid(StringGrid1);
CH:= true;
status;
//добавить перед текущим
end;
procedure TForm1.BeginningExecute(Sender: TObject);
begin
Spis.GetFirst();
Spis.ToGrid(StringGrid1);
// начало
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Close;
end;
// поиск по преподавателю
procedure TForm1.Button_SearchForPrepClick(Sender: TObject);
begin
Spis.Search(Edit1.Text, 1);
Spis.ToGrid(StringGrid1);
end;
//поиск по количеству задолжников
procedure TForm1.Button_SearchForKolDolClick(Sender: TObject);
begin
Spis.Search(Edit3.Text, 3);
Spis.ToGrid(StringGrid1);
end;
//поиск по названию группы
procedure TForm1.Button_SearchForGroupClick(Sender: TObject);
begin
Spis.Search(Edit2.Text, 2);
Spis.ToGrid(StringGrid1);
end;
procedure TForm1.CreateMassiveExecute(Sender: TObject);
begin
// создаем массив
end;
procedure TForm1.DeleteObjectExecute(Sender: TObject);
begin
Spis.DeleteCurrent();
Spis.ToGrid(StringGrid1);
CH:= true;
status;
// удаляем массив
end;
procedure TForm1.downExecute(Sender: TObject);
begin
Spis.GetNext();
Spis.ToGrid(StringGrid1);
//ниже
end;
procedure TForm1.endsExecute(Sender: TObject);
begin
Spis.GetLast();
Spis.ToGrid(StringGrid1);
//конец списка
end;
procedure TForm1.excel1Click(Sender: TObject);
var
ExlApp: OLEVariant;
Sheet: OLEVariant;
i, j, r, c:integer;
begin
//создаем объект Excel
ExlApp:= CreateOleObject('Excel.Application');
//делаем окно Excel невидимым
ExlApp.Visible:= false;
//создаем книгу для экспорта
ExlApp.Workbooks.Add;
//создаем объект Sheet(страница) и указываем номер листа (1)
//в книге, в который будем осуществлять экспорт
Sheet:= ExlApp.Workbooks[1].WorkSheets[1];
//задаем имя листу
Sheet.name:='Данные о должниках';
//обновляем таблицу
Spis.ToGrid(StringGrid1);
//считываем кол-во столбцов и строк в StringGrid
r:=StringGrid1.RowCount;
c:=StringGrid1.ColCount+1;
//считываем значение из каждой ячейки и отправляем в таблицу Excel
for j:= 1 to r do
for i:= 2 to c do
sheet.cells[j,i-1]:=StringGrid1.Cells[i-1,j-1];
//отключаем все предупреждения Excel
ExlApp.DisplayAlerts:= False;
if SaveDialog2.Execute() then
//формат xls 2007
ExlApp.Workbooks[1].saveas(SaveDialog2.FileName, 56);
//закрываем приложение Excel
ExlApp.Quit;
//очищаем выделенную память
ExlApp:= Unassigned;
Sheet:= Unassigned;
end;
//Демонстрация формы "Автор"
procedure TForm1.N11Click(Sender: TObject);
begin
Spis.GetEmptyGroup(StringGrid1);
end;
procedure TForm1.N12Click(Sender: TObject);
begin
Form2.Show;
//форма
end;
procedure TForm1.N13Click(Sender: TObject);
begin
MessageBox(handle,
PChar('Среднее количество задолжников ' + IntToStr(Spis.GetAVGColDol())),
PChar('Среднее количество задолжников'),
MB_ICONINFORMATION + MB_OK);
end;
procedure TForm1.N15Click(Sender: TObject);
var
i:integer;
p:TCeh2;
begin
//max
StringGrid1.Cells[1,0]:='№';
StringGrid1.Cells[2,0]:= 'Преподаватель';
StringGrid1.Cells[3,0]:= 'Группа';
StringGrid1.Cells[4,0]:= 'Кол-во задолжников';
StringGrid1.ColWidths[0]:= 25;
StringGrid1.ColWidths[1]:= 25;
StringGrid1.ColWidths[2]:= 225;
StringGrid1.ColWidths[3]:= 110;
StringGrid1.ColWidths[4]:= 150;
p:= Spis.GetFirst;
for i:= 1 to StringGrid1.RowCount do
begin
StringGrid1.Cells[0,i]:= '';
StringGrid1.Cells[1,i]:= '';
StringGrid1.Cells[2,i]:= '';
StringGrid1.Cells[3,i]:= '';
StringGrid1.Cells[4,i]:= '';
end;
StringGrid1.Cells[2,1]:= Spis.GetMaxColDol.Group;
StringGrid1.Cells[3,1]:= Spis.GetMaxColDol.Prep;
StringGrid1.Cells[4,1]:= IntToStr(Spis.GetMaxColDol.KolDol);
end;
procedure TForm1.N16Click(Sender: TObject);
var
i:integer;
p:TCeh2;
begin
//min
StringGrid1.Cells[1,0]:='№';
StringGrid1.Cells[2,0]:= 'Преподаватель';
StringGrid1.Cells[3,0]:= 'Группа';
StringGrid1.Cells[4,0]:= 'Кол-во задолжников';
StringGrid1.ColWidths[0]:= 25;
StringGrid1.ColWidths[1]:= 25;
StringGrid1.ColWidths[2]:= 225;
StringGrid1.ColWidths[3]:= 110;
StringGrid1.ColWidths[4]:= 150;
p:= Spis.GetFirst;
for i:= 1 to StringGrid1.RowCount do
begin
StringGrid1.Cells[0,i]:= '';
StringGrid1.Cells[1,i]:= '';
StringGrid1.Cells[2,i]:= '';
StringGrid1.Cells[3,i]:= '';
StringGrid1.Cells[4,i]:= '';
end;
StringGrid1.Cells[2,1]:= Spis.GetMinColDol.Group;
StringGrid1.Cells[3,1]:= Spis.GetMinColDol.Prep;
StringGrid1.Cells[4,1]:= IntToStr(Spis.GetMinColDol.KolDol);
end;
procedure TForm1.N17Click(Sender: TObject);
begin
Spis.SearchWhereKolDolMore(StrToInt(Edit3.Text),StringGrid1);
end;
procedure TForm1.N18Click(Sender: TObject);
begin
Spis.SearchWhereKolDolLess(StrToInt(Edit3.Text),StringGrid1);
end;
procedure TForm1.N19Click(Sender: TObject);
begin
MessageBox(handle,
PChar('Всего задолжников ' + IntToStr(Spis.GetKolDolCount())),
PChar('Общее количество задолжников'),
MB_ICONINFORMATION + MB_OK);
end;
procedure TForm1.N20Click(Sender: TObject);
begin
Spis.SearchForSubstrPreps(Edit1.Text,StringGrid1);
end;
procedure TForm1.N21Click(Sender: TObject);
begin
Spis.SearchForSubstrGroup(Edit2.Text,StringGrid1);
end;
procedure TForm1.N9Click(Sender: TObject);
begin
Spis.GetEmptyPrep(StringGrid1);
end;
procedure TForm1.OpenFileExecute(Sender: TObject); //открытие файла
|
|
begin
begin
if OpenDialog1.Execute()
then
Spis.FromFile(OpenDialog1.FileName);
Spis.ToGrid(StringGrid1);
CH:= false;
end;
// открыть
end;
//открытие формы для поиска объектов внутри массива
procedure TForm1.SaveFileExecute(Sender: TObject);
begin
begin
if SaveDialog1.Execute() then
Spis.ToFile(SaveDialog1.FileName);
Spis.ToGrid(StringGrid1);
CH:= false;
end;
// сохранить
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if CH = true then//если внесены изменения
begin
case MessageBox(handle, PChar('Сохранить изменения?'), PChar('Данные были изменены'), MB_YESNOCANCEL+MB_ICONQUESTION) of
IDYES://сохранить
if SaveDialog1.Execute() then
begin//если выбран файл
Spis.ToFile(SaveDialog1.FileName);
CanClose:= true;//выход
end
else//если файл не выбран
CanClose:= false;//продолжаем работу
IDNO:
CanClose:= true;//выход
IDCANCEL:
CanClose:= false;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject); //создание списка
begin
Spis:= TSpisok.Create;
Spis.ToGrid(StringGrid1);
CH:= false;
end;
procedure TForm1.HELP1Click(Sender: TObject);
begin
//форма
Form9.Show;
end;
procedure TForm1.ToolButton8Click(Sender: TObject);
begin
close;
end;
procedure TForm1.upExecute(Sender: TObject);
begin
Spis.GetPrev();
Spis.ToGrid(StringGrid1);
//выше
end;
end.