Delphi-дегі сервер компоненттері



1. DELPHI.ДЕГІ СЕРВЕР КОМПОНЕНТТЕРІ 4
1.1. Excel сервері. 10
Excel Application1.Dialogs[xlDialogOpen]. Show( 22
1.2. OLE автоматизациясын Excel, Word, Outlook, Access жұмыстарында қолдану. 22
Try 25
1.3. ADO мәліметтер қоры сияқты Excel кітабымен жұмыс. 29

2. ПРАКТИКАЛЫҚ ЖҰМЫСТАР 39
If not varIsEmpty(MSExcel) then begin 48

ҚОРТЫНДЫ 51

ӘДЕБИЕТТЕР ТІЗІМІ 52
1. DELPHI-ДЕГІ СЕРВЕР КОМПОНЕНТТЕРІ
Delphi5-пен бастағанда, Word, Excel және басқада көптеген Windows немесе MicrosoftOffice стандартты орнатуларына жататын кең тараған бағдарламалармен өзара әрекеттеседі Servers бетіндегі кітапханада орналасқан компоненттердің көмегімен Delphi қолданбаларында жүзеге аса алады. Бұл компоненттер көптеген COM импортталатын серверлерді бейнелейді. Олардың барлығы өзінің TOleServer базалық класының буыны болып табылады. Бұл класта сервермен байланысты орнатуға мүмкіндік беретін абстрактілі әдістермен қасиеттер жарияланған. Сондықтан TOleServer класс объектлерін тікелей құруға болмайды. Қолдонбаларда тек осы кластың буындары-СОМ нақты серверлері қолданылады. Олар Delphi ортасында projectImport командасымен іске асырылатын импортты типтер кітапханасымен құрылады.
Servers бетінің компоненттері MicrosoftOffice 97 және MicrosoftOffice 2000/XP үшін әртүрлі. Дегенмен, бұл компоненттерсіз өз қолданбаңызда кластарға сәйкес келетін объктлер құруға болады. Бұл жерде Delphi6-ның әрбір сервер класында екіншіден модульға ие екенін ескере кеткен жөн. Мысалы: Excel сервері үшін бұл Excel 97 және Excel 2000 модульдары. Яғни, бұларға қарап айыруға болады, бірінші MicrosoftOffice97-ге, ал екінші MicrosoftOffice2000 ға жатады. Сондай-ақ Excel сервері үшін excel97 және Word2000 модульдары бар. Delphi 7-де Windows XP үшін ExcelXP, WordXP және т.б модульдер қосылған.
Серверлер қолданатын қолданбаларда ең аз дегенде бір жоғарыда көрсетілген модульдарды қосу қажет. Мысалы: Excel серверімен жұмыс барысында сіздің қолданбаңызда
Uses … Excel97; операторы қосылған болуы қажет, немесе
Uses … Excel2000; операторы немесе
Uses … ExcelXP;операторы.
Сервер сипаттайтын көрсетілген модульдердің бірін іске қосу барысында сіз Microsoft Office 97, немесе Microsoft 2000, немесе MicrosoftXP –мен жұмыс атқаратын қолданба құра аласыз. Бірақ кей жағдайда кез-келген офиспен жұмыс атқаратын әмбебап қолданба құруға болады. Онда екі немесе үш модуль қосу қажет. Мысалы:
Uses Excel97, Excdel2000;
Соңғы мысалда қосылған модуль (мысалда Excel2000) үнсіздік бойынша жұмыс істейді. Ал басқа модуль қасиеттерімен әдістеріне мәтінде анық сілтемелер беру қажет.
Орындалу үрдісінде нақты модуль объектісін қолдану үшін, бағдарламалық түрде анықтау үшін Windows нұсқаларының анықтау тәсілдерін пайдалануға болады. Мысалы:
If (GetVersion>=$80000000)
Then … // операторы
Else… //операторы
Шынында да, егер Windows нұсқаулары MicrosoftOffice нұсқауларымен сәйкес келмесе, онда ол жүзеге аса алмайды. Мысалы: Windows98-де MicrosoftOffice 2000 орнатылуы мүмкін. Бұл жағдайда Version серверлер қасиеттері көмек көрсетеді. Мысалы TExcelApplication класының ExcelApplication1 объектісі үшін бұл қасиет Excel2002 үшін “10.0” жолынан және Excel97 үшін “8.0”жолынан тұрады. Сол себепті бұл нұсқауларды оқу (анықтау) келесі түрде хатталуы мүмкін.
If (StrToInt(Copy(ExcelApplication1.Version0, Pos(‘.’,ExcelApplication1.Version)-1)))<9
Then … //Excel 97
Else …// Excel2000
Енді Excel серверлер мысалында

СОДЕРЖАНИЕ

1. DELPHI-ДЕГІ СЕРВЕР КОМПОНЕНТТЕРІ 4
1.1. Excel сервері. 10
Excel Application1.Dialogs[xlDialogOpen]. Show( 22
1.2. OLE автоматизациясын Excel, Word, Outlook, Access жұмыстарында
қолдану. 22
Try 25
1.3. ADO мәліметтер қоры сияқты Excel кітабымен жұмыс. 29
2. ПРАКТИКАЛЫҚ ЖҰМЫСТАР 39
If not varIsEmpty(MSExcel) then begin 48
ҚОРТЫНДЫ 51
ӘДЕБИЕТТЕР ТІЗІМІ 52

1. DELPHI-ДЕГІ СЕРВЕР КОМПОНЕНТТЕРІ

Delphi5-пен бастағанда, Word, Excel және басқада көптеген
Windows немесе MicrosoftOffice стандартты орнатуларына жататын кең тараған
бағдарламалармен өзара әрекеттеседі Servers бетіндегі кітапханада
орналасқан компоненттердің көмегімен Delphi қолданбаларында жүзеге аса
алады. Бұл компоненттер көптеген COM импортталатын серверлерді бейнелейді.
Олардың барлығы өзінің TOleServer базалық класының буыны болып табылады.
Бұл класта сервермен байланысты орнатуға мүмкіндік беретін абстрактілі
әдістермен қасиеттер жарияланған. Сондықтан TOleServer класс объектлерін
тікелей құруға болмайды. Қолдонбаларда тек осы кластың буындары-СОМ нақты
серверлері қолданылады. Олар Delphi ортасында projectImport командасымен
іске асырылатын импортты типтер кітапханасымен құрылады.
Servers бетінің компоненттері MicrosoftOffice 97 және
MicrosoftOffice 2000XP үшін әртүрлі. Дегенмен, бұл компоненттерсіз өз
қолданбаңызда кластарға сәйкес келетін объктлер құруға болады. Бұл жерде
Delphi6-ның әрбір сервер класында екіншіден модульға ие екенін ескере
кеткен жөн. Мысалы: Excel сервері үшін бұл Excel 97 және Excel 2000
модульдары. Яғни, бұларға қарап айыруға болады, бірінші MicrosoftOffice97-
ге, ал екінші MicrosoftOffice2000 ға жатады. Сондай-ақ Excel сервері үшін
excel97 және Word2000 модульдары бар. Delphi 7-де Windows XP үшін ExcelXP,
WordXP және т.б модульдер қосылған.
Серверлер қолданатын қолданбаларда ең аз дегенде бір жоғарыда
көрсетілген модульдарды қосу қажет. Мысалы: Excel серверімен жұмыс
барысында сіздің қолданбаңызда
Uses ... Excel97; операторы қосылған болуы қажет, немесе
Uses ... Excel2000; операторы немесе
Uses ... ExcelXP;операторы.
Сервер сипаттайтын көрсетілген модульдердің бірін іске қосу
барысында сіз Microsoft Office 97, немесе Microsoft 2000, немесе
MicrosoftXP –мен жұмыс атқаратын қолданба құра аласыз. Бірақ кей жағдайда
кез-келген офиспен жұмыс атқаратын әмбебап қолданба құруға болады. Онда екі
немесе үш модуль қосу қажет. Мысалы:
Uses Excel97, Excdel2000;
Соңғы мысалда қосылған модуль (мысалда Excel2000) үнсіздік бойынша
жұмыс істейді. Ал басқа модуль қасиеттерімен әдістеріне мәтінде анық
сілтемелер беру қажет.
Орындалу үрдісінде нақты модуль объектісін қолдану үшін,
бағдарламалық түрде анықтау үшін Windows нұсқаларының анықтау тәсілдерін
пайдалануға болады. Мысалы:
If (GetVersion=$80000000)
Then ... операторы
Else... операторы
Шынында да, егер Windows нұсқаулары MicrosoftOffice нұсқауларымен
сәйкес келмесе, онда ол жүзеге аса алмайды. Мысалы: Windows98-де
MicrosoftOffice 2000 орнатылуы мүмкін. Бұл жағдайда Version серверлер
қасиеттері көмек көрсетеді. Мысалы TExcelApplication класының
ExcelApplication1 объектісі үшін бұл қасиет Excel2002 үшін “10.0” жолынан
және Excel97 үшін “8.0”жолынан тұрады. Сол себепті бұл нұсқауларды оқу
(анықтау) келесі түрде хатталуы мүмкін.
If (StrToInt(Copy(ExcelApplication1.Ve rsion0,
Pos(‘.’,ExcelApplication1.Version)- 1)))9
Then ... Excel 97
Else ... Excel2000
Енді Excel серверлер мысалында серверлер объектлерімен жұмыс
атқаруда жалпы ерекшеліктерін қарастырайық. Тек осы серверлермен жұмыс
Delphi қолданбалары үшін көп мөлшерде перспективті болып келеді.
Серверлерді қолдану үшін екі режим болуы мүмкін: Servers бетінен
ExcelApplication сәйкес компоненттерін формаға тасымалдау, немесе
TExcelApplication класс объектлерін бағдарламалық түрде құру. Бірінші
жағдайда жобалау барысында жарияланған серверлер қасиеттрін орнатуға
болады. Екінші жағдайда, бағдарламалық түрде беруге болады. Мысалы: Excel
сервері үшін ол келесі түрде жасалады:
Var ExcelApplication1: TExcelApplication;
ExcelApplication1: =TExcelApplication.Create(self);
...
ExcelApplication1.Connect;
Дегенмен, AutoConnect қасиетімен немесе Connect әдісімен байланыс
орнату міндетті емес. Қандайда бір сервер әдісін шақыру орындау барысында
немесе оның қандайда бір қасиетіне мән берілсе, онда байланыс автоматты
түрде орнатылады.
AutoConnect қасиетін қолдану үшін true мәнін орнату тек қолданбаны
іске қосу жағдайында ғана әсер ететінін аңғаруға болады, яғни егер бұл
қасиет жобалау кезінде орнатылса қолданбаның орындалу барысында
AutoConnect=true мәнін беру ешқандай әсер етпейді. Сол үшін сервер
компонентін қолданбайтын болсаңыз, бұл қасиетті беру қажет емес.
ConnectKind қасиеті сервермен байланыс шынында да қалай жүзеге
асатынын анықтайды. Бұл қасиет келесі мәндерді қабылдауы мүмкін.
сkRunningOrNew Орындалу үстіндегі серверге қосылу немесе

сервердің жаңа экземплярын құру.
сkNewInstance Әрқашан сервердің жаңа экземплярын
құру.
ckRunningInstance Тек орындалу үстіндегі серверге қосылу.
ckRemote Қашықтағы серверге қосылу.
Бұл опция RemoteMachineName қасиетінің берілуімен үйлесімді бллуы
тиіс. ckAttcehToInterface Серверге қосылмау. Бұның орнына қолданба
ConnectTo интерфейс әдісін қамтамасыз етеді. ckAttcehToInterface опциясы
AutoConnect қасиетіне True мәні орнатылған жағдайда қатар қолданылмайды.
Үнсіздік жағдайда ConnectKind мәні crRunningOnNew-ге тең. Егер байланысу
барысында орындалу үстіндегі сервер бар болса (ExcelApplication-ға Excel
анық болса), онда қолданбада тек осы орындалып жатқан сервер экземплярымен
байланысады. Егер бұл кезде сәйкес сервер орындалып жатпаса онда жаңа
сервер экзампляры құрылады (біздің жағдайда Excel-ты іске қосу жүзеге
асырылады.
Егер ConnectKind мәні ckRunningOnNew мәніне тең болса, онда қолданба
әрқашан сервердің жаңа экземплярын құрады. Егер ConnectKind мәні
ckRunningInstance болса онда қолданба әрқашан орындалып жатқан сервер жоқ
болса, онда EOleSysError шығарылуы генерирленеді. Сондықтан
ConnectKind=ckRunningInstance болғанда байланыс кезінде компьютерде
орындалатын сервер бар болады, байланысты мысалы мына түрде жүзеге асыруға
болады:
Uses ComObj;
...
Try
...
ExcelApplication1.Connect;
Except
On EOleSysError do begin
Application.MessageBox(‘на компьютере не выполняющегося в

данный момент Excel’, приложение будет закрыто’,
MB_OK+MB_ICONEXCLAMATION);
Application.Terminate;
End;
End;
Келтірілген код EOleSysError шығаруын жолдан ұстап алады және
қолданушыға сәйкес хабарлауды ұсынады. Тек қолданбада EOleSysError
шығарылуы жарияланатын ComObj модуліне қосылған жоғарыда келтірілген Uses
операторын қою қажет. Бұл модуль автоматты түрде қосылмайды.
ConnektKind=ckRemote мәні егер қашықтағы сервермен байланыс болған жағдайда
қолданылады. Бұл жағдайда RemotMachineName қасиеті қашықтағы сервер
орындалатын компьютерді көрсетуі қажет.
Сайып келгенде, серверге қосылуды қамтамасыз ететін қасиеттерді
қарастыруды келесі түрде алуға болады:
-Егер сіз қолданбаңызда қолданба іске қосылу кезінде орындалатын
сервердің қандайда бір ашық құжатымен жұмыс істеу қажет болса, онда
ConnectKind=ckRunningInstansce мәнін беру керек.
-Егер,сізге керісінше, қолданбаңыз орындалатын серверде қандай да
бір құжатта кедергісін тигізбеу қажет болса, онда кездейсоқ
ConnectKind=ckNewInstansce беру керек.
-Егер сізде қашықтағы сервермен байланысу қажет болса, онда
ConnectKind=ckNewInstansce беру керек және сәйкес RemoteMachineName мәнін
орнату керек.
-Қалған жағдайларда, ckRunningOrNew қатынасы үнсіздік жағдайда
берілген мақсатқа лайықты сақталады.
Сервермен байланысты орнатқанан кейін ол қолданушыға әліде көрінбей
тұрады. Дегенмен, қолданба осы сервермен жұмыс жасай алады., оның кезкелген
әдістерән шақыра алады, қасиеттерін өзгерте немесе оқи алады. Бірақ
сервердің өзі қолданушы үшін кадр артында қалып қояды. Егер тіпті қажет
болса, яғни қолданушы серверде не болып жатқанын көріп тұруы қажет болса,
онда Visible қасинтіне True мәнін беру керек.
ExcelApplication1.Visible=True;
Сервермен байланысуды тоқтату Disconnect әдісімен жүзеге асады.
Бұдан басқа СОМ серверінің ExcelApplication сияқты компоненттері AutoQuit
қасиеттеріне ие. Егер бұл қасиетке True мәнін берсе, онда қолданбаның
аяқталуы барысындағы аяқтайтын автоматы түрде әдісі шақырылады. Бұл қасиет,
егер сіз қолданбаңыз құрған сервердің экземплярымен жұмыс жасап отырған
болсаңыз, онда True мәнін орнату тиімді болып келеді және қолданбамен
жұмысты аяқтау барысында қолданушы сервермен жұмысын ары қарай жалғастыра
алады. Онда AutoQuit-ке True мәнін орнату қажет немесе қолданбаны аяқтау
барысында ExcelApplication1.Disconnect түріндегі операторды орнату қажет.
Әсіресе,егер сіздің қолданбаңыздың сервермен жұмыс жасау үрдісі
кезінде серверді көрінбейтіндей етпеген жағдайда қажетті. Егер сіз
байланысты жаппаған болсаңыз, онда қолданбаңызбен жұмыс аяқталғаннан
кейінде сервер бұрынғыша көрінбей тұрады, және ол мақсат жол атында
бейнеленбейді. Бірақ шынында да ол орындалады.
Қолданушы Windows-ты жапқысы келгенде, ол кездейсоқ қандай да бір
хабарламалардың шығуы мүмкін, мысалы сақтау туралы сұраныс т. б.
Егер сіз сервер компонентін қолданбайтын болсаңыз, ал бағдарламалық
сервер объектісін құратын болсаңыз, онда бұның барлығы келесі түрде
ұйымдастырылад:
Var TExcelApplication;
Procedure TForm1.FormCreate(Sender:TObject);
begin
ExcelApplication1:=TExcelApplicatio n.Create(Self);
ExcelApplication1.ConnectKind:=ckNe wInstance;
ExcelApplication1.AutoQuit:=true;
ExcelApplication1.Visible:=true;
...
end;
Procedure TForm1.FormDestroy(Sender:TObject);
Begin
ExcelApplication1.Free;
...
end;
Бұл мысалда OnCreate форма оқиғаларын өңдеуде ExcelApplication1.
сервер объектісі құрылады. Оның ConnectKind қасиетіне Excel-дің жаңа
экзамплярын құруды қамтамасыз ететін ckNewInstance беріледі. Бұл опеатор
сервер әдістеріне немесе қасиеттеріне қатынасатын операторлардың алды Excel
бағдарламасымен байланысуды орнатады. Егер бұл операторда ConnectKind-тің
талап етілген мәні берілсе, онда байланысу үнсіздік жағдайында
тағайындалған ckRunningOrNew мәні арқылы жүзеге асады. Бұдан кейін
ConnectKind-қа басқа мәндер берудің қажеті жоқ.
AutoQuit қасиетінің келтірілген кодында қолданба аяқталу барысында
автоматты түрде Excel-ді жабуды қамтамасыз ететін True мәні орнатылады. Ары
қарй құрылған Excel экзамплярын оператормен байланысын
ExcelApplication1.Connect түрінде жүзеге асыруға болады.
Соңғы келтірілген мысалда Visible сервер қасиетіне True мәні
беріледі. Мұны егер есеп шарты бойынша Excel терезесін көре алатын жағдайда
жүзеге асыруға болады.
OnDestray форма оқиғалары өңдеушісінде сервер объектісінің астында
белгіленген жады басталады. Егер AutoQuit қасиетіне ертерек True мәні
берілген болса, онда форманы жабу кезінде excelApplication1Disconnect;
операторын орындау қажет.

1.1. Excel сервері.

Әдетте қолданбада есептелінген немесе мәліметтер қорыннан алынған
мәліметтерді қандайда бір бланкке енгізу және құжатты баспаға беру қажет
болса Delphi қолданбасынан Excel-ге қатынасу жиі қажет болады. Яғни бұл
жағдайда қолданушыға дайындалған Excel құжатын алдын-ала қарауға және онда
қандайда бір өзгертулер жасауға мүмкіндік береді.
Осының барлығын сәйкес серверлер кластарының көмегімен жүзеге
асыруға болады. Жоғарыда Excel серверлері толығымен қарастырылды. Енді
Excel-дің сервермен жұмыс істеу ерекшеліктеріне тоқталамыз.
Excel, MicrosoftOffice 2000XP-да дайындалған құжаттарды еркін оқи
алады. Сондықтан, Uses операторына Excel2000 файлын қосып жаза аламыз, және
қолданба офистің кез-келген нұсқасында жұмыс істей алады. Бірақ кейбір
жағдайларда Windows-тың нұсқаларын тексеріп алуымыз қажет.
Толығымен алғанда Excel-мен ұйымдастыру сызбасы мынандай түрде
болады.
Uses... OleServer; Excel97, Excel2000;
Var ExcelApplication1:T ExcelApplication;
ExcelWorkbook;
ExcelWorkSheet;
Procedure TForm1.FormCreate(Sender:TObject);
Begin
ExcelApplication1:=TExcelApplicatio n.Greate(Self);
ExcelApplication1.ConnectKind:=ckNe wInstance;
ExcelApplication1.AutoQuit:=True;
ExcelApplication1.Visible[LOCAL_USE R_DEFAULT]:=true;
ExcelWorkbook1:= ExcelApplication1.ActiveWorkbook.Ac tiveSheet

As ExcelWorksheet;
End;
Procedure TFormFormDestroy(Sender:Tobject);
Begin
Excel.Free;
End;
Uses операторы өзіне OleServer, Excel97 және Excel2000 модульдарын
қосады. Біріншісі сервермен жұмыс кезінде қолданылатын кейбір тұрақтыларды
жариялаудан тұрады. Excel97 және Excel2000 модульдарын егер Microsoft
Office-ң әртүрлі нұсқасымен жұмыс істеген кезде және әдістер қолданған
кезде қосып жазуға болады. Керісінше бұл жағдайда осы модуьдардың біреуін
ғана қосу жеткілікті. Келтірілген кодта үш тұрақты жариялаған.
ExcelApplication1 тұрақтысы-сервер объектісі, ExcelWorkbook1 тұрақтысы-
кітап объектісі, ExcelWorkSheet1 тұрақтысы-кітап беттері объектісі. Егер
сіз Srvers беті кітапханасынан ExcelApplication, ExcelWorkbook және
ExcelWorkSheet сәйкес компоненттерін қолданған болсаңыз, онда бұл
жарияланудың қажеті жоқ. Бірақ бұл жерде сервердің қолданылмайтын
компоненттері, варианттары қарастырылады.
Форманың OnCreate оқиғасы өңдеушіде бірінші оператор сервер
объектісінқұрады. Келесі оператор Excel-ң жаңа экзамплярын құруды
қамтамасыз ететін ConnectKind сервер қасиетіне ckNewInstance-ке
теңестіоеді. Бұл оператор сервер сервер әдісінежәне қасиеттеріне қатынасушы
операторлардың біріншісі болып табылады. Керісінше жағдайда Excel-мен
байланысу үнсіздік жағдайында қабылданған CKRunningOrNew мәні кезінде
жүзеге асады. Осыдан кейін ConnectKind-қа басқа мәндер беру жай болып
кетеді.
AutoQuit қасиетіне келтірілген кодқа қолданба аяқталған кезде Excel-
ді автоматты түрде жабуды қамтамасыз ететін True мәні орнатылады.
Келтірілген мысал соңында Visible сервер қасиеті True мәніне тең. Яғни, бұл
берілген мәннің көмегімен қолданушы Excel терезесін көре алады. Ал егер
Excel-мен жұмыс “курсордың арғы жағында” жүру керек болса, онда бұл
оператордың керегі жоқ. Visible қасиетінен кейін кодта LOCALE_USER_DEFAULT
квадраттық жақшада мәні берілген. Delphi-да жүзеге асатын Excel серверінің
өте көптеген қасиеттерімен әдістері жергілікті идентификаторы LCID беруді
талап етеді. Жалпы айтқанда, Windows-ң көптеген нұсқалары LCID=0 беріледі.
Бірақ осы идентификаторды LOСALE_SYSTEM_DEFAULT немесе LOCALE_USER_DEFAULT-
жергілікті идентификатор немесе ағымдық қолданушы мәнін беру тиімдірек.
Егер сіз модульде немесе параметрлер арасынан LCID көретін болсаңыз, онда
оны көрсетілген тұрақтылардың бірін тең етіп беруге болады. Excel
серверінде ActiveWorkBook-активті кітап қасиеті бар. Осы қасиеттің
ActiveSheet-активті парақ бағыныңқы қасиеті бар. Бұл қасиеттер келтірілген
кодта ExcelWorkSheet айнымалысына мән беру үшін қолданылған.
OnDestroy форма оқиғасы өңдеушісінде сервер объектісі астында
бөлектелінген жады басталады. Егер AutoQuit қасиетіне True мәні берілген
болса, онда форманы жабу кезінде ExcelApplication1.DisConnect операторын
орындау қажет.
Егер тағыда бір кітап құру қажет болса, онда оны
ExcelApplication1.Workbooks.Add(Emp tyParam, LOKALE_USER_DEFAULT); операторы
көмегімен жүзеге асыруға болады.
Ал егер файлда сақталған кітапты ашу қажет болса, онда оны келесі
кодтың көмегімен ашуға болады:
If OpenDialog1.Excecute
Then ExcelWorkbook1:= ExcelApplication1.Workboks.Add(
OpenDialog1.FileName, LOCALE_USER_DEFAULT);
Бұл жерде файлды ашудың стандартты диалогы шақырылады, және егер
қолданушы оның ішінен файл таңдаған болса, онда ол Workboks коллекциясында
ашылады және қосылады.
Жаңа кітаптар үнсіздік жағдайында орнатылған парақтар саны құрылады.
Егер құрылатын кітапта парақтар санын өзіңіз бергіңіз келсе, онда Add
әдісінің орындалуының алдында SheetsInNewWorkbook қасиетіне сәйкес мәндерді
беруге болады. ExcelApplication1.
SheetsInNewWorkbook(LOCALE_USER_DEF AULT):=1; операторын орындасаңыз онда
келесі барлық барлық шақыруында Add әдісінің SheetsInNewWorkbook-қа мәнін
өзгертсеңіз бір парақты кітап құрылады. Workbooks ашық кітап коллекциясы
қандайда бір операциялар орындалатын кітапты көрсетуге мүмкіндік береді.
Бұл қасиетті индекс 1-бірінші ашық кітапқа, 2-екінші, т.с.с сәйкес келетін
индекстелген массив ретінде қарастыруға болады. Мысалы:
ExcelBook1:=ExcelApplication1.Workb ook(StrToInt(Edit1.Text));
операторы ExcelWorkbook1 айнымалысына индексі Edit1 редактирлеу терезесінде
көрсетілген кітапты тасымалдайды. Осыдан кейін ExcelWorkbook1объект
қасиеттерімен әдістері осы кітапқа қатынасады. Егер оны қолданушыға ашу
керек болса, онда оны ExcelWorkbook1.Active(LOCALE_USER_D EFAULT);
операторының көмегімен активті етуге болады.
Workbooks қасиетінің Count бағыныңқы қасиеті Excel-де ашылған
кітаптар санын анықтайды. Count қасиеті барлық кітаптарды индекc бойынша
цикл ұйымдастыруға мүмкіндік береді. Workbooks массивіне тек индекс бойынша
емес, кітап атыменде қатынасуға болады. Мысалы, келесі операторларн
(мысалы, “книга1”) атты Edit1 терезесінде жазылған кітапты ашады және
активті етеді:
ExcelWorkbook1:= ExcelApplication1.Workbooks[Edit1.T ext];
ExcelWorkbook1.Activate(LOCALE_USER _DEFAULT);
Кітапты тек бір ғана LCID-аргументі берілетін Save әдісі арқылы
сақтауға болады. Мысалы:
ExcelApplication1.ActiveWorkbook1.S ave(LOCALE_USER_DEFAULT); операторы
(Excel терезесі ашылған) активті кітапты сақтайды. Ал ExcelWorkbook1.
Save(LOCALE_USER_DEFAULT); операторы ExcelWorkbook1 объектісімен
байланысқан кітапты сақтайды. Бұл кітап дәл осы кезде активті болуы мүмкін.

Келесі мысал барлық ашық кітапты сақтайды.
Var i:integer;
...
for I;=1 to ExcelApplication1.Workbooks.Count do
ExcelApplication1.Workbooks[i].Save (LOCALE_USER_DEFAULT);
Сипатталған Save әдісі атты каталогтағы кітап атымен сәйкес келетін
(мысалы, “книга1.xls”)кітапты файлда сақтайды. Егер осындай атпен файл бар
болса, онда қолданушыдан бар файлды ауыстыруға бола ма деп сұралынады.
Кітаптарды сақтаудың кең ауқымды мүмкіндігін SaveAs әдісі береді.Ол
келесі түрде жарияланады:
Prosedure SaveAs(filename:Olevariant; FileFormat: OleVariant;
Password: OleVariant; WriteResPassword: OleVariant;
ReadOnlyRecommended: OleVariant; CreateBackup: OleVariant;
AccsesMode:XLsaveAs AccsesMode;
ConflictResolution: OleVariant; AddToMru: OleVariant;
TextCodePage: OleVariant; TextVisualLayout: OleVariant;
Lcid:Integer);
Filename параметрі-кітап сақталатын файл аты. Егер атта жол
көрсетілмеген болса, онда файл ағымдық каталогта сақталады. AccessMode
параметрі файлға қатынау режімін анықтайды және xlNoChange-бұрын орнатылған
режимді өзгертпейді, xlShared-басқа қолданушылардың еркін қабылдауы,
xlExclusive-қолданушының файлға нақты қатынауы сияқты мәндерді қабылдауы
мүмкін. xlExclusive мәнінде кітап көрсетілген файлда сақталынады, ал егер
осы кітап басқа қолданушымен ашық болса, онда файлда басқа атпен сақтау
туралы сұрау ұсынылады. Icid әдісінің соңғы параметрі 0-ге тең болып
беріледі. Қалған параметрлерді EmptyParam-ға тең етіп беруге болады. Бұл
параметрлер сақтау қатынастарын және FileFormat-файл форматы, Password-
файлды ашу паролі; WriteResPassword-файлды өзгерту паролі;
ReadOnlyRecomended-тек оқу үшін кепілдеме беру; CreateBackup-әр қашан қорлы
көшірме құру; ConflictResolution-қолданушылар арасындағы келіспеушілікті
шешу тәсілі; AddToMru-файлды жуықта қолданылған файлдар ретінде қосу және
т. с. с. файлды қолдану.
Келесі код SaveDialog файлды сақтау диалогын шақырады және
қолданушымен берілген активті кітапта файлды сақтайды:
If SaveDialog1. Execute
Then
ExcelApplication1.ActiveWorkbook.Sa veAs(SaveDialog1.FileName’
EmmptyParam, EmmptyParam, EmmptyParam, EmmptyParam,
EmmptyParam, xlNoChange, EmmptyParam,
EmmptyParam,
EmmptyParam, EmmptyParam, LOCALE_USER_DEFAULT);
Excel-дегі барлық ашық кітаптарды тек бір ғана LCID-аргументі
берілетін Close әдісінің көмегімен жабуға болады.
ExcelApplication1.Workbooks.Close(L OCALE_USER_DEFAULT);
Тек нақты кітапты жабу үшін бір атты Close әдісі арқылы жабуға
болады, бірақ тек кітапқа қатыстысымен. Бұл әдіс келесі түрмен жарияланған:
Proсedure Close (SaveChanges:OleVariant; FileName: OleVariant;
RouteWorkbook: OleVariant;
LCID:Integer); SaveChanges-параметрі әлі сақталмаған, бірақ қандайда бір
өзгертулер енгізілген кітапты жабу кезінде не болатынын көрсетеді. Егер
SaveChanges=True; болса, онда аты FileName параметрі көрсетілмеген болса
(EmmptyParam-ға тең болса ), онда қолданушыға файл атын көрсету қажет. Егер
SaveChanges=False; онда FileName мәніне тәуелсіз өзгертулер сақталмайды.
Ал егер SaveChanges= EmmptyParam; болса, онда қолданушыға өзгертілген
файлды сақтау туралы сұрау қояды. Шынында да, осының барлығы
құжаттамалардан туындайды. Ал тәжірибеде Excel-ң көптеген нұсқалары
SaveChanges=False; жағдайында қалай жұмыс істесе SaveChanges= EmmptyParam;
жағдайында солай жұмыс істейді, бұл дегеніміз, мәліметтерді сақтау
қажеттілігі туралы сұрақтың қойылуы.
RoutWorkbook параметрі қандай да бір адреске сілтеме жасау үшін
арналған кітап жағдайында қолданылады. Жай жағдайларда бұл параметр
EmmptyParam-ға тең болуы мүмкін.
ExcelApplication1.Workbooks[1].Clos e(EmmptyParam, EmmptyParam,
EmmptyParam, LOCALE_USER_DEFAULT); операторы
бірінші кітапты жабады, ал егер онда сақталмаған болса, онда қолданушыға
сақтау туралы сұрау қойылады.
Келесі мысал барлық ашық кітаптарды жабады:
Var i:integer;
For i:=1 to ExcelApplication1.Workbooks.Cout do ExcelApplication1.
Workbooks[1].Close (EmmptyParam, EmmptyParam,
LOCALE_USER_DEFAULT); Мына кодта ашық
кітаптарды жабады.
ExcelApplication1.Workbooks.Close(L OCALE_USER_DEFAULT); Келтірілген
мысалда кітаптар арасындағы циклді ұйымдастыруды көрсетеді. Кітап индексі
барлық жағдайда 1-ге тең екеніне көңіл аударуға болады. Бірінші кітаптың
жойылуы индекс ретінің сақталғанын көрсетеді. Яғни, екінші орындағы кітап
индексі бірінші орынға ауысады, т. с. с.
Барлық кітапты немесе оның арнайы бір парақтарын баспаға беруді
PrintOut әдісі арқылы жүзеге асыруға болады. Бұл әдістің жариялануы
Microsoft Office-ң әр нұсқасында әртүрлі. Excel 97 файлында:
Procedure PrintOut(Form:OleVariant; To: OleVariant;
Copies: OleVariant; Preview:
OleVariant;
ActivePrinter: OleVariant;
PrintToFile: OleVariant;
Collate: OleVariant; Icid: Ineger);
Excel2000 және ExcelXP файлдарында:
Procedure PrintOut(Form:OleVariant; To: OleVariant;
Copies: OleVariant; Preview:
OleVariant;
ActivePrinter: OleVariant;
PrintToFile: OleVariant;
Collate: OleVariant;
PrToFileName: OleVariant; Icid:
Ineger);
Form параметрі баспа басталатын беттің номерін көрсетеді. Егер бұл
параметр EmmptyParam-ға тең болса, онда бірінші беттен бастап баспаға
беріледі. То-параметрі соңғы баспаға берілетін беттің номерін көрсетеді.
Егер бұл параметр EmmptyParam-ға тең болса, онда соңғы баспаға берілетін
бет болып кітаптың соңғы беті болып табылады. Copies параметрі көшірмелер
санын анықтайды (үнсіздік жағдайда ол 1-ге тең). Preview параметрі баспаға
бермес бұрын құжатты алдын-ала құруға болатындығын көрсетеді (False немесе
EmmptyParam мәндері болмауы керек). ActivePrinter параметрі принтер атын
беруі мүмкін ( үнсіздік жағдайда ағымдық параметр ). PrintToFile параметрі
баспаның файлда жүзеге асырылуын қамтамасыз етеді. Ол False немесе
EmmptyParam мәндерінде қамтамасыз ете алмайды. True мәнінде
PrToFileNameпараметрі файл атын көрсетеді. Егер PrToFileName=EmmptyParam;
болған жағдайда қолданушыға файл аты туралы сұрақ қойылады. Collate
параметрі баспадан шыққан беттердің көшірмесі бойынша сұрыптауды көрсетеді.
( False немесе EmmptyParam мәндері керек жоқ ) Icid параметрі
LOCALE_USER_DEFAULT тең болып беріледі. Көбінесе Icid-тан басқа
параметрлерді EmmptyParam-ға ға тең етіп беруге болады. Егер Microsoft
Office-ң әр нұсқалары үшін баспаны қамтамасыз ету қажет болса, онда
PrintOut әдісінің орындалу алдында Windows-тың ағымдық нұсқасын тексеріп
алу қажет. Мысалы:
if (getVersion=$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 қасиетінде
орналасқан. Бұл жиын өзінің қасиеттері бойынша Workbooks жиынына ұқсас.
Параққа индексі немесе аты бойынша қатынасуға болады. Мысалы, келесі
операторлар ExcelWorkbook1 объектісімен ұсынылған кітаптың бірінші парағын
ашады және белсенді етеді, көрсеткішті осы парақтың ExcelWorkSheet1
айнымалысына беріледі және парақты белсенді етеді. Яғни, оны Excel
терезесінде бірінші жоспарға жылжытады:
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 параметрлері –алдынан немесе артынан қойылуы
жүзеге асатын парақ объектісі. Әдетте, осы параметрлердің бірін беріп,
екіншісін EmmptyParamға тең етіп алуға болады. Егер екі параметрде
EmmptyParam –ға тең болса, онда жаңа парақ ағымдық белсенді парақ алдынан
қойылады. Count параметрі қойылатын парақтар санын көрсетеді. Егер бұл
параметр ЕmmptyParam-ға тең болса, онда бір парақ қойылады. Type-параметрі
қойылатындар типін анықтайды. (EmmptyParam мәнінде жаңа бос парақ қойылады.
Мысалы, елесі код белсенді парағының алдынан жаңа парақ қояды және
ExcelWorkSheet1 айнымалысына көрсеткішті береді.
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);
Енді ұяшықтаомен жұмыс жасауға тоқталайық. Ол парақта бірімен-бірі
байланысқан Rang ұяшықтарының көпшілігін белгілейді. Одан кейін Rang
объектісінің мәліметтерін Value қасиетін қолдана отырып оұуға және
өзгертуге болады. Rang объектісі басынан аяғына дейін сол жақ жоғарғы және
оң жақ төменгі ұяшық көрсетілетін арнайы Rang әдісі арқылы құрылады. Егер
тек бір ғана ұяшық қажет болса, онда екіншінің орнына EmmptyParam-ды беруге
болады. Әдіс көрсеткішті құрылған объектіге қайтарады. Мысалы, келесі
операторлар тек В2 ұяшығын белгілейтін және осы ұяшықты оқитын мәндерін
өзгертетін MyRange обектісін құрады.
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-ші ұяшығының сол жақ жоғарғы бұрышынан бастап С3
ұяшығының оң жақ төменгі бұрышына дейінгі аралықта 9 ұяшықтан тұратын тік
төрбұрышты белгілейді. Ары қарай бірінші жолда- 1, 2, 3; екігші жолда –4,
5, 6 цифрын, үшінші жолда жоғарыдағы бірінші, екінші жолдардың қосындыларын
қамтамасыз ететін формулалардан тұратын екі өлшемді Variant массиві
формальданады. Қортындысында осы массив мәні Excel кестесіне енгізіледі.
Нәтижесінде мынандай болады.

  A B C
1 1 2 3
2 4 3 6
3 5 7 9

Range объектісінің Font қасиеті белгіленгендиапазондағы текст шифрін
береді. Оның Bold, Italic, UnderLine, Color, Size,Name бағыныңқы қасиеттері
сәйкес жартылай майлы шрифін, курсив, сызылған шриф түрін, оның өлшемін
және атын анықтайды. Мысалы,
MyRange.Font.Bold:=True;
MyRange.Font.Color:=ClRed; операторлары MyRange ұяшық диапазонына
қызыл жартылай майлы шрифт береді.
Қортындылай келе Excel диалогтарына тоқтала кетейік. Олар Excel
серверіндегі Dialogs қасиетінің Show әдісі арқылышақырылады. Индекс ретінде
осы қасиетке ашық диалог типі беріледі. Ал Show әдісіне шақырылатын
диалогтан тәуелді және әдетте EmmptyParam-ға тең етіп берілетін 30
параметрлер беріледі. Мысалы, келесі оператор параметрі Excel-де орнатылған
ашық файл диалогымен шақырылады. Егер қолданушы осы диалогта файл таңдаған
болса, онда сәйкес келетін кітап Excel терезесінде жүктеледі.

Excel Application1.Dialogs[xlDialogOpen]. Show(

EmmptyParam, EmmptyParam, EmmptyParam, EmmptyParam,
EmmptyParam, EmmptyParam, EmmptyParam,EmmptyParam,
EmmptyParam, EmmptyParam, EmmptyParam,EmmptyParam, EmmptyParam,
EmmptyParam, EmmptyParam, EmmptyParam, EmmptyParam, EmmptyParam,
EmmptyParam, EmmptyParam,
EmmptyParam, EmmptyParam, EmmptyParam,EmmptyParam);
Егер сол операторда Dialog қасиеті индекснде xlDialogSaveAs
көрсететін болса, онда қолданушыға файл атын көрсетуге мүмкіндігін беретін
файлды сақтау диалогы шақырылады. Келесі диалог индентификаторларын атай
кетейік: xlDialogPrint- ағымдағы бетті баспаға жіберу, xlDialogPageSetup-
бет параметрлерін беру, xlDialogFont- барлық беттер үшін шрифт таңдау және
көптеген басқа да барлығы 234 ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Бала-бақша МҚБЖ-н құру
Delphi-де мәліметтер қорын құру технологиялары
Delphi және мәліметтер қоры сервері
ADO технологиясы
Delphі-ді көрсетуші объекті - бағытталған жүйеде жобалау
Ипотекалық несие беру деректер базасын жобалау
Деректер базасының түрлері
Деректер базасының сервері
Деректер базасының кестесін компонентпен байланыстыру
Мәліметтер қоры сервері
Пәндер