3. Федоров А.. Delphi 5.0 для всех. -М.:Тоо фирма “КомпьютерПресс”, 1998. - 464 с.
4. Марко Кэнту. Delphi 5 для профессионалов.-СПб.: Питер. 2001. – 944 с.
5. Бобровский С. Delphi 5: учебный курс- СПб: Издательство«Питер», 2000.- 640с.
6. А.М.Епанешников, В.А.ЕпанешниковПрограммирование в среде Delphi.-М.:»ДиалогМИФИ», 1998.
program VremRiad;
uses
Forms,Windows,Classes,Dialogs,SysUtils,
UnitMain in'UnitMain.pas' {Form1},
UnitRiad in'UnitRiad.pas',
UComRiad in'UComRiad.pas',
UCom_Tlb in'UCom_Tlb.pas',
UnitGraphicin 'UnitGraphic.pas' {FormGraphic},
VremRiad_TLBin 'VremRiad_TLB.pas';
{$R *.TLB}
//******************************************
Type
//Процедурный тип дляфункции, вызываемой из DLL
TProc=procedure(AOwner:TComponent);
Var
Handle :LongWord; //Дескриптор DLL
ShowPrompt : tproc; //Переменная для функции
//*******************************************
{$R *.res}
begin
Application.Initialize;
//Загрузкаиконки
Application.Icon.LoadFromFile('Prompt.ico');
//*****Загрузка библиотекии показ заставки******//
Handle:=LoadLibrary('Prompt.dll');
if Handle<> 0 then
begin
//Получить адрес функциииз библиотеки
@ShowPrompt:=GetProcAddress(Handle, PChar('ShowPrompt'));
ShowPrompt(Application);//Показать заставку
FreeLibrary(Handle);//Удалить библиотеку
end
elseShowMessage('Не найдена библиотека Prompt.dll');
//***********************************************//
Application.CreateForm(TForm1,Form1);
Application.CreateForm(TFormGraphic,FormGraphic);
Application.Run;
end.
unit UnitMain;
interface
uses
Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls, Menus, ToolWin, ComCtrls, XPMan, ImgList, Grids,
IniFiles,Clipbrd, WordXP, Math, ShellAPI, ExtCtrls, msppt8,
UCom_Tlb,ComObj, MSPpt2000, PowerPointXP, Activex, OleServer,
Buttons;
type
TForm1 =class(TForm)
Panel1:TPanel;
Panel2:TPanel;
Label1:TLabel;
Label2:TLabel;
Label3:TLabel;
Label4:TLabel;
Label5: TLabel;
Label6:TLabel;
Label7:TLabel;
Label8:TLabel;
RadioGroup1:TRadioGroup;
BitBtn1:TBitBtn;
Panel3:TPanel;
BitBtn2:TBitBtn;
MainMenu1:TMainMenu;
N1:TMenuItem;
N2:TMenuItem;
N3:TMenuItem;
N4:TMenuItem;
N6:TMenuItem;
BitBtn3:TBitBtn;
N7:TMenuItem;
StringGrid1:TStringGrid;
Label9:TLabel;
Label10:TLabel;
BitBtn4:TBitBtn;
PowerPointApplication1:TPowerPointApplication;
Presentation:TSpeedButton;
N8:TMenuItem;
Word1:TSpeedButton;
Excel1:TSpeedButton;
N9:TMenuItem;
EXcel2:TMenuItem;
SpeedButton1:TSpeedButton;
SpeedButton2:TSpeedButton;
procedureBitBtn3Click(Sender: TObject);
procedureFormActivate(Sender: TObject);
procedureBitBtn1Click(Sender: TObject);
procedureBitBtn4Click(Sender: TObject);
procedureBitBtn2Click(Sender: TObject);
procedureN4Click(Sender: TObject);
procedurePresentationClick(Sender: TObject);
procedureWord1Click(Sender: TObject);
procedureExcel1Click(Sender: TObject);
procedureSpeedButton2Click(Sender: TObject);
// ProcedureTFormMain.PresentationClick(Sender: TObject);
private
{ Privatedeclarations }
public
IniFileName :string; //Имя файла инициализации
procedureReportExcel(AStringGrid : TStringGrid); //Передать отчет в Excel
procedureReportWord (AStringGrid : TStringGrid); //Передать отчет в Word
{ Publicdeclarations }
end;
var
Form1:TForm1;
Flag : bool; //Флаг определения вида используемого объекта
const x=1;
const P=500;
implementation
uses UnitRiad,UnitGraphic;
{$R *.dfm}
procedureTForm1.BitBtn3Click(Sender: TObject);
begin
Close;
end;
procedureTForm1.FormActivate(Sender: TObject);
var i:integer;
begin
//По умолчаниюустановить работу с обычным (классическим) объектом
Flag:= false;
//Имя Ini-файла сохранения параметров
IniFileName:=GetCurrentDir+'\Riad.ini';
//Создать обычный объект
Riad:= TRiad.Create(IniFileName);
//Считать данные из Ini-файла
Riad.ReadFromIniFile;
//Вычисление и выводданных в таблицу
Riad.Table(StringGrid1);
StringGrid1.Cells[0,0]:='Номер';
StringGrid1.Cells[1,0]:='Время(с)';
StringGrid1.Cells[2,0]:='F{t}при w=1';
StringGrid1.Cells[3,0]:='F{t}при w=3';
StringGrid1.Cells[4,0]:='F{t}при w=5';
for i:=1 to201 do
StringGrid1.Cells[0,i]:=IntToStr(i);
for i:=0 to201 do
begin
StringGrid1.Cells[1,i+1]:=FloatToStr(0.5*i)
end;
label10.Caption:='';
end;
procedureTForm1.BitBtn1Click(Sender: TObject);
vari:integer;
begin
Riad.SetW();
//Вычисление и вывод данных в таблицу
Riad.Table(StringGrid1);
end;
procedureTForm1.BitBtn4Click(Sender: TObject);
var i:integer;
begin
for i:=0 to201 do
begin
StringGrid1.Cells[2,i+1]:='';
StringGrid1.Cells[3,i+1]:='';
StringGrid1.Cells[4,i+1]:='';
end;
end;
procedureTForm1.BitBtn2Click(Sender: TObject);
begin
FormGraphic.Show;
end;
procedureTForm1.N4Click(Sender: TObject);
Type
//Процедурный тип длявызова процедуры из DLL
TProc =procedure(AOwner:TComponent);
var
Handle :LongInt; //Дескриптор библиотеки
ShowAbout : TProc; //Переменая для вызова функции из DLLbegin
begin
//Получить значениедескриптора загруженной библиотеки
Handle:=LoadLibrary('About.dll');
//Проверить существованиебиблиотеки
if Handle = 0then
begin
ShowMessage('Библиотекане найдена : About.dll');
exit;
end;
//Получить адресвызываемой функции
@ShowAbout:=GetProcAddress(Handle, PChar('ShowAbout'));
//Вызов функции,показывающей форму About
ShowAbout(Application);
FreeLibrary(Handle);//Выгрузка библиотеки
end;
procedureTForm1.PresentationClick(Sender: TObject);
var
name : string;
pw : TOleEnum;
begin
//Запускпрезетации
Name:=ExtractFileDir(Application.ExeName) + '\Vremennoj process.ppsx';
PowerPointApplication1.Activate;
PowerPointApplication1.Presentations.Open(Name,pw, pw, pw);
PowerPointApplication1.Presentations.Item(1).SlideShowSettings.Run;
//Другойспособ запуска
//ShellExecute(Application.MainForm.Handle,PChar('Open'),
//PChar('Riad.pps'), NIL, PChar(''), sw_ShowNormal);
end;//TFormMain.PresentationClick
procedureTForm1.Word1Click(Sender: TObject);
begin //Отчетв Word
ReportWord(StringGrid1);
end;//TFormMain.Word1Click
ProcedureTForm1.ReportExcel(AStringGrid : TStringGrid);
//Отчет вExcel
var
Excel :variant;
WorkBook :variant; //Рабочая книга
i, j :integer;
begin
//Cоздатьформу для графика
FormGraphic:=TFormGraphic.Create(Form1);
//СоздатьСоm-объект
Excel:=CreateOleObject('Excel.Application');
//Отключить реакцию навнешние события-для ускорения процесса передачи данных
Excel.Application.EnableEvents:=false;
//Добавитьрабочую книгу
WorkBook:=Excel.WorkBooks.Add;
//Изменениеширины столбцов
for j:=0 toAStringGrid.ColCount do
WorkBook.WorkSheets[1].Columns[j+1].ColumnWidth:=10;
//Вывод строки
WorkBook.WorkSheets[1].Cells[1,1]:='Отчет о колебаниях стержня';
//Заполнение ячеектаблицы Excel значениями из StringGrid
//Нумерация ячеек в Excel начинается с 1 и идет в форматестрока-столбец
for i:= 1 toAStringGrid.RowCount + 1 do
for j:= 0 toAStringGrid.ColCount do
WorkBook.WorkSheets[1].Cells[i+1,j+1]:= AStringGrid.Cells[j, i-1];
//Вставитизображение графика в Excel
WorkBook.WorkSheets[1].Shapes.AddPicture(GetCurrentDir+'\PictureWord.bmp',
True, True, 0,(AStringGrid.RowCount+2)*12.5+10, FormGraphic.Chart1.Width*0.8,
FormGraphic.Chart1.Height*0.8);
//Уничтожитьформу
FormGraphic.Release;
FormGraphic:=NIL;
//ПоказатьExcel
Excel.Visible:=true;
end;//TFormMain.ReportExcel
ProcedureTForm1.ReportWord(AStringGrid : TStringGrid);
//Отчет в Word
var
i,j,k :integer;
a,b,c :OleVariant;
wa :TWordApplication; //WordApplication
wd :TWordDocument; //WordDocument
begin
//Создатьформу для графика
FormGraphic:=TFormGraphic.Create(Form1);
//Создатьcom-объект
wa:=TWordApplication.Create(Form1);
//Подключиться к серверу Word
wa.Connect;
//Добавить новый документ
wa.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
wd:=TWordDocument.Create(Form1);
wd.ConnectTo(wa.ActiveDocument);
//Отменитьпроверку правописания
wa.Options.CheckSpellingAsYouType:=False;
//Отменитьпроверку орфографии
wa.Options.CheckGrammarAsYouType:=False;
a:= 0;
b:= 0;
wd.Range.InsertAfter('Отчет');
c:=Length(wd.Range.Text) - 1;
a:= c;
b:= c + 10;
//Добавить таблицу
wd.Tables.Add(wd.Range(a),AStringGrid.RowCount,
AStringGrid.ColCount,EmptyParam, EmptyParam);
k:= 1;
//Перенести данные из StringGrid в таблицу
for i:= 1 toAStringGrid.RowCount do
for j:= 1 toAStringGrid.ColCount do
wd.Tables.Item(k).Cell(i,j).Range.Text:=AStringGrid.Cells[j-1, i-1];
//Загрузитьизображение в Image
FormGraphic.Image1.Picture.LoadFromFile('PictureWord.bmp');
//Поместитьизображение в буфер обмена
Clipboard.Assign(FormGraphic.Image1.Picture);
c:=Length(wd.Range.Text) - 1;
a:= c;
//Вставить изображение избуфера обмена
wa.Selection.Paste;
//ПоказатьWord
wa.Visible:=true;
//Уничтожитьформу
FormGraphic.Release;
FormGraphic:=NIL;
end;//TFormMain.ReportWord
procedureTForm1.Excel1Click(Sender: TObject);
begin
ReportExcel(StringGrid1);
end;
procedureTForm1.SpeedButton2Click(Sender: TObject);
begin
WinExec('hh.exe1.chm',SW_SHOW);
end;
end.
unitUnitGraphic;
interface
uses
Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,TeEngine, Series, StdCtrls, ExtCtrls, TeeProcs, Chart, XPMan,
TeeFunci,Buttons;
type
TFormGraphic= class(TForm)
Chart1:TChart;
Button1:TButton;
XPManifest1:TXPManifest;
Series1:TLineSeries;
Series2:TLineSeries;
TeeFunction1:TAddTeeFunction;
Series3:TLineSeries;
Image1:TImage;
BitBtn1:TBitBtn;
BitBtn2:TBitBtn;
BitBtn3:TBitBtn;
BitBtn4:TBitBtn;
procedureButton1Click(Sender: TObject);
procedureBitBtn1Click(Sender: TObject);
procedureBitBtn2Click(Sender: TObject);
procedureBitBtn3Click(Sender: TObject);
procedureBitBtn4Click(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
FormGraphic:TFormGraphic;
implementation
uses UnitRiad;
{$R *.dfm}
procedureTFormGraphic.Button1Click(Sender: TObject);
begin
Chart1.Series[0].Clear;
Chart1.Series[1].Clear;
Chart1.Series[2].Clear;
Close;
end;//TFormGraphic.Button1Click
procedureTFormGraphic.BitBtn1Click(Sender: TObject);
begin
Riad.Graphic1(FormGraphic.Chart1);
end;
procedureTFormGraphic.BitBtn2Click(Sender: TObject);
begin
Riad.Graphic2(FormGraphic.Chart1);
end;
procedureTFormGraphic.BitBtn3Click(Sender: TObject);
begin
Riad.Graphic3(FormGraphic.Chart1);
end;
procedureTFormGraphic.BitBtn4Click(Sender: TObject);
begin
Chart1.Series[0].Clear;
Chart1.Series[1].Clear;
Chart1.Series[2].Clear;
end;
end.
end.
unit UnitRiad;
interface
uses Chart,Series, Math, Grids, SysUtils, Types, Graphics, IniFiles, Messages, Dialogs,StdCtrls, Variants, Classes, Controls, Forms,
ExtCtrls,Buttons, Menus;
Type
TRiad = class//класс
private
IniFile :TIniFile; //Объект Ini-файла
w: integer;
public
ConstructorCreate(AIniFileName : string);
DestructorDestroy;
procedureGraphic1(AChart:TChart); //Постоение графика
procedureGraphic2(AChart:TChart); //Постоение графика
procedureGraphic3(AChart:TChart); //Постоение графика
procedureTable(AStringGrid:TStringGrid); //Вывод в таблицу
procedureWriteToIniFile; //Запись в Ini-файл
procedureReadFromIniFile; //Чтение из Ini-файла
function GetW: integer; //Получить w
procedureSetW; //Установить w
functionF(w:integer;t:extended):extended;//Вычисление суммы
//property ww: integer read GetW write SetW;
private
end;
var
Riad : TRiad;//Объект
implementation
uses UnitMain,UnitGraphic;
const P=500;
const x=1;
constTimeStart=0; //Время начала отсчета
const TimeEnd=100; //Время окончания отсчета
const TimeStep=0.5; //Шаг дискретизация времени
ConstructorTRiad.Create(AIniFileName : string);
begin
//Создатьобъект Ini-файла
IniFile:=TIniFile.Create(AIniFileName);
end;//TRiad.Create
DestructorTRiad.Destroy;
begin
//Удалить из Heap объект Ini-файла
ifAssigned(IniFile) then
begin
IniFile.Free;
IniFile:= NIL;
end;
end;//TRiad.Create
procedureTRiad.Graphic1(AChart : TChart);
//Построениеграфика
var
time :extended;
Y: extended;
begin
Time:=TimeStart;
AChart.Series[0].Clear;//Очистить Series[0]
AChart.BottomAxis.Increment:=Floor((TimeEnd - TimeStart) / 5);
//Занестизначения в Series
while(time<= TimeEnd) do
begin