Жоспар №12178

Delphi-дегі сервер компоненттері: Excel-пен OLE автоматизациясы және ADO арқылы деректермен жұмыс

Сұрақ-жауап

Сұрағыңызға жасанды интеллект жауап береді

СОДЕРЖАНИЕ 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 

Мәтінді көшіру үшін белсенді жазылым қажет.

Пайдаланушы ID: 492715

Жарияланған күні: