СОДЕРЖАНИЕ
1. DELPHI-ДЕГІ СЕРВЕР КОМПОНЕНТТЕРІ 4
1.1. Excel сервері. 10
Excel Application1.Dialogs[xlDialogOpen]. Show( 22
1.2. OLE автоматизациясын Excel, Word, Outlook, Access жұмыстарында
Try 25
1.3. ADO мәліметтер қоры сияқты Excel кітабымен жұмыс.
2. ПРАКТИКАЛЫҚ ЖҰМЫСТАР 39
If not varIsEmpty(MSExcel) then begin 48
ҚОРТЫНДЫ 51
ӘДЕБИЕТТЕР ТІЗІМІ 52
1. DELPHI-ДЕГІ СЕРВЕР КОМПОНЕНТТЕРІ
Delphi5-пен бастағанда, Word, Excel және басқада көптеген Windows
Servers бетінің компоненттері MicrosoftOffice 97 және MicrosoftOffice 2000/XP
Серверлер қолданатын қолданбаларда ең аз дегенде бір жоғарыда
Uses … Excel97; операторы қосылған болуы қажет, немесе
Uses … Excel2000; операторы немесе
Uses … ExcelXP;операторы.
Сервер сипаттайтын көрсетілген модульдердің бірін іске қосу барысында
Uses Excel97, Excdel2000;
Соңғы мысалда қосылған модуль (мысалда Excel2000) үнсіздік бойынша
Орындалу үрдісінде нақты модуль объектісін қолдану үшін, бағдарламалық
If (GetVersion>=$80000000)
Then … // операторы
Else… //операторы
Шынында да, егер Windows нұсқаулары MicrosoftOffice нұсқауларымен сәйкес
If (StrToInt(Copy(ExcelApplication1.Version0, Pos(‘.’,ExcelApplication1.Version)-1)))=$80000000)
then
//Office97
(ExcelApplication1.ActiveWorkbook as Excel97. ExcelWorkbook).
PrintOut(EmmptyParam, EmmptyParam, EmmptyParam,
EmmptyParam, EmmptyParam, EmmptyParam, EmmptyParam,
LOCALE_USER_DEFAULT)
else
// Office2000
(ExcelApplication1.ActiveWorkbook PrintOut ( EmmptyParam,
EmmptyParam, EmmptyParam, EmmptyParam, EmmptyParam,
EmmptyParam, EmmptyParam, EmmptyParam,
LOCALE_USER_DEFAULT);
Параметр жиыны кітаптың объектісінің WorkSheets қасиетінде орналасқан. Бұл
ExcelWorkSheet1:= ExcelWorkbook1.WorkSheet[1] as ExcelWorkSheet;
ExcelWorkSheet.Activate( LOCALE_USER_DEFAULT );
Егер берілген атпен парақ кітапта жоқ болса, онда
try
ExcelWorkSheet1:= ExcelApplication1. WorkSheets as ExcelWorkSheet;
ExcelWorkSheet.Activate( LOCALE_USER_DEFAULT );
except
showMessage(‘Не удалось открыть лист “’+Edit1.Text+’ ” ’);
end;
Кітапқа жаңа парақ қосуды WorkSheets объектісінің Add әдісі
Function Add( Before: OleVariant; After: OleVariant;
Cout: OleVariant; Type: OleVariant;
Icid:Integer): IDispatch;
Before немесе After параметрлері –алдынан немесе артынан қойылуы
ExcelWorkSheet1:= ExcelApplication1. WorkSheets.Add(EmmptyParam,
EmmptyParam, EmmptyParam, EmmptyParam,
EmmptyParam, (LOCALE_USER_DEFAULT) as
ExcelWorkSheet;
Ал келесі код белсенді кітаптың үшінші парағынан кейін
Var After, Num: OleVariant;
…
After:= ExcelApplication1. WorkSheets[3];
num:=2;
ExcelWorkSheet1:= ExcelApplication1. WorkSheetsAdd(
EmmptyParam, After,Num, EmmptyParam,
LOCALE_USER_DEFAULT ) as ExcelWorkSheet;
Қойылған атты немесе аты бар парақ атын Name
ExcelWorkSheet1. Name:= ‘Счет фактура’;
Кітаптан парақты Delete әдісінің көмегімен жоюға болады.
ExcelWorkSheet1. Delete: (LOCALE_USER_DEFAULT );
Парақты PrintOut әдісінің көмегімен баспаға беруге болады. Мысалы
ExcelWorkSheet1:=ExcelApplication1.ActiveSheet as ExcelWorkSheet;
If (GetVersion>=$80000000)
Then // Office97 бағытталған оператор
(ExcelWorkSheet1 as Excel97. ExcelWorkSheet).PrintOut(
EmmptyParam, EmmptyParam, EmmptyParam, EmmptyParam,
EmmptyParam, EmmptyParam, EmmptyParam,
LOCALE_USER_DEFAULT)
Else
// Office2000 бағатталған оператор
ExcelWorkSheet1 PrintOut(
EmmptyParam, EmmptyParam, EmmptyParam, EmmptyParam,
EmmptyParam, EmmptyParam, EmmptyParam,
LOCALE_USER_DEFAULT); Баспа алдында парақтың алдын-ала көру PrintPreview әдісінің
Procedure PrintPreview( EnableChanges:OleVariant; Icid: integer);
EnableSChanges параметрі алдын-ала қарау кезінде өзгертулердің енгізілуі мүмкіндігін
(ExcelApplication1.ActiveSheet as ExcelWorkSheet ). PrintРreview( True,
LOCALE_USER_DEFAULT);
Енді ұяшықтаомен жұмыс жасауға тоқталайық. Ол парақта бірімен-бірі
Var MyRange, V: OleVariant;
…
MyRange:= ExcelWorkSheet.Range(‘B2’, EmmptyParam);
V:= MyRange.Value;
ShowMessage(V);
MyRange.Value:=Edit1.Text;
Var MyRange, V: OleVariant;
…
MyRange: := ExcelWorkSheet.Range(‘A1’, ‘C3’);
V:=VarArrayCreate([ 0, 2, 0, 2 ], varVariant);
V[0,0]:=1;
V[0,1]:=2;
V[0,2]:=3;
V[1,0]:=4;
V[1,1]:=5;
V[1,2]:=6;
V[2,0]:=’Сумма(A1:A2)’;
V[2,1]:=’Сумма(B1:B2)’;
V[2,2]:=’Сумма(C1:C2)’;
MyRangValue:=V;
Бірінші оператор А1-ші ұяшығының сол жақ жоғарғы бұрышынан
A B
1
2
3
Range объектісінің Font қасиеті белгіленгендиапазондағы текст шифрін береді.
MyRange.Font.Bold:=True;
MyRange.Font.Color:=ClRed; операторлары MyRange ұяшық диапазонына қызыл жартылай майлы
Қортындылай келе Excel диалогтарына тоқтала кетейік. Олар Excel
Excel Application1.Dialogs[xlDialogOpen]. Show(
EmmptyParam, EmmptyParam, EmmptyParam, EmmptyParam,
EmmptyParam, EmmptyParam, EmmptyParam,EmmptyParam,
EmmptyParam, EmmptyParam, EmmptyParam,EmmptyParam);
Егер сол операторда Dialog қасиеті индекснде xlDialogSaveAs көрсететін
1.2. OLE автоматизациясын Excel, Word, Outlook, Access жұмыстарында
Word, Excel редакторларына Microsoft Office- нің басқа
Автоматтандыру серверіндегі бағдарланатын объектлерді басқарумен қатынаса алатын қолданба
1- сурет
Автоматтандыру серверлері ретінде көптеген таратылған қолданбалар қолдана алады,
Көптеген автоматтандыру серверлері, объектлері қасиеттері, атап айтқанда MSOffice
Application
Addlns
WorkBooks
WorkSheets
WorkBooks[1]
WorkSheets[1]
WorkBooks[1]
Range Cells[1,1]
WorkSheets[2] Cells[1,2]
Charts Cells[2,1]
Chart[1] Cells[2,2]
2-сурет
Автоматтандыру объектісін құру FunctionGreateOLEObject(Const ClasName:String):IDispatch; әдісі көмегімен жүзеге
Бұл оператор OLE объектісімен жұмыс істеуде қажетті ComObj
Excel-мен немесе Excel-ге енетін объектілермен жұмыс істеу үшін
Var Excel: OleVariant;
Workbok: OLEVariant;
WorkSheet: OLEVariant;
MyRange: OLEVariant;
Excel айнымалысы Excel экзамплярымен байланыста болады. Workbok және
Excel жаңа экзамплярын іске қосу және оған қатынау
Excel:=CreateOLEObject(‘Excel.Application’);
Бұл оператор оған көрсетілген аргументті класс объектісін құратын
Егер Excel жаңа экзампляр құру қажет емес болса,
Excel:=GreateActiveOLEObject(‘Excel.Application’);
GetActiveOleObject функциясы GreateOleObject-пен істептес функцияларды орындайды, бірақ ол
Try
Excel:=GetActiveOleObject(‘Excel.Application’);
Except
Excel:=CreateObject(‘Excel.Application’);
End;
Excel құрылған экзампляры үнсіздік жағдайында көрінбей тұрады, онымен
Excel.Visible:=True;
Егер қандайда бір операциялардан кейін Excel-ді аяқтау керек
Excel.Quit;
Excel экзамплярымен ары қарай жұмыс объектлер, VBExcel-дағы анықтамада
Жаңа жұмыс кітабын ашу төмендегі оператормен жүзеге асады.
Workbook:=Excel.Workbook.Add;
Excel.SheetsInNewWork:=1;
Қолданушымен көрсетілген файлда сақталған жұмыс кітабын төмендегі оператормен
If OpenDialog1. Execute;
Then Workbook:= Excel Workbooks.Open(OpenDialog1.FileName);
Жұмыс кітабын Workbook.Close; операторымен жабуға болады. Егер кітапта
WorkSheet:= Workbook. WorkSheets.Item[‘Лист1’];
WorkSheet.Activate;
Келесі оператор WorkSheet айнымалысын белсенді кітаппен байланыстырады, ондағы
WorkSheet:= Workbook.Activesheet;
MyRange:= WorkSheetRange[Edit1.Text];
MyRange.Value:=Edit2Text;
MyRange.Font.Bold:=True;
MyRange.Font.Color:=clRed;
Төменде көрсетілген ұяшықтан мәліметтерді оқитын істептес операторлар көрсетілген:
WorkSheet:= Workbook.Activesheet;
MyRange:= WorkSheetRange[Edit1.Text];
V:=MyRange.Value;
ShowMessage(V);
Excel диалогымен жұмыс атқару Word диалогымен жұмыс атқаруынан
Excel.Dialogs(xlDialogOpen).Show;
Баспаға беру диалогын шақыру.
Excel.Dialogs(xlDialogPrint).Show; операторымен жүзеге асады.
Дегенмен, баспаға беруді PrintOut әдісі арқылы да жүзеге
Excel.ActiveSheet.PrintOut; Келтірілген оператор белсенді парақтың бір көшірмесін ғана
Excel.ActiveSheet.PrintOut(Preview:=true,Copies:=2);
Ал белсенді парақты баспаға беру алдында жай алдын-ала
Uses ComObj, Word97(для констант);
Var Word:OleVariant;
…
Word:=CreateOleObject(‘Word.Application’);
Word.Visible:true;
Көрініп тұрғандай, Excel байланысуынан жалғыз ғана ерекшелігі-кластың аты.
Енді почталық бағдарламалы Ole автоматтандырылуының көмегімен жұмыс атқаруды
Uses ComObj, Outlook8 ( тұрақты үшін );
Var Outlook: OleVariant;
Letter: OleVariant;
…
Outlook:=CreateOleObject(‘Outlook.Application ’);
Letter:= Outlook.CreateItem(oleMailltem);
Letter.Recipients.Add(‘ aa@aa.ru ’);
Letter.CC:=’aaa@cc.ru’;
Letter.Body:=Memo1.Text;
Letter.Subject:=’Тест’;
Letter..Display;
…
Letter..Send;
…
Outlook.Quit;
Бірінші орындалатын оператор Outlook айнымалысын почталық бағдарламамен байланыстырады.
Осыған ұқсас OLE Автоматтандыруының көмегімен Access-ке қатынай алуға
Access-пен байланысты келесі түрде жүзеге асыруға болады:
Uses ComObj, Access97 ( тұрақты үшін );
Var Access: OleVariant;
…
Access:=CreateOleObject(‘Access.Application’);
Access:.Visible:=True;
Ары қарай үрдістер Access объектілерінің, олардың қасиеттері, оқиғалары
1.3. ADO мәліметтер қоры сияқты Excel кітабымен жұмыс.
Excel жұмыс кітабымен мәліметтер қоры ретінде жұмыс істеуге
ADO компоненттері арқылы қатынау ConnectionString қасиетінің көмегімен немесе
3- сурет. Байланысу жолдарын қалыптастырудың бірінші терезесі.
Сіздің алдыңызда көп жолды Delphi-ге Microsoft ODBC-қа
4 -сурет. Қосуды таңдау терезесі.
5-суретте көрсетілген мәліметтер көзін таңдау терезесі ашылады.
5-Сурет. Мәліметтер көзін таңдау терезесі.
Сіздің алдыңызда 6-суретте көрсетілген ODBC драйверін орнату терезесі
6-сурет. Драйвер орнату терезесі.
OK батырмасына шерту арқылы 5-суретте көрсетілген терезеге ораласыз.
Greate Table MyTable (Dep varchar(15), FIO varchar(30),
Year_b Integer, Sex char)
Ары қарай орындалу барысында
ADOQuery1.ExcelSQL; Dep FIO, Year_b, Sex өрістері бар MyTable
Dep FIO Year_b Sex Num
Бухгалтерия Иванов Иван Иванович 1960 м 1
Цех 2 Сидоров Сидор Сидорович 1970 м 2
Цех 1 Петров Петр Петрович 1980 м 3
Цех 1 Иванова Ирина Ивановна 1980 ж 4
Еxcel құралдарымен жазбадағы деректерді редактирлеуге болады және жаңа
Кітапта Excel құралдарымен жаңа парақтар құруға болады және
Алмасу буферлерін қолдану.
Алмасу буфері-барлық орындалатын қолданбаларға мүмкіндікті Window ядроларының және
ClipBrd модулінің T класы алмасу буферімен басқару
Қолданба белгіленген деректердің орнын ауыстыра алады және компонент
Мүмкін форматтар жайлы ақпараттарды ТClipBoard.Formats[Index:Integer]:Word қасиетінің көмегімен алуға
Windows.pas-та сақталған мүмкін форматтағы тұрақтылар тізімі:
CF_TEXT=1, текст;
CE_BITMAP=2, графикалық bmp–деректері;
CF_METAFILEPICT=3, Windows метафайлдардың графикалық деректері және т.б.
Алмасу буферінде орналасқан деректер форматы туралы ақпаратты Function
Компоненттердің сәйкес қасиеттерінде сақталған (TEdit.Text, TRichEdit.Lines, TMemo.Lines және
If not EmptyClipBoard then
If ClipBoard.HasFormat(CF_Text) then Memo1.PasteFromClipBoard
{255 символдан аспайтын өлшемдегі мәтіндік деректердің алмасуы кезінде
Else if ClipBoard .HasFormat(CF_BitMap) then Image.Picture.Assing(ClipBoard) else
OLE технологиясы.
DDE каналына негізделген OLE технологиясы құрамды құжаттар құру
OLE объектісі-бұл қолданба OLE құрылған орта жайлы ақпараттардан
-оның визуальды ұсынылуы үшін қажетті деректер ( немесе
- оның визуалды ұсынылуы құрылатын тікелей деректер;
Тікелей деректердің орналасуына байланысты объектлерді мынандай түрге бөлуге
- енгізілген (объектінің өзінде сақталған, өлшемі ұлғайтылған, бірақ
- байланысқан ( құжат кезінде сақталады, өлшемін азайтады,
TOLEContainer класы Delphi қолданбасындағы құрамды құжаттардың функционалды мүмкіндіктерін
TOLEContainer-OLE механизімін қолдайтын, клавиатура мен тышқан оқиғаларының ClipBoard-пен
TOLEContainer класының бір экзампляры бір ғана OLE объектісін
OLE контейнерінің негізгі функционалдық мүмкіндіктерін келесі қасиеттер сипаттайды:
-property OLEClassName:string-OLE серверін инсталяциялау жағдайында жүйелік реестрда тіркелген
-Property ObjectVerbs: Tstrings;-объект активациялауда орындалатын команда индексі көрсетілген
-Property SourseDoc:String;-контейнерде сақталған объектлерді байланыстыратын файл-көзінің спецификациясы.
OLE контейнерінің жағдайы және онда орналасқан объектлер төмендегі
-оsEmpty-контейнер бос;
- osLoaded –объект контейнерде, сервер іске қосылмаған;
- osRunning- объект контейнерде, сервер сервер іске қосылған;
- osOpen-байланысқан объект бөлек терезеде ашылып тұр.
- оslnPlaceActive-объект “орын бойынша ” активтелген, бірақ меню
Объект жағдайын талдау OLE сервер шегін және әртүрлі
Енгізілген объектлер үшін контейнермен форманы жобалау кезінде міндетті
Объект белсенділеу AutoActivate қасиетінің орнатылуына сәйкес көптеген мәндері
-aa Manual- DoVorb әдісі арқылы қолмен белсенділеу;
- aaGetFocus- енгізілген фокус контейнерін алу жағдайында;
- aaDblClick- екі шерту кезінде.
OLE объектісінің контейнерде орналасуын қамтамасыз ететін негізгі әдістері:
Procedur0e GreateObject (const OLEClassName:String; Iconic:Boolean);- OLEClassName класының белгілі
Function InsertObjectDialog:Boolean; объект қою стандартының диалогты панельді шақыру;
Procedure CreateLinkToFile(FileName:string; Iconic:Boolean);- FileName файлда енгізілген объект сақтау;
Procedure CreateLinkToFile(FileName:string; Iconic:Boolean);- FileName құжат көзімен байланысты объект
Function PasteSpesialDialog:Boolean; -буфермен алмасу үшін;
Function ObjectPropertiesDialog:Boolean; әдісі контейнерде орналасқан объектлерді алдын-ала қарауға
Procedure SaveToFile(const FileName:string);
Procedure SaveToStream(Stream: TStream); контейнердегі келесілер әдісімен симметриялы деп
Procedure LoadFromFile(const Filename:String);
Procedure LoadFromStream(Stream: TStream); контейнер Delphi қолданбасындағы мәліметтер қорының
2. ПРАКТИКАЛЫҚ ЖҰМЫСТАР
«На конец» өрісіндегі деректердің есептік периоды аяқталуы бойынша
Архив кестелеріндегі деректер бойынша “Осноные средства” (80 жол)
‘Select from Archbalance WHERE Balance.строка =80’
7-сурет.
7-сурет архивтен тұратын мысалды иллюстрациялайды. “Данные в Excel”
MsExcel:OLEVariant жергілікті айнымалысы автоматтандыру объектісіне көрсеткіш болып табылады.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, Menus, StdCtrls, ComObj, OleCtnrs, Unit2_Automation,
DBGrids, DB, DBTables, ExtCtrls, DBCtrls;
type
Tdm = class(TForm)
Button1: TButton;
DBNavigator1: TDBNavigator;
Button2: TButton;
Button3: TButton; Query1: TQuery; Query2: TQuery;
DBGrid2: TDBGrid; DBGrid1: TDBGrid;
Button5: TButton; DataSource1: TDataSource; DataSource2: TDataSource;
Label1: TLabel; Label2: TLabel;
procedure N3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
dm: Tdm; MSExcel:Variant;
implementation
{$R *.dfm} procedure Tdm.Button1Click(Sender: TObject);
var i,n:integer;
MSExcel:Variant; {Excel-ге енетін объектлермен жұмыс жасайтын параметр.}
begin
Try
MSExcel:=CreateOLEObject('Excel.Application'); {Excel жаңа экзамплярын іске қосу және оған
MSExcel.WorkBooks.Add; {Жаңа жұмыс кітабын қосу}
MSExcel.WorkBooks[1].WorkSheets[1].Name:='ТЕНДЕНЦИЯ';
MSExcel.Application.Visible:=True; {Серверде не болып жатқанын көрінетіндей ету}
Except
MessageDlg('С Excel что то не то ...', mtInformation,[mbOk],0);
exit
End;
MSExcel.WorkBooks[1].WorkSheets[1].Cells[1,1]:='Квартал';
MSExcel.WorkBooks[1].WorkSheets[1].Cells[1,2]:='Итого';
dm.Query1.FieldByName(DM.Query1.Fields[0].FieldName).AsString;
n:=1;
for i:=2 to dm.Query1.Fields.Count-1 do
begin
MSExcel.WorkBooks[1].WorkSheets[1].Cells[i,1]:=dm.query1.Fields[i]. FieldName; MSExcel.WorkBooks[1].WorkSheets[1].Cells[i,2]:=dm.Query1.FieldByName(dm.Query1.Fields[i].FieldName).AsString;
n:=n+1;
end;
MSExcel.Application.Charts.Add; {Диаграммаға құру}
MSExcel.Application.ActiveChart.ChartType:=65; {xlXYScatter} MSExcel.Application.ActiveChart.SetSourceData(Source:=MSExcel.Application.WorkSheets[1].Range['A1:B'+IntToStr(n)],PlotBy:=2); {Мәліметтер диограммасын көрсететін
MSExcel.Application.ActiveChart.SeriesCollection(1).HasDataLabels := True;
MSExcel.Application.ActiveChart.SeriesCollection(1).Select;
MSExcel.Application.ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=-4132,Forward:=0,Backward:=0,DisplayEquation:=true,DisplayRSquared:=True).Select; {Бөлінген диаграммаға жаңа түзу трендасын қосу}
MSExcel.Application.ActiveChart.ChartArea.Select;
MSExcel.Application.ActiveChart.ChartArea.Copy;
end;
procedure Tdm.Button2Click(Sender: TObject);
begin
Query2.Active:=true; Button2.Enabled:=false;
end;
procedure Tdm.Button4Click(Sender: TObject);
begin
Query1.Active:=true; Button4.Enabled:=false;
end;
procedure Tdm.Button5Click(Sender: TObject);
begin
if Query1.Active then Query1.Close; Application.Terminate;
end;
procedure Tdm.Button3Click(Sender: TObject);
begin
form2.OleContainer1.Paste;
Form2.Show; if not varisEmpty(MSExcel) then
begin
MSExcel.Application.Quit;
MsExcel:=Unassigned
end
end;
end.
Ұяшық диапазонын және диаграмма тұрғызуды таңдау тікелей ашылған
8-сурет.
График (7 сурет) түймешесіне басу кезінде диаграмма контейнерінде
procedure Tdm.Button3Click(Sender: TObject);
begin
form2.OleContainer1.Paste;
Form2.Show;
if not varisEmpty(MSExcel) then
begin
MSExcel.Application.Quit;
MsExcel:=Unassigned
end
end;
9-сурет.
Шақыру түзетуін тексеру және автоматтандыру серверімен байланысты аяқтау
2-тапсырма: MSExcel-автоматтандыру объектлерін басқару. MSExcel-автоматтандыру объектлерімен жұмыс жасауға
Form2 формасына OLEContainer1 (System) компоненттерін орнатамыз. Form1-дегі Расчет
10-сурет.
unit Unit1_Automation;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, Menus, StdCtrls, ComObj, OleCtnrs, Unit2_Automation;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
StringGrid1: TStringGrid;
Button1: TButton;
procedure N3Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations } end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.N3Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormActivate(Sender: TObject);
var i:integer;
x:extended;
begin
randomize;
Form1.StringGrid1.Cells[0,0]:='№';
Form1.StringGrid1.Cells[1,0]:='X';
Form1.StringGrid1.Cells[2,0]:='F(X)';
for i:=1 to Form1.StringGrid1.RowCount-1 do
begin
Form1.StringGrid1.Cells[0,i]:=IntToStr(i);
x:=random+10-random(20);
Form1.StringGrid1.Cells[1,i]:=FloatToStrF(x,ffFixed,4,2);
Form1.StringGrid1.Cells[2,i]:=FloatToStrF(sqr(x),ffFixed,4,2);
end
end;
procedure TForm1.Button1Click(Sender: TObject);
var i,n:integer;
MSExcel:Variant;
begin
Try
MSExcel:=CreateOLEObject('Excel.Application.9');
MSExcel.WorkBooks.Add; {Жаңа жұмыс кітабын қосу}
MSExcel.WorkBooks[1].WorkSheets[1].Name:='ÒÅÍÄÅÍÖÈß';
MSExcel.Application.Visible:=True;
Except
MessageDlg('С Excel что то не ...', mtInformation,[mbOk],0);
End;
MSExcel.WorkBooks[1].WorkSheets[1].Cells[1,1]:='x';
MSExcel.WorkBooks[1].WorkSheets[1].Cells[1,2]:='F(x)';
n:=1;
for i:=1 to StringGrid1.RowCount-1 do
begin
MSExcel.WorkBooks[1].WorkSheets[1].Cells[i,1].Value:=StrToFloat(StringGrid1.Cells[1,i]); MSExcel.WorkBooks[1].WorkSheets[1].Cells[i,2].Value:=StrToFloat(StringGrid1.Cells[2,i]);
n:=n+1; end;
MSExcel.Application.Charts.Add;
MSExcel.Application.ActiveChart.ChartType:=4294963127; {xlXYScatter}
MSExcel.Application.ActiveChart.HasTitle := True;
MSExcel.Application.ActiveChart.ChartTitle.Text := 'MS Excel';
MSExcel.Application.WorkSheets[1].Activate;
MSExcel.Application.WorkSheets[1].Range['A1:B'+IntToStr(n-1)].Select;
MSExcel.Application.Charts[1].Activate; { Диаграммаға құру }
MSExcel.Application.ActiveChart.SetSourceData(Source:=MSExcel.Application.WorkSheets[1].Range['A1:B'+IntToStr(n-1)],PlotBy:=2);
MSExcel.Application.ActiveChart.SeriesCollection(1).HasDataLabels := True;
MSExcel.Application.ActiveChart.SeriesCollection(1).Select;
MSExcel.Application.ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=-4132,Forward:=0,Backward:=0,DisplayEquation:=true,DisplayRSquared:=True).Select;
MSExcel.Application.ActiveChart.HasLegend :=True;
MSExcel.Application.ActiveChart.Legend.Select;
MSExcel.Application.Selection.Font.Size:=14;
MSExcel.Application.Selection.Position:=4294963189; {x1Bottomx1Bottom;}
MSExcel.Application.ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Select;
MSExcel.Application.Selection.AutoScaleFont:=true;
MSExcel.Application.Selection.Font.Size:=20;
MSExcel.Application.ActiveChart.ChartArea.Select;
MSExcel.Application.ActiveChart.ChartArea.Copy;
Form2.OleContainer1.Paste;
If not varIsEmpty(MSExcel) then begin
MSExcel.Application.Quit;
MSExcel:=Unassigned
End
11-сурет.
ҚОРТЫНДЫ
Берілген курстық жұмыста біз Delphi қолданбасында жүзеге
ӘДЕБИЕТТЕР ТІЗІМІ
1) А. Я. Архангельский. Приемы программирования в Delphi.
2) Дарахвелидзе П. Г., Марков Е. П., Котенок
3) Елманова Н. З., Трепалин С. В. Delphi4.-
4