double arrow

Программный модуль основной программы с пояснениями и комментариями

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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: