Қосымшаның негізгі формасы
МАЗМҰНЫ
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ... ... ... ..4
1. Жалпы
бөлім ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... 6
1.1 Берілгендер қоры қосымшасының
құрылымы ... ... ... ... ... ... ... ... ... ... ... ... .. ... 6
1.2 Мәліметтер қоры қосымшасы қалай жұмыс істейді ... ... ... ... ... ... ... ... ...7
1.3 Мәліметтер модулі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...9
1.4 Мәліметтер жинағын қосу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 10
1.5 TdataSource компонентін құру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 12
1.6 Мәліметтерді кескіндеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 16
2. Арнайы бөлім ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...16
2.1 Есептің қойылу шарты ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .16
2.2 Есептің формальды қойылуы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .17
2.3 Алгоритмнің жалпы құрылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..18
2.4 Программалық модуль құрылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ..19
2.5 Форма көріністері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...20
2.6 Есептің орындалу үрдісі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..23
2.6.1 Берілгендер қорына қол жеткізуге арналған сұхбат терезесін
DataModule формасын пайдаланып құру ... ... ... ... ... ... ... ... ... ... ... .23
2. DLL құру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...37
3. DLL және берілгендер қорымен жұмыс ... ... ... ... ... ... ... ... ... ... ...48
3. Экономикалық бөлім ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...65
3.1 Жобаны экономикалық бағалау ... ... ... ... ... ... ... ... ... ... ... ... ... ... .65
3.2 Бағдарламалық қамтамасыздандыруды игерудегі экономикалық тиімділікті
есептеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .66
4. Еңбекті қорғау және техникалық қауіпсіздіктің негізгі шаралары ... ... ...71
4.1 Еңбек пен демалысты ұйымдастыруда берілетін бірқатар кеңестер ... ... ... .75
2. Мекемені жарықтандыру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...76
3. Мониторға қойылатын талаптар ... ... ... ... ... ... ... ... ... ... ... ... ... ..77
4.4 Бағдарламалаушының жұмыс орнына қойылатын талаптар ... ... ... ... ... .80
4.5 Жұмыс орнындағы бағдарламалаушының атқаратын жұмысы ... ... ... ... 81
4.6 Электр және өрт қауіпсіздігі ... ... ... ... ... ... ... ... ... ... ... ... ... ...82
4.7 Жұмыс орнындағы температура, қысым, ылғалдық ... ... ... ... ... ... ... ...83
4.8 Төтенше жағдай кезіндегі атқарылатын жұмыс ... ... ... ... ... ... ... ... ... .83
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .85
Әдебиеттер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 87
Кіріспе
Windows ортасында бағдарламаның орындалуын ұйымдастырудың басқа
тәсілдері де бар. Орындалатын бағдарламаны (кодты) , мысалы, динамикалық
байланыстыру кітапханасына (dynamic-link library) орналастыруға болады.
Динамикалық кітапханалар бір немесе бірнеше қосымшалардан шақырылатын
процедуралар немесе функциялар жиынынан тұрады. Оларды басқа
орындалатын файлдармен шатастырмау үшін , олар *.dll кеңейтілуімен
беріледі. Dll - Windows-тың конструктивті элементтерінің ішіндегі ең
маңыздыларының бірі. Windows негізінде Dll жиынтығынан тұрады. Егер
Windows\System каталогына қарасақ, одан gdi32.dll, kernel32.dll және
user32.dll файлдарын көреміз. Windows орындайтын логика осы және басқа
файлдарда сақталады және оның бәрі Dll болып табылады.
Delphi бағдарламасы басқа тілдерде жазылған кітапханаларды пайдалана
алады, ал басқа тілдерде жазылған Windows бағдарламасы Delphi ортасында
құрылған DLL-дерді шақыра алады.
DLL-дің бағалылығы оларды бағдарлама орындалу барысында жадыға жазуға
және шығаруға болады, ол бірнеше мегабайттан тұратын қосымша құра
беруге мүмкіндік береді, бірақ олар ешқашан жүз килобайттан артық орын
алмайды. Мысалы, біздің бағдарламамыздағы қолданушы атымен паролін
енгізетін сұхбат терезесі бірақ рет –SQL –серверді қосқан кезде ғана
шақырылады,бірақ форма және онымен байланысқан бағдарламалық код
бағдарламамен жұмыс істеп біткенше жадыда тұрады.
Біздің мақсатымыз - реляциялық қорда сақталатын мәліметтерді
манипуляциялауға мүмкіндік беретін бағдарлама құру.
Бұл мәліметтермен жұмыс істеу басқарудың ерекше жүйесі –(бағдарламалық
кэш) мәліметтер қорының сервері деп аталатын бағдарламалық кешен арқылы
іске асырылады. Құратын бағдарламаны клиенттік қосымша деп атаймыз.
Клиент қосымшасы серверге SQL тілінде орындалған сұраныс береді, ал
сервер мәліметтермен қажетті манипуляциялар жасайды. Дербес жағдайда,
егер клиент мәліметтер таңдауға сұраныс жіберсе, онда сервер мәліметтер
жиынтығын клиентке жібереді. Онымен клиент қосымшасы жұмыс істейді.
Клиент қосымшасы келесі амалдарды орындау үшін қажет.
1.Мәліметтер серверін қосу, қолданушы аты мен паролін енгізу.
2.Серверге сұраныстар құрастыру және нәтиже алу.
3.Мәліметтерді қолданушыға ыңғайлы түрде көрсету.Мәліметтерді сұрыптау
және сүзу.
4.Мәліметтерді қосу және өшіру, мәліметтер жиынтығы бойынша жылжу.
Бағдарламада осы функциялардың бәрі орындалса, онда ол өте қолайсыз
болады. Бұл түсінікті де біз бағдарлама жазу кезінде алдыңғы құрған
формаларды өзгертпей өшірмей, жаңа формалар қоса береміз. Олардың
кейбіреуін қолданушының көруі міндетті емес, сондықтан артық ақпарат
пайда болады. Бағдарлама жазуда жалпы жоспар болуы қажет. Мұндай
жоспардың негізгі принципіне модульділік жатады. Қосымша белгілеріне
қарай бөлінген бірнеше дербес бағдарламалық бөліктерден тұрады. Әр
бөлікке жеке бағдарлама жазылады және жеке файл түрінде де берілуі
мүмкін. Delphi –де Windows ортасы үшін бағдарламалық терезе форма
жасалынады; әрбір формаға өзінің жеке бағдарламалық модулі –Unit сәйкес
келеді.
Бағдарламаны компиляциялаған және жинаған кезде бұл модульдердің бәрі
бір орындалатын файлға беріледі.
Бағдарламаның жұмысшы терезелері жұмыс барысында әртүрлі жиілікпен
шақырылады, себебі бір форма жиі қолданылады, ал басқасы сирек
қолданылады.Дегенмен, бағдарламаны орындалатын бір файл етіп
ұйымдастырғанда олар жадыға жазылады және одан орын алады.
Жобада форманың DataModule , DLL Wizard түрлерін және модульдің
Diagramm бетін пайдалану арқылы Оқу курсы қосымшасы құрылады.
1. Жалпы бөлім
1.1 Берілгендер қоры қосымшасының құрылымы
Берілгендер қоры қосымшасы мәліметтер қорының кейбір мәліметтер
көздерімен өзара әрекетіне арналған.
Өзара әрекет деп мәліметтер алу, оларды ыңғайлы форматта қолданушы
көру үшін көрсету, бағдарламадағы бизнес-алгоритмнің орындалуына сәйкес
өңдеу және өңделген мәліметтерді қайта мәліметтер қорына жіберуді айтады.
Мәлімет көзі ретінде сол берілгендер қорының өзі, мәтіндік, электрондық
кестелер және т.с.с. – кәдімгі файлдар бола алады.
Мәліметтер қорымен жұмыс істейтін қосымшаларды қарастырамыз.
Мәліметтер қоры арнаулы бағдарламалармен қызмет көрсетеді. Ол
бағдарлама – берілгендер қорының басқару жүйесі (МҚБЖ). МҚБЖ локальдік және
серверлік болып бөлінеді. Мәліметтер қорының локальдық жүйесі жеке
қолданушыға арналған, ал серверлік көп қолданушыға арналған.
Қолданушының әр-түрлілігіне қарамай мәліметтер қоры қосымшасының жалпы
архитектурасы өзгеріссіз қалады.
Қосымша мәліметтерді қабылдау және жөнелту механизмінен, мәліметтерді
ішкі түрлендірулер механизмінен, кескіндеу және баспаға шығару үшін
қолданушы интерфейсінен, мәліметтерді өңдеуге арналған бизнес – логикадан
тұрады.
Қабылдау және жөнелту механизмі мәліметтер көзімен жалғастыруды қамтамасыз
етеді. Ол екі бағытты мәліметтер ағымын қамтамасыз ету үшін қайдан және қай
ауыстыру хаттамасын қолдану керек екенін білуі қажет.
Мәліметтерді ішкі түрлендіру механизмі мәліметтер қоры қосымшасының
ядросы болып табылады. Алынған мәліметтерді сақтайды, қосымшаның басқа
бөліктерінің сұраныстары бойынша мәліметтермен қамтамасыз етеді.
Қолданушы интерфейсі мәліметтерді көру мен өңдеуді ,сонымен қатар
мәліметтерді басқаруды қамтамасыз етеді.
Қосымшаның бизнес-логикасы бағдарламада деректерді өңдеу
алгоритмдерінен тұрады. Қосымша мен мәліметтер қоры арасында бағдарламаны
мәліметтер көзімен және мәліметтер ауысу үрдісін басқаруды байланыстыратын
арнаулы бағдарламамен қамсыздандыру (БҚ) орналасады.
Бұл бағдарламамен қамсыздандыру мәліметтер қоры көлеміне,шығарылатын
есептер жүйесіне, қолданушылар санына, қосымшамен мәліметтер қорын
байланыстыру тәсілдеріне қарай әр-түрлі тәсілмен қолданылады.
Мәліметтер көзі мәліметтерді және МҚБЖ сақтау орны, мәліметтердің тұтастығы
мен қарама -қайшылықсыздығын қамтамасыз етеді.
Delphi-де қосымшалар жасау әдістеріне тоқталамыз.
Жобада келесі сұрақтар қарастырылады:
• Delphi-дегі мәліметтер қоры қосымшасының құрылымы;
• Мәліметтер қоры қосымшаларын құруды қолданылатын базалық компоненттер
және олардың өзара байланысы;
• Мәліметтерді жинақтау түсінігі және оның мәліметтер қоры қосымшасының
негізгі механизмдеріне қатысуы;
• Мәліметтер модулі;
• Мәліметтер қоры қосымшасы бөліктерінің бағдарламалық орындалуы.
1.2 Мәліметтер қоры қосымшасы қалай жұмыс істейді
Мәліметтер қоры қосымшасын құру Delphi-де формадан
басталады.Қолданушы интерфейсі кәдімгі формадағы стандартты және арнаулы
визуальдіы компоненттер арқылы құрылады. Мәліметтерді көрсететін визуальды
компоненттер палитрасындағы Data Controls бетінде орналасқан. Көп жағдайда
олар мәліметтер жинақтауға арналған басқарудың стандартты элементтерінің
модификациясы болып табылады.
Қосымшада формалар саны кез-келген болуы және кез-келген интерфейсті
қолдануы мүмкін (MDI немесе SDI).Көбінесе бір форма біртекті операциялар
тобын орындауға арналады.
Кез-келген мәліметтер қоры қосымшасының негізі мәліметтер қорынан
қосымшаға көру және өңдеу үшін берілетін мәліметтер жиыны болып табылады.
Мәліметтер жиынтығы мен визуальды компоненттерді байланыстыру үшін арнаулы
компонент Tdata Source пайдаланылады.
Оның қызметі мәліметтер жиынтығы және олармен байланысққан мәліметтерді
көрсету компоненттері арасындағы мәліметтер ағымын басқару.
Бұл компонент мәліметтерді визуальды компоненттерге және нәтижелерді
мәліметтер жиынтығына жеткізеді. Визуальды компоненттер өзгерістеріне
жауап береді, қолданушыдан мәліметтер жиынтығына басқару сигналын береді.
Tdata Source компоненті компоненттер палитрасының Data Access бетінде
орналасқан компоненттер үштігімен құрылады:
• TData Set класы;
• TData Source компоненті;
• Мәліметтерді көрсететін визуальды компоненттерді.
Қосымшада мәліметтер көзімен немесе аралық бағдарламалық
қамсыздандырулармен мәліметтерге қол жеткізу компоненттері өзара
әрекеттеседі, олар мәліметтер жиынтығын инкапсуляциялайды және мәліметтерге
қол жеткізудің технологияларының сәйкес функцияларын әр-түрлі операциялар
орындау үшін шақырады.Мәліметтерге қол жеткізу компоненттері қосымшадағы
мәліметтер кестесінің бейнесін көрсетеді.Мұндай компоненттер қосымшада
шектелмеген.
Мәліметтермен жұмыс істейтін әрбір компонент ең аз дегенде TData Source-ң
бір компонентімен байланыста болады. Оның міндеті мәліметтер жиынтығын
мәліметтерді көрсету визуальды компоненттермен қосу. TData Source
компоненті ағымдағы мәндерді мәліметтер жиынынан тасымалдайды және оларға
өзгерістер енгізілгеннен соң қайта орнына әкеледі.
TData Source-ң компоненті бірнеше мәліметтерді көрсетудің визуальды
компоненттерінің бірнешеуімен байланыста болады. Бұл компоненттер,
мәліметтер жиынтығынан ақпаратты көрсететін басқару элементтерінің
модификациясы. Компонент мәліметтер жиынтығын ашқанда мәліметтер қорының
қажетті кестесінен мәліметтер алады.
1.3 Мәліметтер модулі
Мәліметтер қоры қосымшасындағы мәліметтер жұмыс істеу үшін арнайы
форма –мәліметтер модулі қолданылады.
Мәліметтер модулінің қосымшаның кәдімгі формаларына ешқандай қатысы жоқ.
Мәліметтер модулінде тек визуальды емес компоненттер пайдаланылады.
Мәліметтер модулін әзірлеуші жұмыстың кез-келген этапында қолдана алады.
Қолданушы мәліметтер модулін жұмыс барысында көре алмайды.
Мәліметтер модулін құру үшін Delphi-дің бас мәзірі пайдаланылады.
Мәліметтер модуль таңбасы Data Module NEW бетінде орналасқан.
TDataModule класы TComponent класынан шығатын болғандықтан мәліметтер
модуль стандартты формамен аз байланысады. Мәліметтер модулі оқиғаларының
әдістеме - өңдеуіштері мен қасиеттері түгел жоқ.Мәліметтерден модель,
диаграмма құру үшін Diagram редактор коды бетінің мүмкіндіктерін қолдануға
болады. Мәліметтер модулінің тармақталған компоненттер ағымының кез-келген
элементін диаграмма бетіне шығаруға және онымен байланыс жасауға болады.
Басқарушы батырмалармен диаграмма элементтерінің синхронды көру қатынасы
беріледі.
Мәліметтер модульде орналасқан мәліметтер мен басқа жоба
модулдерінің компоненттерін байланыстыру ушін Uses секциясына модуль атын
кіргізу қажет.
Unit Interface Module;
. . .
Ipmlementation;
Uses Data Module;
. . .
Data Module. Tablel Open;
Пайдалану компоненттерін мәліметтер модульде берудің ыңғайлылығы – кез-
келген қасиеттің мәнінің өзгеруін мәліметтер модуль қосылған басқа кәдімгі
модульдер көрсете береді. Сонымен қатар бұл компоненттерді өңдеуіш
қасиеттер бір жерге жинастырылған.
1.4 Мәліметтер жиынтығына қосу
Мәліметтер қоры қосымшасының негізі болып мәліметтерге қол жеткізу
компоненті табылады.
Ол мәліметтер қоры таңдалған кесте негізінде мәліметтер жиынтығын құрады
және оны басқаруды тиімді ұйымдастырады.
Мәліметтерге қол жеткізу компоненттерінің бәрі визуальды емес компоненттер.
Жаңа жоба құру үшін NEW Application жарлығын File мәзіріінен таңдау
жеткілікті немесе File мәзіріінен NEW жарлығымен ашылатын объектілердің
репозиторилері пайдаланылады.
Жаңа жоба формасына мәліметтер жиынтығын инкапсуляциялап, келесі
орындалатын амалдарға компоненттер көшіріледі.
1. Компонентті мәліметтер қорынына қосу керек. Ол үшін керекті технологияға
байланысты арнаулы компонент қолданылады.
2. Компонентке мәліметтер қоры кестесін қосу керек. Ол үшін Table Name
қасиеті пайдаланылады. Бірінші этап амалдары орындалғаннан кейін бұл
қасиеттің тізімінде барлық қолданыла алатын мәліметтер қорының кестесі
шығуы қажет. Кесте аты таңдалған соң Table Name қасиетінің компоненті
онымен байланысты болады.
3. Компоненттің атын ауыстыру. Бұл міндетті орындауды қажет етпейді,
дегенмен пайдалану компоненттеріне мағынасы түсінікті жұмыс істейтін
кестеге сәйкес ат берген қолайлы. Кобінесе компонент аты кесте атымен
аталады. (Мысалы: Orders немесе Ord Table)
4. Мәліметтер қоры кестесі мен компоненттер арасындағы байланысты
активтендіру. Ол үшін Active қасиеті пайдаланылады. Егер инспектор
объектісінде бұл қасиетке True мәнін берсе, байланыс активтендіріледі. Бұл
әрекетті қосымшаның бастапқы кодында орындауға болады.
Сонымен қатар Open әдісі бар, ол мәліметтер жиынтығын ашады, ал close әдісі
оны жабады.
Мысал: Countru.DB кестесімен жұмыс істейтін мәліметтер қоры қарапайым
қосымшасын құру керек. Ол Borland Data base Engine процессорының DBDE MOS
стандартты көрсету мәліметтер қорымен жұмыс істейді. Жаңа жоба формасына
ТТable компонентін BDE компоненттер палитрасы бетінен көшіреді. Data base
Name қасиеті DBDEMOS жалған атына байланысады. Ол Delphi-ді қосқанда
автоматты құрылады.
Table Name қасиеті үшін COUNTRY кестесінің атын беру қажет. Оны тізімнен
таңдауға болады. Active қасиетін екі рет шерту оған true мәнінен
меншіктейді. Бұдан кейін компонентпен кесте арасындағы байланыс
активтелінеді. Name қасиетінің мәні: Country Table-ге тең.
Мәліметтер жиынтығы форманы бірінші көрсеткенде ашылып, форманы жапқанда
жабылуы қажет.
DemoDBApp жобасының бас мәзірінің Ipmlementation секциясы
Ipmlementation
$RDFM
Procedure TFormI. FormShow(Sender:Tobject):
Begin
Try
Country Table.Open;
Except
ShowMessage(Table.open errоr);
End;
End;
Procedure TFormI. Form Close (Sender:Tobject; var
Aktion: TFormClose Aktion);
Begin
Country Table, Close;
End;
End.
Форманы ашқан кезде FormShow өңдеуіш әдісі орындалады. Open
әдісі арқылы оның ішінде мәліметтер жиынтығы ашылады. Қажетті жағдайларда
тиімді аяқтайтын Try Except конструкциясы пайдаланылады.
Мәліметтер қоры қосымшаларымен жұмыстағы қателер көп қиыншылықтар туғызатын
болғандықтан, барлық күдікті орындарға сақтандыру кодын қою қажет. Form
Close өңдеуіш- әдістемесі форманы жапқанда шақырылады, Close әдісімен
мәліметтер жиынтығы жабылады.
1.5 TDataSource компонентін іске қосу
Мәліметтер қоры қосымшасын құрудың екінші этапында TDataSource
компонентін іске қосып формаға апару қажет. Ол мәліметтер жиынтығы мен
мәліметтерді көрсету компоненттері арасындағы байланысты қамтамасыз етеді.
Көбінесе бір мәліметтер жиынына TDataSource бір компоненті сәйкес келеді.
Компоненттер қасиетін қосу үшін келесі амалдарды орындау қажет.
1. TDataSource компоненті мен мәліметтер жиынынтығын байланыстыру керек.
Ол үшін объектілер инспекторы арқылы қосылатын TDataSource компонентінің
DataSet қасиеті қолданылады. Объектілер инспекторында мәліметтер
жиынынтығымен жұмыс істейтін бұл қасиеттің тізімі келтірілген.
2. Компонентке басқа ат қою керек. Бұл әрекет міндетті емес. Дегенмен
Source компоненті мен мәліметтер жиынынтығына байланысты ат беру ыңғайлы.
DemoDBApp қосымшасында CountrySource компоненті Country Table
компонентімен байланысқан , сондықтан Data Set қасиетінің мәні Country
Table болады. TDataSource компонентінің бірнеше пайдалы қасиеттері мен
әдістері бар. Мәліметтер жиынынтығымен байланысты property DataSet, TData
Set қасиеті, ал мәліметтер жиынынтығының ағымдағы жағдайын
Type TDataSetState
=(dsInactive,dsBrowse,dsEdit,dsInse rt,dsSetKey,dsCalcFiels,dsFilter,ds NEW
value,dsOldvalue,dsCurValue,dsBlokR eod,dsItennalCalc);
Property State; TDataSetState;
қасиетін пайдаланып анықтауға болады.
Property Enabled: Boolean;
қасиеті арқылы барлық байланысқан компоненттерді қосуға немесе өшіруге
болады.
False мәні бойынша компоненттің ешқайсысы жұмыс істемейді.
Property AutoEdit: Boolean;
қасиетінің мәні True болғанда мәліметтер жиынынтығын редактор режиміне
жібереді.
Тура солай,
Procedure Edit;
әдісі байланысқан мәліметтер жиынынтығын редактор режиміне жібереді.
Function IslinRedTo(Data Set: T Data Set); Boolean;
әдісі егер Data Set параметріндегі компонент TdataSource-ң осы
компонентімен байланысқан болса, онда ол True мәнін қайтарады.
Өңдеу әдісі
Type Tdata ChageEvent = procedure (Sender;Tobject;Fied;TCild) of object;
Property OnDataChange: TDataCliageEvent;
Байланысқан визуалды компоненттердің бірінде мәліметтерді өңдеу кезінде
шақырылады.
Өңдеу әдісі
Property On UpdateData;TNotifyEvent;
мәліметтер қорындағы өзгерістерді сақтау үшін шақырылады.
Өңдеу әдісі
Property On stateChange: TnotifyEvent;
байланысқан мәліметтер жиынынтығын өзгерту үшін шақырылады.
1.6 Мәліметтерді кескіндеу
Мәліметтер қорының қосымшасын құрудың үшінші этапында қолданушы
интерфейсін жасау керек.
Қолданушы интерфейсі мәліметтерді көрсету компоненттері негізінде
жасалады. Бұл компоненттер мәліметтерді көруге және өңдеуге арналған. Бұл
компоненттердің көпшілігі басқарудың стандартты элементтеріне ұқсас.
Сонымен қатар мәліметтерді кескіндеу компоненттерінің көпшілігі басқару
элементінің стандартты компоненттерінің мұрагерлері.
Мәліметтер қорының компоненттері Tdata Source компонентімен және сол
арқылы мәліметтер жиынынтығы компоненттерімен байланыста болуы керек. Ол
үшін Tdata Source қасиеті қолданылады. Tdata Source қасиеті мәліметтер
қорының барлық компоненттеріне қатысады.
Компоненттердің басым көпшілігі жалғыз бір өрістегі мәліметтерді
көрсетуге арналған. Мұндай компоненттерде DataFiеld қасиеті де болады, ол
байланысқан мәліметтер жиынтығының компонентте көрсетілетін өрісін
анықтайды.
Мәліметтер қорының қосымшасында TobGrid компоненті мәліметтерді кесте
түрінде беру үшін қолданылады. Кесте бағаналаларында мәліметтер жиынтығының
өрістері, ал жолдарында жазулар беріледі.
Сонымен мәліметтер қоры әрбір визуалды компоненті үшін келесі
әрекеттерді орындау қажет:
1. Мәліметтер қоры компонентін Tdata Source компонентімен байланыстыру
керек. Ол үшін Tdata Source компонентінің қасиеті пайдаланылады.Ол Tdata
Source компонентінің қажеттісін көрсетеді.
Мәліметтер қоры бір компонентін Tdata Source-ң бір ғана элементі мен
байланыстыруға болады. Қажетті компонент инспектор объектісінің қасиеттер
тізімінен таңдалады.
2. Мәліметтер өрісін беру керек. Ол үшін TFields типінің DataField қасиеті
пайдаланылады.
Data Source қасиетін берген соң өріс тізімінен таңдалады Бұл этап жалғыз
өріс көрсететін компоненттер үшін ғана қолданылады.
Мәліметтерді кескіндеу компоненттерінің ішінде TDBNavigator компоненті
ерекше орын талады. Ол мәліметтер жиынтығыныңжазуларымен жұмыс істеуге
арналған.
DemoDBApp қосымшасында TDBGrid, TDBNavigator және TDBEdit компоненттері
қолданылған.
Мәліметтерді кескіндеудің үш компоненті де Tdata Source типінің Country
Sonrce компонентімен Data Source қасиеті арқылы байланысқан.
TDBEdit компоненті Capital өрісінің мәліметтерін кескіндейді және оларды
түзеуге мүмкіндік жасайды. TDBNavigator компоненті Country Table мәліметтер
жиынтығының жазуларымен жұмыс істеуге арналған.
Мәліметтер жиынтығына қосылған барлық мәліметтер қоры компоненттерінде
нәтиже көрінеді.
2.Арнайы бөлім
2.1 Есептің қойылу шарты
Серверге SQL тілінде орындалатын сұраныс беретін, ал сервер
мәліметтермен қажетті манипуляциялар жасайтын клиент қосымшасын құру.
Клиент мәліметтер таңдауға серверге сұраныс жіберсе, онда сервер
мәліметтер жиынтығын қайтарады; Онымен клиент қосымшасы жұмыс істейді.
Сондықтан клиент қосымшасында келесі операциялар орындалуы керек:
• Мәліметтер серверіне қосылу, қолданушы аты мен паролін енгізу.
• Серверге сұраныстар жіберу және нәтиже алу.
• Мәліметтерді қолданушыға ыңғайлы түрде көрсету. Мәліметтерді
сұрыптау және сүзу.
• Мәліметтер қосу және өшіру, мәліметтер жиынтығы бойынша жылжу.
Бағдарламада келесі модульдер болатындай етіп дайындау керек:
• Негізгі орындалатын модуль(қабықша)
• Пароль енгізетін сұхбаты бар модуль- негізгі модульден қосылатын
DLL кітапханасы;
• Оқушы анықтамасы сұхбаттық модулі- негізгі модульден
қосылатын DLL кітапханасы.
2.2 Есептің формальды қойылуы
2.3 Алгоритмнің жалпы құрылымы
2.4 Программалық модуль құрылымы
2.5 Форма көріністері
1.Басты мәзір формасы
2. Серверге қосылу фоормасы
3. Серверге қосылуын растайтын хабарлама
4. Білімгер анықтамасы формасы
5. Код терезесінің диаграмма беті
6 Сеансты аяқтау хабарламасы
2.6. Есептің орындалу үрдісі
2.6.1. Берілгендер қорына қол жеткізуге арналған сұхбат терезесін
DataModule формасын пайдаланып құру
Біздің мақсатымыз- реляциялық қорда сақталатын мәліметтерді
манипуляциялауға мүмкіндік беретін бағдарлама құру.
Бұл мәліметтермен жұмыс істеу басқарудың ерекше жүйесі –(бағдарламалық
кэш) мәліметтер қорының сервері деп аталатын бағдарламалық кешен арқылы
іске асырылады.Құратын бағдарламаны клиенттік қосымша деп атаймыз.
Клиент қосымшасы серверге SQL тілінде орындалған сұраныс береді, ал
сервер мәліметтермен қажетті манипуляциялар жасайды.Дербес жағдайда,
егер клиент мәліметтер таңдауға сұраныс жіберсе, онда сервер мәліметтер
жиынтығын қайтарады; Онымен клиент қосымшасы жұмыс істейді.Клиент
қосымшасы келесі амалдарды орындауға қажет.
1. Мәліметтер серверін қосу, қолданушы аты мен құпия сөзін енгізу.
2.Серверге сұраныстар құрастыру және нәтиже алу.
3.Мәліметтерді қолданушыға ыңғайлы түрде көрсету.Мәліметтерді
сұрыптау және сүзу.
4.Мәліметтерді қосу және өшіру, мәліметтер жиынтығы бойынша
жылжу.
Бағдарламада осы функциялардың бәрі орындалса, онда ол өте
қолайсыз болады. Бұл түсінікті де біз бағдарлама жазу кезінде алдыңғы
құрған формаларды өзгертпей өшірмей, жаңа формалар қоса береміз.Олардың
кейбіреуін қолданушының көруі міндетті емес, сондықтан артық ақпарат
пайда болады.Бағдарлама жазуда жалпы жоспар болуы қажет. Мұндай
жоспардың негізгі принципіне модульділік жатады. Қосымша белгілеріне
қарай бөлінген бірнеше дербес бағдарламалық бөліктерден тұрады. Әр
бөлікке жеке бағдарлама жазылады және жеке файл түрінде де берілуі
мүмкін. Delphi –де Windows ортасы үшін бағдарламалық терезе форма
жасалынады; әрбір формаға өзінің жеке бағдарламалық модулі –Unit сәйкес
келеді.
Бағдарламаны компиляциялаған және жинаған кезде бұл модульдердің бәрі
бір орындалатын файлға беріледі.
Бағдарламаның жұмысшы терезелері жұмыс барысында әртүрлі жиілікпен
шақырылады, себебі бір форма жиі қолданылады, ал басқасы сирек
қолданылады.Дегенмен, бағдарламаны бір орындалатын файл етіп
ұйымдастырғанда олар жадыға жазылады және одан орын алады.
Windows ортасында бағдарламаның орындалу кодын ұйымдастырудың басқа
тәсілдері де бар. Орындалатын кодты, мысалы, динамикалық байланыстыру
кітапханасына (dynamic-link library)орналастыруға болады. Динамикалық
кітапханалар бір немесе бірнеше қосымшалардан шақырылатын процедуралар
немесе функциялар жиынынан тұрады. Оларды басқа орындалатын файлдармен
шатастырмау үшін олар dll кеңейтілуімен беріледі. Dll Windows-тың
конструктивті элементтерінің ішіндегі ең маңыздыларының бірі. Windows
негізінде Dll жиынтығынан тұрады. Егер Windows\System каталогына қарасақ,
одан gdi32.dll, kernel32dll және user32dll файлдарын көреміз. Windows
орындайтын жұмыстар осы және басқа файлдарда сақталады және оның бәрі
Dll болып табылады.
Delphi бағдарламасы басқа тілдерде жазылған кітапханаларды пайдалана
алады, ал басқа тілдерде жазылған Windows бағдарламасы Delphi ортасында
құрылған DLL-дерді шақыра алады.
DLL-дің бағалылығы оларды бағдарлама орындалу барысында жадыға жазуға
және шығаруға болады, ол бірнеше мегабайттан тұратын қосымша құра
беруге мүмкіндік береді, бірақ олар ешқашан жүз килобайттан артық орын
алмайды. Мысалы, біздің бағдарламамыздағы қолданушы атымен паролін
енгізетін сұхбат терезесі бірақ рет –SQL –серверді қосқан кезде ғана
шақырылады,бірақ форма және онымен байланысқан бағдарламалық код
бағдарламамен жұмыс істеп біткенше жадыда тұрады. Осы сұхбатты жеке
модульге шығарып жадыға тек парольді енгізгенде ғана жазылатындай ету
қажет. Осы принципті қосымшаның басқа формаларына да қолдануға
болады. Оларды қажет кезінде ғана жадыға жазылатындай етіп жеке DLL-ге
шақыру керек.
Бірінші қосылатын және қажетті динамикалық кітапхананың қосылуын
орындайтын байланыстырушы – бағдарлама қажет, ол барлық формалар үшін
қабықша сияқты көрсетіледі. Бұл бағдарламада берілгендер қорымен жұмыс
істейтін функциялар да болуы мүмкін. Сырттай бұл бағдарлама бас
мәзірмен статустық жолдан тұратын бос терезе түрінде беріледі.
Біздің бағдарламамызды оның ішінде келесі модульдер бар болатындай
етіп түрлендіреміз:
• Негізгі орындалатын модуль(қабықша)
• Пароль енгізетін сұхбаты бар модуль- DLL- кітапханасы, негізгі
модульден қосылады;
• Оқушы анықтамасы диалогы бар модуль- DLL-дің бөлек
кітапханасы, негізгі модульден қосылады.
Бағдарламаның бұл құрылымының тиімділігі мынада, оны жеңіл кеңейтуге
болады: қажет болғанда жаңа кітапханалар қосылады; ал қабықшаға оның
шақырылуы қосылады.Біздің қосымша үшін жалпы қабықша құрайық.Бас
мәзірден FileNewApplicationпунктін таңдайық.Бастапқы жобаны PROJ3-2
каталогында proj3-2. prg деп құрылған unit1.pas. және main.pas деп
сақтаймыз.
Form1- ді fMain деп өзгертеміз.
Компонент Қасиет Мән
fmain Caption Оқу курстары
Position poScreenCenter
WindowsState wsMaximized
BorderStyle bsSingle
FormStyle fsMdTfrom
Формаға TMainMenu компонентін Standard бетінен алып қоямыз. Бас мәзірді
өңдеу үшін объектілер инспекторынан Items қасиетін таңдап, оны екі рет
шертеміз. Мәзірдің пунктын немесе бөлімін құру үшін мәзір
редакторына (1 сурет) бос пункт белгілеу және объектілер
инспекторының Caption қасиетіне пункт атауларын енгізу қажет.
1 сурет Мәзір редакторы
Жиі кездесетін мәзір (үлгі) түрінде сақталады. Мәзірді шаблон түрінде
сақтау үшін редактордың контекстік мәзірінен Saveas Template...
таңдалып, шаблон аты енгізіледі. Шаблонды шақыру Insertfrom
Template...пункті арқылы орындалады. Бөлімдерден тұратын келесі кестеде
көрсетілгендей мәзір құрамыз(2 сурет).
МӘЗІР БӨЛІМІ МӘЗІР ПУНКТІ
Жүйе Сервермен байланыс
Сеансты аяқта
Шығу
Көмек
Бағдарлама туралы
2 сурет .Бағдарламаның бас мәзірі
Ажырату сызығы мәзірге пункт атауының орнына - таңбасын, енгізгенде
ал шапшаң қол жеткізу пернесін мәзірі пунктіне байланыстыру үшін
пункт атауындағы сәйкес әріптің алдына & таңбасын қою қажет. Бұл таңба
мәзірде асты сызылып белгіленеді және мәзірдің бұл пунктін асты
сызылған таңбаны Alt пернесімен бірге басу арқылы таңдауға болады.
Мысалы, мәзірдегі жүйе бөлімі Caption жолына ж&үйе деп енгізілген.
Формаға StatusBar компонентін Win32бетінен алып, оған SimplePanel=true
қасиетін береміз. (3 сурет) қосымшаның негізгі формасының көрінісі
осындай болады.Бұл қосымша барлық элементтер жұмысын, соның ішінде
олардың берілгендер қорымен байланысын реттеп отыратын орталық болуы
қажет. Сондықтан байланысты іске асыратын компоненттері болуы керек.
3 сурет. Қосымшаның негізгі формасы
Алдыңғы мысалда берілгендер қорымен жұмыс істеу үшін визуалды емес
компоненттерді тікелей формаға орнаттық, бірақ бұл барлық кезде
ыңғайлы емес, бұлай істеу жобалау кезінде сұхбат терезесін жауып қалады.
Сондықтан Delphi –де визуалды емес компоненттер үшін арнайы форма типі
қарастырылған, ол мәліметтер модулі (DataModule) деп аталады.
Бағдарламаға мәліметтер модулін қосамыз. Ол үшін мәзір пунктіне
FileNewDataModule таңдалынады немесе FileNewOther... таңдалып
DataModule иконкасын шертіледі.
Палитрадан кезекпен TDataSource,TDataBase,TQuery және TUpDateSQL таңдап
оларды мәліметтер модулінің формасына орнатамыз. Delphi –де жобалау
процесін жеңілдету үшін жаңа терезе ObjectTreeNew (объектілер ағашы)
пайда болады, ол формаға орналасқан компоненттер иерархиясын көрсетеді.
Бұл терезені экранға шақыру үшін ViewObjectTreeView пунктін
пайдалану керек немесе Shift-Alt-F11пернелерін басу керек.Мәліметтер
модулі және оған сәйкес терезе ObjectTreeView
4 суретте көрсетілген.
4 сурет Компоненттерімен мәліметтер модулі және ObjectTreeView терезесі.
Контекстік мәзірде StayOnTopпункті іске қосу арқылы объектілер
ағашы бар терезені әруақытта экранда, басқа терезелер үстінде қалдыруға
болады.Мәліметтер модулі терезесі екі панельден тұрады.Сол жақ панель
мәліметтерге қол жеткізу компоненттерінің қатынасын кескіндейтін ағашы
бейнелейді.Оң жақ панельде екі бет белгі- Components және DataDiagram
бар. Components бетінде берілгендер қорымен жұмыс істеуге арналған
визуалды емес компоненттер орналастыралады.Компоненттер олардың
иконкалармен палитрадағыдай беріледі.Сол жақ панельде компоненттердің
барлық байланыстарын кескіндейтін, сонымен қатар бұл байланыстарды
өзгертуге мүмкіндік беретін ағаш пайда болады. Components бетіндегі
компоненттер қасиеттерімен жұмыс істеу үшін компонентті белгілеп ,оның
иконкасын шертіп Ғ11 пернесімен объектілер инспекторын шақырамыз.
DataBase компонентін белгілейміз де оған DataBaseName қасиетін Tutoriual-
ға тең етіп қондырамыз.Берілгендер қорының аты бірден оң жақ
панельдегі ағаштың сәйкес бұтағына шығады.
Ағаш ары-бері тасымалдау (drag-and-drop)режимін қолдайды, яғни біз
оның барлық элементі бойымен тышқанмен жылжи аламыз және оларға жаңа
байланыс жасаймыз. Мысалы, тышқанмен DataSource1 элементін белгілеп оны
Query1 бұтағына апарайық (5 сурет)
Бұл жағдайда біз Query1 компонентін DataSource1 мәліметтер көзіне
қостық. Бұл DataSource1 компонентінің DataSet қасиетін Query1-ге тең
етіп, орнатқанға тең, оның орнатылғанын Components панелінің DataSource1
компонентін белгілеп, Ғ11 пернесін басып көруге болады. Тура осылай
Query1 бұтағын DataBase1 элементіне апаруға болады. (6 сурет)
Бұл ағашты алдында айтылғандарды кескіндейді: қосымшада үнсіз келісім
бойынша Session объектісі DataSet атымен құрылады, оның ішінде келісім
бойынша Tutoriual берілгендер қоры бар. Осы берілгендер қорымен Query1
және DataSource1 қол жеткізу компоненттері жұмыс істейді.
5 сурет. Мәліметтер модулінің компоненттер ағашы
6 сурет.
Өңделгеннен кейінгі мәліметтер модулі компонентерінің иерархиясы
Session объектісі жобалау кезінде болмайды, ол жоба орындалу үрдісінде
құрылады деп есептелінеді.Мұндай компоненттер ағашта ақ-қара түсті
жұлдызшамен белгіленеді.Мұндай объектінің біріне Fields мысал бола
алады. Егер ағаштың кейбір элементтерінің қасында сары дөңгелек ішінде
қызыл сұрақ белгісі тұратын болса, онда ол компоненттің толық
анықталмағаны.Біздің жағдайымызда бұл Query1 және UpDateSQL1.
Бұл компонентердің анықтамаларын толықтыру керек. SQL сұраныстары бар
қасиеттерді міндетті түрде беру қажет:
Queryl -
SQL: select * from STUDENT order by person_id
UpdateSQLI -
DeleteSQL delete from STUDENT where person_id=:old_person_id;
insertSQL INSERT INTO STUDENT(firet_name, middle_name,
last_name, start_date) VALUES(:first_name,:middle_name, :last
name,:start date);
ModifySQL update student set
first_name=:first_name,
middle_name=:middle_name,
last_name=:last^name,
start_date=:start_date
WHERE person__id= :old_j?erson_id;
Мәліметтер модуліне Delphi-дің кез-келген басқа формаларындағыдай
бағдарламалық модуль сәйкес келеді. Бағдарламалық модульдің редактор
терезесінде екі бет бар-Codeжәне Diagram Бетті редактор терезесінің
төменгі жағына орналасқан бет белгі арқылы таңдауға болады.
Diagram беті визуалды жобалау құралдарынан тұрады, олар қорға қол
жеткізу компоненттері арасында байланыс орнатуға мүмкіндік
береді.Сонымен қатар бұл бет жобаны құжаттау мүмкіндіктерін кеңейтеді,
себебі компоненттер арасындағы байланысты схема түрінде кескіндейді,
бұл сұлбаға комментарий және баспаға шығаруды қосуға мүмкіндік
береді.
Компоненттер диаграммаға автоматты түрде шықпайды, ол үшін оларды
тышқан рақылы сол жақ панелден мәліметтер модуліне әкелу керек.
Диаграммаға Query1 және UpDateSQL1. компоненттерін орнатайық
(7 сурет)
7 сурет Мәліметтер модулі диаграммасының редактор терезесі
Егер диаграммаға элементті оның барлық ұрпақтарымен отырғызу керек
болса, Ctrl пернесін басу керек.
Диаграммаға жазылған компоненттер тіктөртбұрыш түрінде бейнеленеді.
Диаграмманың жоғарғы жағында құралдар инструменті панелі орналасқан, ал
келесі батырмаларды өзіміз қоса аламыз:
Диаграмма объектісін таңдау инструменті.
Қасиет арқылы байланыс.
Басшы- байланысы;
Іздеу түріндегі тип (Lookup).
Комментарийлер блогы.
Комментарийге сілтеме.
Диаграмма компоненттер арасындағы байланысты көрсете алады.
Байланыстың 5 түрі бар:
Қасиет арқылы байланыс. Бай компоненттердің біреуінің қасиеті басқа
компонентке сілтенетін байланысты қасиет арқылы байланыс деп атайды.
Мысалы, Query1 объектісінің қасиеті UpdateObject UpdateSQL1 компонентін
көрсетуі қажет. Бұл байланыс стрелка арқылы белгіленеді. Алдыңғы
диаграммада байланыс жоқ, себебі Query1 объектісінің UpdateObject
қасиеті толтырылмаған.
Бұл байланысты осы диаграммада құрамыз. Ол үшін аспаптар панелінен
қасиет арқылы байланыс батырмасын шертіп, сосын сілтемелік қасиеті бар
( біздің жағдайда - Query1) диаграмма элементін тышқан батырмасымен
шертіп, жібермей ұстап тұрып байланысты екінші элемент үстінен
шертеміз(8 сурет).
8 сурет.Диаграммада байланыс құру
Бұл байланыс типі суретте боялған жебелі сызық түрінде көрінеді.
Сызықтың жанында сілтемесі бар қасиет аты көрсетіледі.Бұдан кейін
UpdateObject1 қасиетінің Query1 компонентіндегі мәні UpdateSQL1-ге тең,
оған объектілер инспекторы Object Inspector-ға қарап көз жеткізуге
болады.
Басты- бағынушы байланыс. Ол Master-Detail типті қатынасымен
байланысқан элементтер арасында құрылады. Екі ассиметриялы дискілер
сызығымен сипатталады, мұндағы үлкен диск мәліметтердің басты жиынына
жақын орналасқан.
Іздеу типті байланыс. Іздеу өрісі арқылы байланысқан диаграмма
элементтерінен құрылады. Көздің стильдік кескіні сызығымен сипатталады.
Іздеу өрісінің аты сызықтың жанында көрсетіледі.
Сілтеме. Бұл типі құжаттамалық мақсаттарға арналған. Ол диаграмманың
кейбір элементтерін байланыстыратын жебе (стрелка) түрінде сипатталады.
Оны түсініктемелер блоктары ( комментарий) бар диаграмма элементтерін
байланыстыру үшін қолдануға болады.
9 сурет.Мәліметтер модулі диаграммасының соңғы көрінісі
Диаграммада түсініктеме жазылатын мәтіндік блок болуы мүмкін.
Диаграмманың әрбір элементінің келесі бөлімшелері бар контекстік мәзірі
болады:
Color элемент түсін орнатады.
Bring to front элементті алдыңғы планға (көрініске)
көшіреді.Бұл бөлімнің мағынасы,
диаграмма элементтері бір-біріне
біріккенде болады.
Sent to back жоғарыда айтылғандай, элементті артқы
планға көшіреді
Remove fromdiagram диаграммадағы элементті жояды
Print диаграмманы баспаға шығару
Құрған формаңың атын fDM –ге (үнсіз келісім бойынша оның аты
DataModule1 еді) ауыстырып, берілгендер модулін uDM деген атпен
сақтаймыз.
Сонымен, қосымшаның екі формасы бар: fMain және fDm, сонымен қатар екі
модулі бар - main және uDm.
Осы уақытқа дейін біз ешқандай бағдарламалық код жазбай тек қана
компоненттер және олардың қасиеттерімен жұмыс жасадық. Енді негізгі
мәзірдің бөлімдерімен айналысайық.
Біздің қосымшаның негізі мәзірінен Жүйе сервермен байланыс...
бөлімін таңдаймыз. Мұнда Delphi басқа да көзге көрінетін элементтер
сияқты, өңдеушінің бос процедурасын құрады, онда таңдалған элементпен
байланысқан бағдарлама кодын жазу керек. Берілген жағдайда мәзірдің
Сервермен байланыс... бөлімі таңдалған элемент болып табылады,
сондықтан процедура денесінде төмендегідей кодты тереміз:
procedure TfMain.N3Click(Sender: TObject); begin try
with fDM.Databasel do begin
if Connected then Close; Open; end;
StatusBarl.SimpleText:='Байланыс орындалған жоқ,' except
StatusBarl.SimpleText:=
end;
end;
Берілгендер қорына қосылу үшін, мұнда Database1.Open әдісі шақырылады.
Алдын ала байланыс бар ма, жоқ па деген тексеру жүргізіледі, егер
Database1 объектісі қорға (бұл жағдайда Connected қасиеті true –ге
тең) қосылып қойған болса, онда байланыс Close әдісінің көмегімен
жабылады.
Бұл бағдарламалық код try... except жиынтығына (конструкция) енеді және
табысты түрде қосылса, статусты жолда Байланыс орнатылды деген мәтін
шығады, ал қате жағдайда Байланыс орнатылмады деген мәтін шығады, ал
қате жағдайда –Берілгендер қорына қосылу дұрыс емес деп көрінеді.
N3Click өңдеушісінің аты негізгі мәзірдің бөлімді құруының
тізбектілігіне қатысты. Delphi үнсіз келісім бойынша негізгі мәзірдің
құрылатын бөлімдеріне N әріпінен және реттік нөмірден тұратын ат
береді, сондықтан егер сіз мәзір бөлімдерінің атын басқа реттілік
берсеңіз, олардың басқа да нөмерлері болуы мүмкін. Егер өңдеушінің
процедурасы сізде N3Click емес, басқа санмен аталуы мүмкін.
Бұл процедура main модулінің бөлігі болып табылады. Сонымен қатар, ол
басқа модульдің объектілеріне сілтеме жасайды- нақты айтсақ uDM
берілгендер модуліне, мұндағы Database1 компоненті fDM формасында
орналасқандықтан, uDM модулі – main модулінің uses бөлімінде көрсетілуі
керек. Егер мұны жасамасақ, Delphi бағдарламаны компиляциялағанда
хабарлайды және оны uses бөліміне қосуды ұсынады.
Дәл осылай мәзірдің Сеансты аяқтау бөлімі үшін , өңдеуші құрыңыз:
procedure TfHain.N4ClicJc(Sender: TObject); begin
with fDM.Databasel do begin
if Connected then Close; end;
StatusBarl.SimpleText^'OTKnioHeHHe .'
end;
Егер байланыс орнатылса, мәзірдің шығу бөлімі берілгендер қорынан
шығуды орындап, содан соң қосымшаны аяқтау керек.Базадан шығу үшін
дайын N4Click өңдеушісін пайдалануға да болады;
procedure TfMain.N6Click(Sender: TObject); begin
N4Click(Sender); Application.Terminate j
end;
Компиляция жасап, бағдарламаны қайта жүктейміз. Сервермен байланыс
бөлімін мәзірден таңдап, бағдарламаның берілгендер қорына кіретін
стандартты сұхбат терезесін көрсетіп тұрғанына көз жеткізіңіз. Құпия
сөз (пароль) және пайдаланушы атын енгізгеннен кейін, егер олар дұрыс
болса, статусты жолда байланыс орнатылды
деген жазба пайда болады.
2. DLL құру
Біздің қосымша қолданатын барлық сұхбат терезелерін бөлек DLL
файлдарына орналастырамыз және есте сақтауды жүктеп, керек кезде оны
шақырамыз деп жоғарыда келіскен едік.
DLL кітапханасы жеке жоба ретінде құрылып, компиляцияланады. Сонымен
қатар ол біз жасайтын қосымшаның 1 бөлігі болып табылады, сондықтан
оны негізгі бағдарламамен бірге сақтау қажет.
Delphi мұндай жобаларды арнайы топқа біріктіріп сақтауға мүмкіндік
береді, олар жобалық топ (project group)деп аталады.
Delphi-дің негізгі мәзірінен ViewProject manager бөлімін таңдаңыз
немесе Ctrl+Alt+F11 пернелер жиынын шертіңіз.Со
нда экран бетінде жобаның менеджер терезесі шығады.(10 сурет)
10 сурет.Жобалардың менеджер терезесі
Бұл терезе басқа терезелерден бөлек орналаса алады, немесе Delphi-
дің мәтіндік редакторының негізгі терезесіне пристыковано бірігуі де
мүмкін. Жобалар менеджері екі бағаннан тұратын кесте түрінде
беріледі. Кестенің сол жағында жобалық топ ағашы орналасады,
иерархиялық формада топтың құрамына енетін барлық файлдар
көрсетіледі.Кестенің оң жағында осы файлдардың орналасқан орны
көрсетіледі.
Біз бірде бір топқа кірмейтін жобамен жұмыс істегенде Delphi оны project
group1 тобына енетінін көрсетеді.
Жобалық топ файлдарының, тышқан батырмасының оң жағын шерту арқылы
шақырылатын мәтін мәзір бар. Жобалық топ ағашынан оның project group1
атын белгілеп алып, оны мәтін мәзірде шақырыңыз. Мәтін мәзірден Save
Project Group As бөлімін таңдап, топты (жобалық топты сақтау керек)
Student деген атпен proj3-2каталогына сақтаңыз. Топ туралы ақпарат
кеңейтілген BPG(Borland Project Group) файлы түрінде сақталады.
Енді кіру сұхбаты бар DLL құру үшін жобалық топқа тағы бір
жоба қосамыз. Алдымен мәтін мәзірді қайта шақырып, AddNewProject
(жаңа жоба қосу) бөлімін таңдаңыз, содан кейін терезеден DLL иконкасын
таңдап, ОК-ді шертіңіз.
Жаңа жоба топқа қосылып Project1.dll деген атпен ағашта көрінеді.
Сонымен қатар мәтіндік редакторында Project1 деген атпен жаңа қатпарлы
бет пайда болады, ал осы қатпарлы бет арқылы Delphi мәтіндік редактор
терезесінде DLL –ді жобалау үшін дайындық құрады. Егер ұзынсонар
түсініктемені файлдың басында алып тастасақ, бұл дайындық келесідегідей
түрде көрінеді.
library Projectl; uses
SysUtils, Classes;
{$R *.RES}
begin
end.
DLL-дің бағдарламалық модулінің құрылымы Delphi-дің қарапайым модуліне
ұқсас, айырмашылығы – DLL үшін ол library кілттік сөзінен басталады. DLL-
дің де басқа бағдарламалау сияқты процедуралары мен функциялары
болады, және де DLL ішкі модульдерді де қолдана алады. Дегенмен, DLL-
дің басты мақсаты- өзінің процедуралары мен функцияларын басқа
бағдарламаларға пайдалануға мүмкіндік беру, ал ол үшін процедуралар
мен функциялар басқа бағдарламаларға көрінуі керек.
Осы мақсатпен, әрбір DLL-дің экспортталатын процедуралары мен
функцияларының атаулары арнайы exports бөлімінде орналасуы керек.
Мысалы, ішкі бағдарламалар DLL-де орнатылған CreateDialog
процедурасына қол жеткізу үшін, мынадай етіп жазу керек:
exports
CreateDialog name 'CreateDialog';
Project1-ді LOGIN деген атпен сақтаймыз, ол үшін ...\ proj3-2каталогында,
dll_Login деген каталог астындағы каталогын құрамыз. Жобалық топ
терезесі енді 11-суреттегідей түрге келеді:
11-сурет. Login. Dll жобасын қосқаннан кейінгі жобалар менеджерінің
терезесі
Біздің dll-дің бағдарламалық жобасы жеке каталогта орналасқанымен,
компиляциялау нәтижесінде алынатын login.dll файлы , оны пайдаланатын
бағдарламаның каталогында орналасуы керек. login.dll-дің мәтін
мәзірінен Options бөлімін таңдап, DirectiriesCorditionals бетінде ,
шығатын каталог ретінде \ proj3-2 жобасының каталогын орнатыамыз.
(OutputDirectory)
Жобалық топ бірбүтін ретінде компиляциялануы мүмкін- Delphi топтың
барлық файлдарын , олардың топ ағашында көрсетілген реті бойынша
,кезекпен компиляциялайды. Бізге login.dll жобасының негізгі proj3-2
жобасынан бұрын компиляцияланғаны қажет, себебі proj3-2 жобасын
жүктегенде login.dll-дің жаңа нұсқасы қажет. Жобалық топ
компиляциясының ретін мәтін мәзірдің арнайы бөлімдерінің көмегімен
беруге болады:
Build Sooner. Таңдалған жобаны объектінің тармақталу терезесі бір саты
жоғары жылжытады.Осылайша, бұл жоба өзінің алдында тұрған жобадан
бұрын компиляцияланады.
Build Later. Таңдалған жобаны объектінің тармақталу терезесінде бір саты
жоғары шығарады.
login.dll жобасын proj3-2-ден бұрын компиляциялануы үшін, жоғары
орналастырыңыз.
Жобаланатын Dll-дің алдында біз жасаған proj3-1 жобасында кіріс
сұхбаты болуы керек.Құрамында бағдарламалық код және кіріс сұхбатының
формасын сипаттайтын.
Мұны Windows-тың немесе басқа бағдарламаның стандартты көмекшісі
арқылы жасауға болады.Көшірілген файлдарды login жобасын қосыңыз. Ол
үшін мәтін мәзірден Add.. бөлімін таңдап,uLogin.pas файлын көрсету
керек. Бұл модульдің login.dll жобасының uses бөліміне қосылатынына
назар аударыңыз. Енді объектінің тармақталу терезесі келесідей түрде
көрінеді(12-сурет).
12- сурет. Жылжытқаннан кейінгі объектінің тармақталу терезесінің түрі.
Кіріс сұхбатының модулі жобаның бөлігі болып табылады, дегенмен онда
тек қана типтің сипатталуы түрінде енеді. Оны пайдалану үшін, өзіміз осы
сұхбаттың данасын құруымыз керек.Алдында , proj3-1 жобасында Delphi
бағдарламасының барлығынөз мойнына алғанына еш алаңдағанымыз жоқ.
Шынында да, жаңа форма құрған кезде , оның құрылу жолағы автоматты
түрде жоба файлында өзі қосылатын еді.
Мысалы, кіріс сұхбаты үшін, жол мынадай түрде берілген:
Application.CreateForm(TfLogin, fLogin);
Енді сұхбат терезесін құру үшін арнайы конструктор шақыру керек:
fLogin:= TfLogin.Create(Application);
ал қолданғаннан кейін- деструктор көмегімен жою керек:
fLogin.Free;
Ең тиімдісі, барлық осы шақыруларды , артқы қосышалар қол жетерліктей бір
функцияға біріктіру керек, яғни экспорттау керек.Бұл функцияны
ShowLoginDialog деп атайық.
Жобаның файлына exports бөлімін қосамыз;
library login; uses
SysUtils,
Classes,
uLogin in 'uLogin.pas' {fLogin};
{$R *.RES exports
ShowLoginDialog name 'SHOWLOGINDIALOG'; begin end.
ShowLoginDialog функциясын жобаға қазір қосылған uLogin модуліне
анықтайық.Бұл процедурамен жұмысты ары қарай жалғастыру үшін өзімізге
мынадай сұрақ қоялық:
Кіріс сұхбатының көмегімен, қосымша пайдаланушыдан нақты бір мәліметтер
алуы керек, нақтырақ айтсақ: атауы, кілтсөз және тағы бір параметр-
сұхбат жұмысының нәтижесі, ModalResult. Барлық мәліметтер, сұхбатпен
жұмысты аяқтағаннан кейін негізгі қосымшаның қолы жетерліктей болуы
керек.Мұндай жағдайларда жиі қолданылатын кеңінен таралған әдіс,
төмендегідей:
• Негізгі қосымшада бірқатар құрылым-record немесе class құрылады,
онда керекті айнымалылар болады.
• Бұл құрылымға сілтеме, әдетте, Dll-де процедура немесе функция
параметрі ретінде беріледі.
• Dll-ден шақырылатын процедура, жұмыс барысында құрылымға енетін
айнымалыларды өзгертеді, оған берілетін сілтеуіш арқылы
хабарласады.
login.dll жобасына жаңа модуль қосыңыз, ол үшін мәзірдің
FileNewUnit бөлімін таңдаңыз, сосын модульдің иконкасын (unit)
таңдап, ОК-ді шертеміз.
Delphi жобаға, үнсіз келісім бойынша аты Unit1 деп каталогына uLoginData
деген атпен сақтаңыз, оны proj3-2 каталогының ішінен құрамыз.
Модульге type бөлімін қосып, келесідегідей кластың анықтамасын теріңіз:
type
TLoginData = class
modalResult: TModalResult;
user_id, password: shortstring;
constructor Create;
end;
Бұл кластың мәліметтерді беруге арналған айнымалылары бар.
Конструктор, айнымалы- мүшелер класына алғашқы мәндерін беру үшін
қажет. Конструктор құруды аяқтау үшін, сілтеуішті кез-келген класс
анықтамасының жолына қойып, SHIFT-CTRL-C пернелер жиынын басыңыз. Delphi
автоматты түрде, класқа енетін барлық әдістер дайындығын құрады; берілген
жағдайда – Create конструкторының дайындығын.
Конструктор мәтінін тереміз:
constructor TLoginData.Create; begin inherited;
ModalResult:=0; user__id: = ''; password:^'';
end;
Сонымен қатар uses бөліміне Controls модулін қысыңыз, бұл-осы
модульде берілген, TModalResult стандартты типін қолдану үшін қажет.
uLoginData-ң соңғы нұсқасы төмендегідей түрде көрінуі керек:
unit uLoginData;
interface uses Controls;
type
TLoginData = class
modalResult: TModalResuIt;
user_id, password: shortstring;
constructor Create; end;
implementation
{ TLoginData }
constructor TLoginData.Create; begin
inherited;
ModalResult:=0;
UBer__id:'';
passwords'';
end;
end.
Енді uLogin модуліне оралайық. Оны төменде көрсетілген листинг бойынша
дұрыстаймыз:
unit uLogin; interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, uLoginData;
type
TfLogin = class(TForm)
Labell: TLabel; зд Label2: TLabel;
ebUserName: TEdit; ebPassword: TEdit;
btnCancel: TButton;
btnOk: TButton;
procedure FormShow(Sender: TObject};
procedure btnOkClick{Sender: TObject);
procedure btnCancelClick(Sender: TObject); private
{ Private declarations } public
{ Public declarations }
LoginData: TLoginData; end;
procedure ShowLoginDialog(Handle: THandle; p: pointer);
var
fLogin: TfLogin;
implementation
{§R *.DFM}
procedure ShowLoginDialog(Handle: THandle; p: pointer); begin
Application.Handle := Handle;
fLogin:= TfLogin.Create(Application);
fLogin.LoginData:=TLoginData(p);
fLogin.ShowModal;
fLogin.Free; end;
procedure TfLogin.FormShow(Sender: TObject); begin
ebPassword.Text:=''; end;
procedure TfLogin.btnOkClick(Sender: TObject); begin
LoginData.user_id:=ebUserName.Text; LoginData.password:=ebPassword.Text ;
LoginData.modalResult:=mrOK; end;
procedure TfLogin.btnCancelClick(Sender: TObject); begin
LoginData.modalResult:=mrCancel; end;
end.
Мұнда interbase бөліміне мынадай хабарлама қосылады.
procedure ShowLoginDialog(Handle: THandle; p: pointer);
ал implementation бөліміне- осы процедураны жүзеге асыру:
procedure ShowLoginDialogfHandle: THandle; p: pointer); begin
Application.Handle := Handle;
fLogin:= TfLogin.Create(Application);
fLogin.LoginData:=TLoginData{p);
fLogin.ShowModal;
fLogin.Free;
end;
Бұл процедураның екінші параметрі болып, TloginData класына сілтеме
жатады.Дәл мұндай сілтеуіш, кіріс сұхбатының өзінің класс
анықтамасының public бөлімінде қосылған:
public
{ Private declarations }
LoginData: TLoginData;
Алынған сілтеуіш, типті түрлендіруді қолданумен loginData класының
мүшесіне беріледі.
fLogin.LoginData:=TLoginData(p);
Кластың бұл мүшесі , басқа процедуралар сұхбатынан берілген класқа
хабарласудың тиімділігі үшін енгізіледі, нақтырақ айтсақ ОК және
(Отмена) Болдырмау батырмаларын басатын өңдеушілер үшін.
ОК батырмасын шерткенде , пайдаланушы енгізген TloginData класының
аты мен құпия сөзді беру жүріп жатады:
LoginData.user_id:=ebUserName.Text; LoginData.password:=ebPassword.Text ;
LoginData.modalResult:=mrOK;
Болдырмау батырмасын шерткенде , болдырмау батырмасы шертілгенін
хабарлайтын, мәні modalResult беріледі:
LoginData.modalResult:=mrCancel;
Login.dll жобасын компиляциялап, proj3-2 каталогында login.dll
файлының пайда болғанына көз жеткізіңіз.
Енді негізгі қосымшадан кіріс сұхбатын шақырумен айналысайық. dll
мен негізгі бағдарламаның арасында мәліметтер алмасу үшін, кластың
негізгі бағдарламадан да көрінгені қажет. Топ ағашынан proj3-2
жобасының атын 2 рет шертіп,өтіңіз.
Мәтін мәзірден Add бөлімін таңдап, біз жаңа ғана құрған login.dll
жобасында,\comman каталог астындағы каталогынан uLoginData файлын
көрсетіңіз. Main модуліне өтіп, implementation және uses бөліміне
uLoginData модулін қосыңыз.БҚ-на қосылуға жауап беретін процедураны
келесідегідей етіп дұрыстайық:
procedure TfMain.N3Click(Sender: TObject); type
TShowLoginDialog =procedure(Handle: THandle; p: pointer); var
hLib: THandle;
ShowLoginDialog: TShowLoginDialog;
LoginData: TLoginData; begin
hLib := LoadLibrary('LOGIN.DLL'); if hLib32 then begin
ShowMessage
LOGIN.DLL.'); Exit; end; LoginData;=TLoginData.Create;
ShowLoginDialog:=TShowLoginDialog(G etProcAddress(hLib,
'SHOHLOGINDIALOG'));
ShowLoginDialog(Application.Handle, LoginData); FreeLibrary(hLib);
if LoginData.ModalResult=mrOK then begin try
with fDM.Databasel do begin
if Connected then Close; LoginPrompt:=false;
Params.Values['PASSWORD'] := Trim(LoginData.password);
Params.Values['USER NAME'] :=Trim(LaginData.user_id);; Open; end;
StatusBarl.SimpleText:= except
StatusBarl.SimpleText:= ' end;
end;
end;
Оны тереңірек қарастырайық, себебі дәл осында DLL-ді басқару –оны есте
сақтаушыға жүктеу, экспортталатын процедураны шақыру және БҚ-на
енгізілген атау мен құпия сөзді пайдалану арқылы жүргізіледі.
DLL-ді есте сақтаушыға жүктеу LoadLibrary функциясын шақыру көмегімен
жүргізіледі.
hLib := LoadLibraryf'LOGIN.DLL');
Бұл функция жүктелінген кітапхананың сипаттамасын кері қайтарады, егер
DLL есте сақтаушыға жүктелінген болса, онда бұл жүктелінген
кітапхананың сипаттамасы- қайта жүктелмейді. DLL-ді пайдаланудың тағы
бір тиімділіг; DLL—дің бірнеше бағдарламалар қолданатынына қарамастан,
ол есте сақтауға бірақ рет ... жалғасы
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ... ... ... ..4
1. Жалпы
бөлім ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... 6
1.1 Берілгендер қоры қосымшасының
құрылымы ... ... ... ... ... ... ... ... ... ... ... ... .. ... 6
1.2 Мәліметтер қоры қосымшасы қалай жұмыс істейді ... ... ... ... ... ... ... ... ...7
1.3 Мәліметтер модулі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...9
1.4 Мәліметтер жинағын қосу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 10
1.5 TdataSource компонентін құру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 12
1.6 Мәліметтерді кескіндеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 16
2. Арнайы бөлім ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...16
2.1 Есептің қойылу шарты ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .16
2.2 Есептің формальды қойылуы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .17
2.3 Алгоритмнің жалпы құрылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..18
2.4 Программалық модуль құрылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ..19
2.5 Форма көріністері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...20
2.6 Есептің орындалу үрдісі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..23
2.6.1 Берілгендер қорына қол жеткізуге арналған сұхбат терезесін
DataModule формасын пайдаланып құру ... ... ... ... ... ... ... ... ... ... ... .23
2. DLL құру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...37
3. DLL және берілгендер қорымен жұмыс ... ... ... ... ... ... ... ... ... ... ...48
3. Экономикалық бөлім ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...65
3.1 Жобаны экономикалық бағалау ... ... ... ... ... ... ... ... ... ... ... ... ... ... .65
3.2 Бағдарламалық қамтамасыздандыруды игерудегі экономикалық тиімділікті
есептеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .66
4. Еңбекті қорғау және техникалық қауіпсіздіктің негізгі шаралары ... ... ...71
4.1 Еңбек пен демалысты ұйымдастыруда берілетін бірқатар кеңестер ... ... ... .75
2. Мекемені жарықтандыру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...76
3. Мониторға қойылатын талаптар ... ... ... ... ... ... ... ... ... ... ... ... ... ..77
4.4 Бағдарламалаушының жұмыс орнына қойылатын талаптар ... ... ... ... ... .80
4.5 Жұмыс орнындағы бағдарламалаушының атқаратын жұмысы ... ... ... ... 81
4.6 Электр және өрт қауіпсіздігі ... ... ... ... ... ... ... ... ... ... ... ... ... ...82
4.7 Жұмыс орнындағы температура, қысым, ылғалдық ... ... ... ... ... ... ... ...83
4.8 Төтенше жағдай кезіндегі атқарылатын жұмыс ... ... ... ... ... ... ... ... ... .83
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .85
Әдебиеттер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 87
Кіріспе
Windows ортасында бағдарламаның орындалуын ұйымдастырудың басқа
тәсілдері де бар. Орындалатын бағдарламаны (кодты) , мысалы, динамикалық
байланыстыру кітапханасына (dynamic-link library) орналастыруға болады.
Динамикалық кітапханалар бір немесе бірнеше қосымшалардан шақырылатын
процедуралар немесе функциялар жиынынан тұрады. Оларды басқа
орындалатын файлдармен шатастырмау үшін , олар *.dll кеңейтілуімен
беріледі. Dll - Windows-тың конструктивті элементтерінің ішіндегі ең
маңыздыларының бірі. Windows негізінде Dll жиынтығынан тұрады. Егер
Windows\System каталогына қарасақ, одан gdi32.dll, kernel32.dll және
user32.dll файлдарын көреміз. Windows орындайтын логика осы және басқа
файлдарда сақталады және оның бәрі Dll болып табылады.
Delphi бағдарламасы басқа тілдерде жазылған кітапханаларды пайдалана
алады, ал басқа тілдерде жазылған Windows бағдарламасы Delphi ортасында
құрылған DLL-дерді шақыра алады.
DLL-дің бағалылығы оларды бағдарлама орындалу барысында жадыға жазуға
және шығаруға болады, ол бірнеше мегабайттан тұратын қосымша құра
беруге мүмкіндік береді, бірақ олар ешқашан жүз килобайттан артық орын
алмайды. Мысалы, біздің бағдарламамыздағы қолданушы атымен паролін
енгізетін сұхбат терезесі бірақ рет –SQL –серверді қосқан кезде ғана
шақырылады,бірақ форма және онымен байланысқан бағдарламалық код
бағдарламамен жұмыс істеп біткенше жадыда тұрады.
Біздің мақсатымыз - реляциялық қорда сақталатын мәліметтерді
манипуляциялауға мүмкіндік беретін бағдарлама құру.
Бұл мәліметтермен жұмыс істеу басқарудың ерекше жүйесі –(бағдарламалық
кэш) мәліметтер қорының сервері деп аталатын бағдарламалық кешен арқылы
іске асырылады. Құратын бағдарламаны клиенттік қосымша деп атаймыз.
Клиент қосымшасы серверге SQL тілінде орындалған сұраныс береді, ал
сервер мәліметтермен қажетті манипуляциялар жасайды. Дербес жағдайда,
егер клиент мәліметтер таңдауға сұраныс жіберсе, онда сервер мәліметтер
жиынтығын клиентке жібереді. Онымен клиент қосымшасы жұмыс істейді.
Клиент қосымшасы келесі амалдарды орындау үшін қажет.
1.Мәліметтер серверін қосу, қолданушы аты мен паролін енгізу.
2.Серверге сұраныстар құрастыру және нәтиже алу.
3.Мәліметтерді қолданушыға ыңғайлы түрде көрсету.Мәліметтерді сұрыптау
және сүзу.
4.Мәліметтерді қосу және өшіру, мәліметтер жиынтығы бойынша жылжу.
Бағдарламада осы функциялардың бәрі орындалса, онда ол өте қолайсыз
болады. Бұл түсінікті де біз бағдарлама жазу кезінде алдыңғы құрған
формаларды өзгертпей өшірмей, жаңа формалар қоса береміз. Олардың
кейбіреуін қолданушының көруі міндетті емес, сондықтан артық ақпарат
пайда болады. Бағдарлама жазуда жалпы жоспар болуы қажет. Мұндай
жоспардың негізгі принципіне модульділік жатады. Қосымша белгілеріне
қарай бөлінген бірнеше дербес бағдарламалық бөліктерден тұрады. Әр
бөлікке жеке бағдарлама жазылады және жеке файл түрінде де берілуі
мүмкін. Delphi –де Windows ортасы үшін бағдарламалық терезе форма
жасалынады; әрбір формаға өзінің жеке бағдарламалық модулі –Unit сәйкес
келеді.
Бағдарламаны компиляциялаған және жинаған кезде бұл модульдердің бәрі
бір орындалатын файлға беріледі.
Бағдарламаның жұмысшы терезелері жұмыс барысында әртүрлі жиілікпен
шақырылады, себебі бір форма жиі қолданылады, ал басқасы сирек
қолданылады.Дегенмен, бағдарламаны орындалатын бір файл етіп
ұйымдастырғанда олар жадыға жазылады және одан орын алады.
Жобада форманың DataModule , DLL Wizard түрлерін және модульдің
Diagramm бетін пайдалану арқылы Оқу курсы қосымшасы құрылады.
1. Жалпы бөлім
1.1 Берілгендер қоры қосымшасының құрылымы
Берілгендер қоры қосымшасы мәліметтер қорының кейбір мәліметтер
көздерімен өзара әрекетіне арналған.
Өзара әрекет деп мәліметтер алу, оларды ыңғайлы форматта қолданушы
көру үшін көрсету, бағдарламадағы бизнес-алгоритмнің орындалуына сәйкес
өңдеу және өңделген мәліметтерді қайта мәліметтер қорына жіберуді айтады.
Мәлімет көзі ретінде сол берілгендер қорының өзі, мәтіндік, электрондық
кестелер және т.с.с. – кәдімгі файлдар бола алады.
Мәліметтер қорымен жұмыс істейтін қосымшаларды қарастырамыз.
Мәліметтер қоры арнаулы бағдарламалармен қызмет көрсетеді. Ол
бағдарлама – берілгендер қорының басқару жүйесі (МҚБЖ). МҚБЖ локальдік және
серверлік болып бөлінеді. Мәліметтер қорының локальдық жүйесі жеке
қолданушыға арналған, ал серверлік көп қолданушыға арналған.
Қолданушының әр-түрлілігіне қарамай мәліметтер қоры қосымшасының жалпы
архитектурасы өзгеріссіз қалады.
Қосымша мәліметтерді қабылдау және жөнелту механизмінен, мәліметтерді
ішкі түрлендірулер механизмінен, кескіндеу және баспаға шығару үшін
қолданушы интерфейсінен, мәліметтерді өңдеуге арналған бизнес – логикадан
тұрады.
Қабылдау және жөнелту механизмі мәліметтер көзімен жалғастыруды қамтамасыз
етеді. Ол екі бағытты мәліметтер ағымын қамтамасыз ету үшін қайдан және қай
ауыстыру хаттамасын қолдану керек екенін білуі қажет.
Мәліметтерді ішкі түрлендіру механизмі мәліметтер қоры қосымшасының
ядросы болып табылады. Алынған мәліметтерді сақтайды, қосымшаның басқа
бөліктерінің сұраныстары бойынша мәліметтермен қамтамасыз етеді.
Қолданушы интерфейсі мәліметтерді көру мен өңдеуді ,сонымен қатар
мәліметтерді басқаруды қамтамасыз етеді.
Қосымшаның бизнес-логикасы бағдарламада деректерді өңдеу
алгоритмдерінен тұрады. Қосымша мен мәліметтер қоры арасында бағдарламаны
мәліметтер көзімен және мәліметтер ауысу үрдісін басқаруды байланыстыратын
арнаулы бағдарламамен қамсыздандыру (БҚ) орналасады.
Бұл бағдарламамен қамсыздандыру мәліметтер қоры көлеміне,шығарылатын
есептер жүйесіне, қолданушылар санына, қосымшамен мәліметтер қорын
байланыстыру тәсілдеріне қарай әр-түрлі тәсілмен қолданылады.
Мәліметтер көзі мәліметтерді және МҚБЖ сақтау орны, мәліметтердің тұтастығы
мен қарама -қайшылықсыздығын қамтамасыз етеді.
Delphi-де қосымшалар жасау әдістеріне тоқталамыз.
Жобада келесі сұрақтар қарастырылады:
• Delphi-дегі мәліметтер қоры қосымшасының құрылымы;
• Мәліметтер қоры қосымшаларын құруды қолданылатын базалық компоненттер
және олардың өзара байланысы;
• Мәліметтерді жинақтау түсінігі және оның мәліметтер қоры қосымшасының
негізгі механизмдеріне қатысуы;
• Мәліметтер модулі;
• Мәліметтер қоры қосымшасы бөліктерінің бағдарламалық орындалуы.
1.2 Мәліметтер қоры қосымшасы қалай жұмыс істейді
Мәліметтер қоры қосымшасын құру Delphi-де формадан
басталады.Қолданушы интерфейсі кәдімгі формадағы стандартты және арнаулы
визуальдіы компоненттер арқылы құрылады. Мәліметтерді көрсететін визуальды
компоненттер палитрасындағы Data Controls бетінде орналасқан. Көп жағдайда
олар мәліметтер жинақтауға арналған басқарудың стандартты элементтерінің
модификациясы болып табылады.
Қосымшада формалар саны кез-келген болуы және кез-келген интерфейсті
қолдануы мүмкін (MDI немесе SDI).Көбінесе бір форма біртекті операциялар
тобын орындауға арналады.
Кез-келген мәліметтер қоры қосымшасының негізі мәліметтер қорынан
қосымшаға көру және өңдеу үшін берілетін мәліметтер жиыны болып табылады.
Мәліметтер жиынтығы мен визуальды компоненттерді байланыстыру үшін арнаулы
компонент Tdata Source пайдаланылады.
Оның қызметі мәліметтер жиынтығы және олармен байланысққан мәліметтерді
көрсету компоненттері арасындағы мәліметтер ағымын басқару.
Бұл компонент мәліметтерді визуальды компоненттерге және нәтижелерді
мәліметтер жиынтығына жеткізеді. Визуальды компоненттер өзгерістеріне
жауап береді, қолданушыдан мәліметтер жиынтығына басқару сигналын береді.
Tdata Source компоненті компоненттер палитрасының Data Access бетінде
орналасқан компоненттер үштігімен құрылады:
• TData Set класы;
• TData Source компоненті;
• Мәліметтерді көрсететін визуальды компоненттерді.
Қосымшада мәліметтер көзімен немесе аралық бағдарламалық
қамсыздандырулармен мәліметтерге қол жеткізу компоненттері өзара
әрекеттеседі, олар мәліметтер жиынтығын инкапсуляциялайды және мәліметтерге
қол жеткізудің технологияларының сәйкес функцияларын әр-түрлі операциялар
орындау үшін шақырады.Мәліметтерге қол жеткізу компоненттері қосымшадағы
мәліметтер кестесінің бейнесін көрсетеді.Мұндай компоненттер қосымшада
шектелмеген.
Мәліметтермен жұмыс істейтін әрбір компонент ең аз дегенде TData Source-ң
бір компонентімен байланыста болады. Оның міндеті мәліметтер жиынтығын
мәліметтерді көрсету визуальды компоненттермен қосу. TData Source
компоненті ағымдағы мәндерді мәліметтер жиынынан тасымалдайды және оларға
өзгерістер енгізілгеннен соң қайта орнына әкеледі.
TData Source-ң компоненті бірнеше мәліметтерді көрсетудің визуальды
компоненттерінің бірнешеуімен байланыста болады. Бұл компоненттер,
мәліметтер жиынтығынан ақпаратты көрсететін басқару элементтерінің
модификациясы. Компонент мәліметтер жиынтығын ашқанда мәліметтер қорының
қажетті кестесінен мәліметтер алады.
1.3 Мәліметтер модулі
Мәліметтер қоры қосымшасындағы мәліметтер жұмыс істеу үшін арнайы
форма –мәліметтер модулі қолданылады.
Мәліметтер модулінің қосымшаның кәдімгі формаларына ешқандай қатысы жоқ.
Мәліметтер модулінде тек визуальды емес компоненттер пайдаланылады.
Мәліметтер модулін әзірлеуші жұмыстың кез-келген этапында қолдана алады.
Қолданушы мәліметтер модулін жұмыс барысында көре алмайды.
Мәліметтер модулін құру үшін Delphi-дің бас мәзірі пайдаланылады.
Мәліметтер модуль таңбасы Data Module NEW бетінде орналасқан.
TDataModule класы TComponent класынан шығатын болғандықтан мәліметтер
модуль стандартты формамен аз байланысады. Мәліметтер модулі оқиғаларының
әдістеме - өңдеуіштері мен қасиеттері түгел жоқ.Мәліметтерден модель,
диаграмма құру үшін Diagram редактор коды бетінің мүмкіндіктерін қолдануға
болады. Мәліметтер модулінің тармақталған компоненттер ағымының кез-келген
элементін диаграмма бетіне шығаруға және онымен байланыс жасауға болады.
Басқарушы батырмалармен диаграмма элементтерінің синхронды көру қатынасы
беріледі.
Мәліметтер модульде орналасқан мәліметтер мен басқа жоба
модулдерінің компоненттерін байланыстыру ушін Uses секциясына модуль атын
кіргізу қажет.
Unit Interface Module;
. . .
Ipmlementation;
Uses Data Module;
. . .
Data Module. Tablel Open;
Пайдалану компоненттерін мәліметтер модульде берудің ыңғайлылығы – кез-
келген қасиеттің мәнінің өзгеруін мәліметтер модуль қосылған басқа кәдімгі
модульдер көрсете береді. Сонымен қатар бұл компоненттерді өңдеуіш
қасиеттер бір жерге жинастырылған.
1.4 Мәліметтер жиынтығына қосу
Мәліметтер қоры қосымшасының негізі болып мәліметтерге қол жеткізу
компоненті табылады.
Ол мәліметтер қоры таңдалған кесте негізінде мәліметтер жиынтығын құрады
және оны басқаруды тиімді ұйымдастырады.
Мәліметтерге қол жеткізу компоненттерінің бәрі визуальды емес компоненттер.
Жаңа жоба құру үшін NEW Application жарлығын File мәзіріінен таңдау
жеткілікті немесе File мәзіріінен NEW жарлығымен ашылатын объектілердің
репозиторилері пайдаланылады.
Жаңа жоба формасына мәліметтер жиынтығын инкапсуляциялап, келесі
орындалатын амалдарға компоненттер көшіріледі.
1. Компонентті мәліметтер қорынына қосу керек. Ол үшін керекті технологияға
байланысты арнаулы компонент қолданылады.
2. Компонентке мәліметтер қоры кестесін қосу керек. Ол үшін Table Name
қасиеті пайдаланылады. Бірінші этап амалдары орындалғаннан кейін бұл
қасиеттің тізімінде барлық қолданыла алатын мәліметтер қорының кестесі
шығуы қажет. Кесте аты таңдалған соң Table Name қасиетінің компоненті
онымен байланысты болады.
3. Компоненттің атын ауыстыру. Бұл міндетті орындауды қажет етпейді,
дегенмен пайдалану компоненттеріне мағынасы түсінікті жұмыс істейтін
кестеге сәйкес ат берген қолайлы. Кобінесе компонент аты кесте атымен
аталады. (Мысалы: Orders немесе Ord Table)
4. Мәліметтер қоры кестесі мен компоненттер арасындағы байланысты
активтендіру. Ол үшін Active қасиеті пайдаланылады. Егер инспектор
объектісінде бұл қасиетке True мәнін берсе, байланыс активтендіріледі. Бұл
әрекетті қосымшаның бастапқы кодында орындауға болады.
Сонымен қатар Open әдісі бар, ол мәліметтер жиынтығын ашады, ал close әдісі
оны жабады.
Мысал: Countru.DB кестесімен жұмыс істейтін мәліметтер қоры қарапайым
қосымшасын құру керек. Ол Borland Data base Engine процессорының DBDE MOS
стандартты көрсету мәліметтер қорымен жұмыс істейді. Жаңа жоба формасына
ТТable компонентін BDE компоненттер палитрасы бетінен көшіреді. Data base
Name қасиеті DBDEMOS жалған атына байланысады. Ол Delphi-ді қосқанда
автоматты құрылады.
Table Name қасиеті үшін COUNTRY кестесінің атын беру қажет. Оны тізімнен
таңдауға болады. Active қасиетін екі рет шерту оған true мәнінен
меншіктейді. Бұдан кейін компонентпен кесте арасындағы байланыс
активтелінеді. Name қасиетінің мәні: Country Table-ге тең.
Мәліметтер жиынтығы форманы бірінші көрсеткенде ашылып, форманы жапқанда
жабылуы қажет.
DemoDBApp жобасының бас мәзірінің Ipmlementation секциясы
Ipmlementation
$RDFM
Procedure TFormI. FormShow(Sender:Tobject):
Begin
Try
Country Table.Open;
Except
ShowMessage(Table.open errоr);
End;
End;
Procedure TFormI. Form Close (Sender:Tobject; var
Aktion: TFormClose Aktion);
Begin
Country Table, Close;
End;
End.
Форманы ашқан кезде FormShow өңдеуіш әдісі орындалады. Open
әдісі арқылы оның ішінде мәліметтер жиынтығы ашылады. Қажетті жағдайларда
тиімді аяқтайтын Try Except конструкциясы пайдаланылады.
Мәліметтер қоры қосымшаларымен жұмыстағы қателер көп қиыншылықтар туғызатын
болғандықтан, барлық күдікті орындарға сақтандыру кодын қою қажет. Form
Close өңдеуіш- әдістемесі форманы жапқанда шақырылады, Close әдісімен
мәліметтер жиынтығы жабылады.
1.5 TDataSource компонентін іске қосу
Мәліметтер қоры қосымшасын құрудың екінші этапында TDataSource
компонентін іске қосып формаға апару қажет. Ол мәліметтер жиынтығы мен
мәліметтерді көрсету компоненттері арасындағы байланысты қамтамасыз етеді.
Көбінесе бір мәліметтер жиынына TDataSource бір компоненті сәйкес келеді.
Компоненттер қасиетін қосу үшін келесі амалдарды орындау қажет.
1. TDataSource компоненті мен мәліметтер жиынынтығын байланыстыру керек.
Ол үшін объектілер инспекторы арқылы қосылатын TDataSource компонентінің
DataSet қасиеті қолданылады. Объектілер инспекторында мәліметтер
жиынынтығымен жұмыс істейтін бұл қасиеттің тізімі келтірілген.
2. Компонентке басқа ат қою керек. Бұл әрекет міндетті емес. Дегенмен
Source компоненті мен мәліметтер жиынынтығына байланысты ат беру ыңғайлы.
DemoDBApp қосымшасында CountrySource компоненті Country Table
компонентімен байланысқан , сондықтан Data Set қасиетінің мәні Country
Table болады. TDataSource компонентінің бірнеше пайдалы қасиеттері мен
әдістері бар. Мәліметтер жиынынтығымен байланысты property DataSet, TData
Set қасиеті, ал мәліметтер жиынынтығының ағымдағы жағдайын
Type TDataSetState
=(dsInactive,dsBrowse,dsEdit,dsInse rt,dsSetKey,dsCalcFiels,dsFilter,ds NEW
value,dsOldvalue,dsCurValue,dsBlokR eod,dsItennalCalc);
Property State; TDataSetState;
қасиетін пайдаланып анықтауға болады.
Property Enabled: Boolean;
қасиеті арқылы барлық байланысқан компоненттерді қосуға немесе өшіруге
болады.
False мәні бойынша компоненттің ешқайсысы жұмыс істемейді.
Property AutoEdit: Boolean;
қасиетінің мәні True болғанда мәліметтер жиынынтығын редактор режиміне
жібереді.
Тура солай,
Procedure Edit;
әдісі байланысқан мәліметтер жиынынтығын редактор режиміне жібереді.
Function IslinRedTo(Data Set: T Data Set); Boolean;
әдісі егер Data Set параметріндегі компонент TdataSource-ң осы
компонентімен байланысқан болса, онда ол True мәнін қайтарады.
Өңдеу әдісі
Type Tdata ChageEvent = procedure (Sender;Tobject;Fied;TCild) of object;
Property OnDataChange: TDataCliageEvent;
Байланысқан визуалды компоненттердің бірінде мәліметтерді өңдеу кезінде
шақырылады.
Өңдеу әдісі
Property On UpdateData;TNotifyEvent;
мәліметтер қорындағы өзгерістерді сақтау үшін шақырылады.
Өңдеу әдісі
Property On stateChange: TnotifyEvent;
байланысқан мәліметтер жиынынтығын өзгерту үшін шақырылады.
1.6 Мәліметтерді кескіндеу
Мәліметтер қорының қосымшасын құрудың үшінші этапында қолданушы
интерфейсін жасау керек.
Қолданушы интерфейсі мәліметтерді көрсету компоненттері негізінде
жасалады. Бұл компоненттер мәліметтерді көруге және өңдеуге арналған. Бұл
компоненттердің көпшілігі басқарудың стандартты элементтеріне ұқсас.
Сонымен қатар мәліметтерді кескіндеу компоненттерінің көпшілігі басқару
элементінің стандартты компоненттерінің мұрагерлері.
Мәліметтер қорының компоненттері Tdata Source компонентімен және сол
арқылы мәліметтер жиынынтығы компоненттерімен байланыста болуы керек. Ол
үшін Tdata Source қасиеті қолданылады. Tdata Source қасиеті мәліметтер
қорының барлық компоненттеріне қатысады.
Компоненттердің басым көпшілігі жалғыз бір өрістегі мәліметтерді
көрсетуге арналған. Мұндай компоненттерде DataFiеld қасиеті де болады, ол
байланысқан мәліметтер жиынтығының компонентте көрсетілетін өрісін
анықтайды.
Мәліметтер қорының қосымшасында TobGrid компоненті мәліметтерді кесте
түрінде беру үшін қолданылады. Кесте бағаналаларында мәліметтер жиынтығының
өрістері, ал жолдарында жазулар беріледі.
Сонымен мәліметтер қоры әрбір визуалды компоненті үшін келесі
әрекеттерді орындау қажет:
1. Мәліметтер қоры компонентін Tdata Source компонентімен байланыстыру
керек. Ол үшін Tdata Source компонентінің қасиеті пайдаланылады.Ол Tdata
Source компонентінің қажеттісін көрсетеді.
Мәліметтер қоры бір компонентін Tdata Source-ң бір ғана элементі мен
байланыстыруға болады. Қажетті компонент инспектор объектісінің қасиеттер
тізімінен таңдалады.
2. Мәліметтер өрісін беру керек. Ол үшін TFields типінің DataField қасиеті
пайдаланылады.
Data Source қасиетін берген соң өріс тізімінен таңдалады Бұл этап жалғыз
өріс көрсететін компоненттер үшін ғана қолданылады.
Мәліметтерді кескіндеу компоненттерінің ішінде TDBNavigator компоненті
ерекше орын талады. Ол мәліметтер жиынтығыныңжазуларымен жұмыс істеуге
арналған.
DemoDBApp қосымшасында TDBGrid, TDBNavigator және TDBEdit компоненттері
қолданылған.
Мәліметтерді кескіндеудің үш компоненті де Tdata Source типінің Country
Sonrce компонентімен Data Source қасиеті арқылы байланысқан.
TDBEdit компоненті Capital өрісінің мәліметтерін кескіндейді және оларды
түзеуге мүмкіндік жасайды. TDBNavigator компоненті Country Table мәліметтер
жиынтығының жазуларымен жұмыс істеуге арналған.
Мәліметтер жиынтығына қосылған барлық мәліметтер қоры компоненттерінде
нәтиже көрінеді.
2.Арнайы бөлім
2.1 Есептің қойылу шарты
Серверге SQL тілінде орындалатын сұраныс беретін, ал сервер
мәліметтермен қажетті манипуляциялар жасайтын клиент қосымшасын құру.
Клиент мәліметтер таңдауға серверге сұраныс жіберсе, онда сервер
мәліметтер жиынтығын қайтарады; Онымен клиент қосымшасы жұмыс істейді.
Сондықтан клиент қосымшасында келесі операциялар орындалуы керек:
• Мәліметтер серверіне қосылу, қолданушы аты мен паролін енгізу.
• Серверге сұраныстар жіберу және нәтиже алу.
• Мәліметтерді қолданушыға ыңғайлы түрде көрсету. Мәліметтерді
сұрыптау және сүзу.
• Мәліметтер қосу және өшіру, мәліметтер жиынтығы бойынша жылжу.
Бағдарламада келесі модульдер болатындай етіп дайындау керек:
• Негізгі орындалатын модуль(қабықша)
• Пароль енгізетін сұхбаты бар модуль- негізгі модульден қосылатын
DLL кітапханасы;
• Оқушы анықтамасы сұхбаттық модулі- негізгі модульден
қосылатын DLL кітапханасы.
2.2 Есептің формальды қойылуы
2.3 Алгоритмнің жалпы құрылымы
2.4 Программалық модуль құрылымы
2.5 Форма көріністері
1.Басты мәзір формасы
2. Серверге қосылу фоормасы
3. Серверге қосылуын растайтын хабарлама
4. Білімгер анықтамасы формасы
5. Код терезесінің диаграмма беті
6 Сеансты аяқтау хабарламасы
2.6. Есептің орындалу үрдісі
2.6.1. Берілгендер қорына қол жеткізуге арналған сұхбат терезесін
DataModule формасын пайдаланып құру
Біздің мақсатымыз- реляциялық қорда сақталатын мәліметтерді
манипуляциялауға мүмкіндік беретін бағдарлама құру.
Бұл мәліметтермен жұмыс істеу басқарудың ерекше жүйесі –(бағдарламалық
кэш) мәліметтер қорының сервері деп аталатын бағдарламалық кешен арқылы
іске асырылады.Құратын бағдарламаны клиенттік қосымша деп атаймыз.
Клиент қосымшасы серверге SQL тілінде орындалған сұраныс береді, ал
сервер мәліметтермен қажетті манипуляциялар жасайды.Дербес жағдайда,
егер клиент мәліметтер таңдауға сұраныс жіберсе, онда сервер мәліметтер
жиынтығын қайтарады; Онымен клиент қосымшасы жұмыс істейді.Клиент
қосымшасы келесі амалдарды орындауға қажет.
1. Мәліметтер серверін қосу, қолданушы аты мен құпия сөзін енгізу.
2.Серверге сұраныстар құрастыру және нәтиже алу.
3.Мәліметтерді қолданушыға ыңғайлы түрде көрсету.Мәліметтерді
сұрыптау және сүзу.
4.Мәліметтерді қосу және өшіру, мәліметтер жиынтығы бойынша
жылжу.
Бағдарламада осы функциялардың бәрі орындалса, онда ол өте
қолайсыз болады. Бұл түсінікті де біз бағдарлама жазу кезінде алдыңғы
құрған формаларды өзгертпей өшірмей, жаңа формалар қоса береміз.Олардың
кейбіреуін қолданушының көруі міндетті емес, сондықтан артық ақпарат
пайда болады.Бағдарлама жазуда жалпы жоспар болуы қажет. Мұндай
жоспардың негізгі принципіне модульділік жатады. Қосымша белгілеріне
қарай бөлінген бірнеше дербес бағдарламалық бөліктерден тұрады. Әр
бөлікке жеке бағдарлама жазылады және жеке файл түрінде де берілуі
мүмкін. Delphi –де Windows ортасы үшін бағдарламалық терезе форма
жасалынады; әрбір формаға өзінің жеке бағдарламалық модулі –Unit сәйкес
келеді.
Бағдарламаны компиляциялаған және жинаған кезде бұл модульдердің бәрі
бір орындалатын файлға беріледі.
Бағдарламаның жұмысшы терезелері жұмыс барысында әртүрлі жиілікпен
шақырылады, себебі бір форма жиі қолданылады, ал басқасы сирек
қолданылады.Дегенмен, бағдарламаны бір орындалатын файл етіп
ұйымдастырғанда олар жадыға жазылады және одан орын алады.
Windows ортасында бағдарламаның орындалу кодын ұйымдастырудың басқа
тәсілдері де бар. Орындалатын кодты, мысалы, динамикалық байланыстыру
кітапханасына (dynamic-link library)орналастыруға болады. Динамикалық
кітапханалар бір немесе бірнеше қосымшалардан шақырылатын процедуралар
немесе функциялар жиынынан тұрады. Оларды басқа орындалатын файлдармен
шатастырмау үшін олар dll кеңейтілуімен беріледі. Dll Windows-тың
конструктивті элементтерінің ішіндегі ең маңыздыларының бірі. Windows
негізінде Dll жиынтығынан тұрады. Егер Windows\System каталогына қарасақ,
одан gdi32.dll, kernel32dll және user32dll файлдарын көреміз. Windows
орындайтын жұмыстар осы және басқа файлдарда сақталады және оның бәрі
Dll болып табылады.
Delphi бағдарламасы басқа тілдерде жазылған кітапханаларды пайдалана
алады, ал басқа тілдерде жазылған Windows бағдарламасы Delphi ортасында
құрылған DLL-дерді шақыра алады.
DLL-дің бағалылығы оларды бағдарлама орындалу барысында жадыға жазуға
және шығаруға болады, ол бірнеше мегабайттан тұратын қосымша құра
беруге мүмкіндік береді, бірақ олар ешқашан жүз килобайттан артық орын
алмайды. Мысалы, біздің бағдарламамыздағы қолданушы атымен паролін
енгізетін сұхбат терезесі бірақ рет –SQL –серверді қосқан кезде ғана
шақырылады,бірақ форма және онымен байланысқан бағдарламалық код
бағдарламамен жұмыс істеп біткенше жадыда тұрады. Осы сұхбатты жеке
модульге шығарып жадыға тек парольді енгізгенде ғана жазылатындай ету
қажет. Осы принципті қосымшаның басқа формаларына да қолдануға
болады. Оларды қажет кезінде ғана жадыға жазылатындай етіп жеке DLL-ге
шақыру керек.
Бірінші қосылатын және қажетті динамикалық кітапхананың қосылуын
орындайтын байланыстырушы – бағдарлама қажет, ол барлық формалар үшін
қабықша сияқты көрсетіледі. Бұл бағдарламада берілгендер қорымен жұмыс
істейтін функциялар да болуы мүмкін. Сырттай бұл бағдарлама бас
мәзірмен статустық жолдан тұратын бос терезе түрінде беріледі.
Біздің бағдарламамызды оның ішінде келесі модульдер бар болатындай
етіп түрлендіреміз:
• Негізгі орындалатын модуль(қабықша)
• Пароль енгізетін сұхбаты бар модуль- DLL- кітапханасы, негізгі
модульден қосылады;
• Оқушы анықтамасы диалогы бар модуль- DLL-дің бөлек
кітапханасы, негізгі модульден қосылады.
Бағдарламаның бұл құрылымының тиімділігі мынада, оны жеңіл кеңейтуге
болады: қажет болғанда жаңа кітапханалар қосылады; ал қабықшаға оның
шақырылуы қосылады.Біздің қосымша үшін жалпы қабықша құрайық.Бас
мәзірден FileNewApplicationпунктін таңдайық.Бастапқы жобаны PROJ3-2
каталогында proj3-2. prg деп құрылған unit1.pas. және main.pas деп
сақтаймыз.
Form1- ді fMain деп өзгертеміз.
Компонент Қасиет Мән
fmain Caption Оқу курстары
Position poScreenCenter
WindowsState wsMaximized
BorderStyle bsSingle
FormStyle fsMdTfrom
Формаға TMainMenu компонентін Standard бетінен алып қоямыз. Бас мәзірді
өңдеу үшін объектілер инспекторынан Items қасиетін таңдап, оны екі рет
шертеміз. Мәзірдің пунктын немесе бөлімін құру үшін мәзір
редакторына (1 сурет) бос пункт белгілеу және объектілер
инспекторының Caption қасиетіне пункт атауларын енгізу қажет.
1 сурет Мәзір редакторы
Жиі кездесетін мәзір (үлгі) түрінде сақталады. Мәзірді шаблон түрінде
сақтау үшін редактордың контекстік мәзірінен Saveas Template...
таңдалып, шаблон аты енгізіледі. Шаблонды шақыру Insertfrom
Template...пункті арқылы орындалады. Бөлімдерден тұратын келесі кестеде
көрсетілгендей мәзір құрамыз(2 сурет).
МӘЗІР БӨЛІМІ МӘЗІР ПУНКТІ
Жүйе Сервермен байланыс
Сеансты аяқта
Шығу
Көмек
Бағдарлама туралы
2 сурет .Бағдарламаның бас мәзірі
Ажырату сызығы мәзірге пункт атауының орнына - таңбасын, енгізгенде
ал шапшаң қол жеткізу пернесін мәзірі пунктіне байланыстыру үшін
пункт атауындағы сәйкес әріптің алдына & таңбасын қою қажет. Бұл таңба
мәзірде асты сызылып белгіленеді және мәзірдің бұл пунктін асты
сызылған таңбаны Alt пернесімен бірге басу арқылы таңдауға болады.
Мысалы, мәзірдегі жүйе бөлімі Caption жолына ж&үйе деп енгізілген.
Формаға StatusBar компонентін Win32бетінен алып, оған SimplePanel=true
қасиетін береміз. (3 сурет) қосымшаның негізгі формасының көрінісі
осындай болады.Бұл қосымша барлық элементтер жұмысын, соның ішінде
олардың берілгендер қорымен байланысын реттеп отыратын орталық болуы
қажет. Сондықтан байланысты іске асыратын компоненттері болуы керек.
3 сурет. Қосымшаның негізгі формасы
Алдыңғы мысалда берілгендер қорымен жұмыс істеу үшін визуалды емес
компоненттерді тікелей формаға орнаттық, бірақ бұл барлық кезде
ыңғайлы емес, бұлай істеу жобалау кезінде сұхбат терезесін жауып қалады.
Сондықтан Delphi –де визуалды емес компоненттер үшін арнайы форма типі
қарастырылған, ол мәліметтер модулі (DataModule) деп аталады.
Бағдарламаға мәліметтер модулін қосамыз. Ол үшін мәзір пунктіне
FileNewDataModule таңдалынады немесе FileNewOther... таңдалып
DataModule иконкасын шертіледі.
Палитрадан кезекпен TDataSource,TDataBase,TQuery және TUpDateSQL таңдап
оларды мәліметтер модулінің формасына орнатамыз. Delphi –де жобалау
процесін жеңілдету үшін жаңа терезе ObjectTreeNew (объектілер ағашы)
пайда болады, ол формаға орналасқан компоненттер иерархиясын көрсетеді.
Бұл терезені экранға шақыру үшін ViewObjectTreeView пунктін
пайдалану керек немесе Shift-Alt-F11пернелерін басу керек.Мәліметтер
модулі және оған сәйкес терезе ObjectTreeView
4 суретте көрсетілген.
4 сурет Компоненттерімен мәліметтер модулі және ObjectTreeView терезесі.
Контекстік мәзірде StayOnTopпункті іске қосу арқылы объектілер
ағашы бар терезені әруақытта экранда, басқа терезелер үстінде қалдыруға
болады.Мәліметтер модулі терезесі екі панельден тұрады.Сол жақ панель
мәліметтерге қол жеткізу компоненттерінің қатынасын кескіндейтін ағашы
бейнелейді.Оң жақ панельде екі бет белгі- Components және DataDiagram
бар. Components бетінде берілгендер қорымен жұмыс істеуге арналған
визуалды емес компоненттер орналастыралады.Компоненттер олардың
иконкалармен палитрадағыдай беріледі.Сол жақ панельде компоненттердің
барлық байланыстарын кескіндейтін, сонымен қатар бұл байланыстарды
өзгертуге мүмкіндік беретін ағаш пайда болады. Components бетіндегі
компоненттер қасиеттерімен жұмыс істеу үшін компонентті белгілеп ,оның
иконкасын шертіп Ғ11 пернесімен объектілер инспекторын шақырамыз.
DataBase компонентін белгілейміз де оған DataBaseName қасиетін Tutoriual-
ға тең етіп қондырамыз.Берілгендер қорының аты бірден оң жақ
панельдегі ағаштың сәйкес бұтағына шығады.
Ағаш ары-бері тасымалдау (drag-and-drop)режимін қолдайды, яғни біз
оның барлық элементі бойымен тышқанмен жылжи аламыз және оларға жаңа
байланыс жасаймыз. Мысалы, тышқанмен DataSource1 элементін белгілеп оны
Query1 бұтағына апарайық (5 сурет)
Бұл жағдайда біз Query1 компонентін DataSource1 мәліметтер көзіне
қостық. Бұл DataSource1 компонентінің DataSet қасиетін Query1-ге тең
етіп, орнатқанға тең, оның орнатылғанын Components панелінің DataSource1
компонентін белгілеп, Ғ11 пернесін басып көруге болады. Тура осылай
Query1 бұтағын DataBase1 элементіне апаруға болады. (6 сурет)
Бұл ағашты алдында айтылғандарды кескіндейді: қосымшада үнсіз келісім
бойынша Session объектісі DataSet атымен құрылады, оның ішінде келісім
бойынша Tutoriual берілгендер қоры бар. Осы берілгендер қорымен Query1
және DataSource1 қол жеткізу компоненттері жұмыс істейді.
5 сурет. Мәліметтер модулінің компоненттер ағашы
6 сурет.
Өңделгеннен кейінгі мәліметтер модулі компонентерінің иерархиясы
Session объектісі жобалау кезінде болмайды, ол жоба орындалу үрдісінде
құрылады деп есептелінеді.Мұндай компоненттер ағашта ақ-қара түсті
жұлдызшамен белгіленеді.Мұндай объектінің біріне Fields мысал бола
алады. Егер ағаштың кейбір элементтерінің қасында сары дөңгелек ішінде
қызыл сұрақ белгісі тұратын болса, онда ол компоненттің толық
анықталмағаны.Біздің жағдайымызда бұл Query1 және UpDateSQL1.
Бұл компонентердің анықтамаларын толықтыру керек. SQL сұраныстары бар
қасиеттерді міндетті түрде беру қажет:
Queryl -
SQL: select * from STUDENT order by person_id
UpdateSQLI -
DeleteSQL delete from STUDENT where person_id=:old_person_id;
insertSQL INSERT INTO STUDENT(firet_name, middle_name,
last_name, start_date) VALUES(:first_name,:middle_name, :last
name,:start date);
ModifySQL update student set
first_name=:first_name,
middle_name=:middle_name,
last_name=:last^name,
start_date=:start_date
WHERE person__id= :old_j?erson_id;
Мәліметтер модуліне Delphi-дің кез-келген басқа формаларындағыдай
бағдарламалық модуль сәйкес келеді. Бағдарламалық модульдің редактор
терезесінде екі бет бар-Codeжәне Diagram Бетті редактор терезесінің
төменгі жағына орналасқан бет белгі арқылы таңдауға болады.
Diagram беті визуалды жобалау құралдарынан тұрады, олар қорға қол
жеткізу компоненттері арасында байланыс орнатуға мүмкіндік
береді.Сонымен қатар бұл бет жобаны құжаттау мүмкіндіктерін кеңейтеді,
себебі компоненттер арасындағы байланысты схема түрінде кескіндейді,
бұл сұлбаға комментарий және баспаға шығаруды қосуға мүмкіндік
береді.
Компоненттер диаграммаға автоматты түрде шықпайды, ол үшін оларды
тышқан рақылы сол жақ панелден мәліметтер модуліне әкелу керек.
Диаграммаға Query1 және UpDateSQL1. компоненттерін орнатайық
(7 сурет)
7 сурет Мәліметтер модулі диаграммасының редактор терезесі
Егер диаграммаға элементті оның барлық ұрпақтарымен отырғызу керек
болса, Ctrl пернесін басу керек.
Диаграммаға жазылған компоненттер тіктөртбұрыш түрінде бейнеленеді.
Диаграмманың жоғарғы жағында құралдар инструменті панелі орналасқан, ал
келесі батырмаларды өзіміз қоса аламыз:
Диаграмма объектісін таңдау инструменті.
Қасиет арқылы байланыс.
Басшы- байланысы;
Іздеу түріндегі тип (Lookup).
Комментарийлер блогы.
Комментарийге сілтеме.
Диаграмма компоненттер арасындағы байланысты көрсете алады.
Байланыстың 5 түрі бар:
Қасиет арқылы байланыс. Бай компоненттердің біреуінің қасиеті басқа
компонентке сілтенетін байланысты қасиет арқылы байланыс деп атайды.
Мысалы, Query1 объектісінің қасиеті UpdateObject UpdateSQL1 компонентін
көрсетуі қажет. Бұл байланыс стрелка арқылы белгіленеді. Алдыңғы
диаграммада байланыс жоқ, себебі Query1 объектісінің UpdateObject
қасиеті толтырылмаған.
Бұл байланысты осы диаграммада құрамыз. Ол үшін аспаптар панелінен
қасиет арқылы байланыс батырмасын шертіп, сосын сілтемелік қасиеті бар
( біздің жағдайда - Query1) диаграмма элементін тышқан батырмасымен
шертіп, жібермей ұстап тұрып байланысты екінші элемент үстінен
шертеміз(8 сурет).
8 сурет.Диаграммада байланыс құру
Бұл байланыс типі суретте боялған жебелі сызық түрінде көрінеді.
Сызықтың жанында сілтемесі бар қасиет аты көрсетіледі.Бұдан кейін
UpdateObject1 қасиетінің Query1 компонентіндегі мәні UpdateSQL1-ге тең,
оған объектілер инспекторы Object Inspector-ға қарап көз жеткізуге
болады.
Басты- бағынушы байланыс. Ол Master-Detail типті қатынасымен
байланысқан элементтер арасында құрылады. Екі ассиметриялы дискілер
сызығымен сипатталады, мұндағы үлкен диск мәліметтердің басты жиынына
жақын орналасқан.
Іздеу типті байланыс. Іздеу өрісі арқылы байланысқан диаграмма
элементтерінен құрылады. Көздің стильдік кескіні сызығымен сипатталады.
Іздеу өрісінің аты сызықтың жанында көрсетіледі.
Сілтеме. Бұл типі құжаттамалық мақсаттарға арналған. Ол диаграмманың
кейбір элементтерін байланыстыратын жебе (стрелка) түрінде сипатталады.
Оны түсініктемелер блоктары ( комментарий) бар диаграмма элементтерін
байланыстыру үшін қолдануға болады.
9 сурет.Мәліметтер модулі диаграммасының соңғы көрінісі
Диаграммада түсініктеме жазылатын мәтіндік блок болуы мүмкін.
Диаграмманың әрбір элементінің келесі бөлімшелері бар контекстік мәзірі
болады:
Color элемент түсін орнатады.
Bring to front элементті алдыңғы планға (көрініске)
көшіреді.Бұл бөлімнің мағынасы,
диаграмма элементтері бір-біріне
біріккенде болады.
Sent to back жоғарыда айтылғандай, элементті артқы
планға көшіреді
Remove fromdiagram диаграммадағы элементті жояды
Print диаграмманы баспаға шығару
Құрған формаңың атын fDM –ге (үнсіз келісім бойынша оның аты
DataModule1 еді) ауыстырып, берілгендер модулін uDM деген атпен
сақтаймыз.
Сонымен, қосымшаның екі формасы бар: fMain және fDm, сонымен қатар екі
модулі бар - main және uDm.
Осы уақытқа дейін біз ешқандай бағдарламалық код жазбай тек қана
компоненттер және олардың қасиеттерімен жұмыс жасадық. Енді негізгі
мәзірдің бөлімдерімен айналысайық.
Біздің қосымшаның негізі мәзірінен Жүйе сервермен байланыс...
бөлімін таңдаймыз. Мұнда Delphi басқа да көзге көрінетін элементтер
сияқты, өңдеушінің бос процедурасын құрады, онда таңдалған элементпен
байланысқан бағдарлама кодын жазу керек. Берілген жағдайда мәзірдің
Сервермен байланыс... бөлімі таңдалған элемент болып табылады,
сондықтан процедура денесінде төмендегідей кодты тереміз:
procedure TfMain.N3Click(Sender: TObject); begin try
with fDM.Databasel do begin
if Connected then Close; Open; end;
StatusBarl.SimpleText:='Байланыс орындалған жоқ,' except
StatusBarl.SimpleText:=
end;
end;
Берілгендер қорына қосылу үшін, мұнда Database1.Open әдісі шақырылады.
Алдын ала байланыс бар ма, жоқ па деген тексеру жүргізіледі, егер
Database1 объектісі қорға (бұл жағдайда Connected қасиеті true –ге
тең) қосылып қойған болса, онда байланыс Close әдісінің көмегімен
жабылады.
Бұл бағдарламалық код try... except жиынтығына (конструкция) енеді және
табысты түрде қосылса, статусты жолда Байланыс орнатылды деген мәтін
шығады, ал қате жағдайда Байланыс орнатылмады деген мәтін шығады, ал
қате жағдайда –Берілгендер қорына қосылу дұрыс емес деп көрінеді.
N3Click өңдеушісінің аты негізгі мәзірдің бөлімді құруының
тізбектілігіне қатысты. Delphi үнсіз келісім бойынша негізгі мәзірдің
құрылатын бөлімдеріне N әріпінен және реттік нөмірден тұратын ат
береді, сондықтан егер сіз мәзір бөлімдерінің атын басқа реттілік
берсеңіз, олардың басқа да нөмерлері болуы мүмкін. Егер өңдеушінің
процедурасы сізде N3Click емес, басқа санмен аталуы мүмкін.
Бұл процедура main модулінің бөлігі болып табылады. Сонымен қатар, ол
басқа модульдің объектілеріне сілтеме жасайды- нақты айтсақ uDM
берілгендер модуліне, мұндағы Database1 компоненті fDM формасында
орналасқандықтан, uDM модулі – main модулінің uses бөлімінде көрсетілуі
керек. Егер мұны жасамасақ, Delphi бағдарламаны компиляциялағанда
хабарлайды және оны uses бөліміне қосуды ұсынады.
Дәл осылай мәзірдің Сеансты аяқтау бөлімі үшін , өңдеуші құрыңыз:
procedure TfHain.N4ClicJc(Sender: TObject); begin
with fDM.Databasel do begin
if Connected then Close; end;
StatusBarl.SimpleText^'OTKnioHeHHe .'
end;
Егер байланыс орнатылса, мәзірдің шығу бөлімі берілгендер қорынан
шығуды орындап, содан соң қосымшаны аяқтау керек.Базадан шығу үшін
дайын N4Click өңдеушісін пайдалануға да болады;
procedure TfMain.N6Click(Sender: TObject); begin
N4Click(Sender); Application.Terminate j
end;
Компиляция жасап, бағдарламаны қайта жүктейміз. Сервермен байланыс
бөлімін мәзірден таңдап, бағдарламаның берілгендер қорына кіретін
стандартты сұхбат терезесін көрсетіп тұрғанына көз жеткізіңіз. Құпия
сөз (пароль) және пайдаланушы атын енгізгеннен кейін, егер олар дұрыс
болса, статусты жолда байланыс орнатылды
деген жазба пайда болады.
2. DLL құру
Біздің қосымша қолданатын барлық сұхбат терезелерін бөлек DLL
файлдарына орналастырамыз және есте сақтауды жүктеп, керек кезде оны
шақырамыз деп жоғарыда келіскен едік.
DLL кітапханасы жеке жоба ретінде құрылып, компиляцияланады. Сонымен
қатар ол біз жасайтын қосымшаның 1 бөлігі болып табылады, сондықтан
оны негізгі бағдарламамен бірге сақтау қажет.
Delphi мұндай жобаларды арнайы топқа біріктіріп сақтауға мүмкіндік
береді, олар жобалық топ (project group)деп аталады.
Delphi-дің негізгі мәзірінен ViewProject manager бөлімін таңдаңыз
немесе Ctrl+Alt+F11 пернелер жиынын шертіңіз.Со
нда экран бетінде жобаның менеджер терезесі шығады.(10 сурет)
10 сурет.Жобалардың менеджер терезесі
Бұл терезе басқа терезелерден бөлек орналаса алады, немесе Delphi-
дің мәтіндік редакторының негізгі терезесіне пристыковано бірігуі де
мүмкін. Жобалар менеджері екі бағаннан тұратын кесте түрінде
беріледі. Кестенің сол жағында жобалық топ ағашы орналасады,
иерархиялық формада топтың құрамына енетін барлық файлдар
көрсетіледі.Кестенің оң жағында осы файлдардың орналасқан орны
көрсетіледі.
Біз бірде бір топқа кірмейтін жобамен жұмыс істегенде Delphi оны project
group1 тобына енетінін көрсетеді.
Жобалық топ файлдарының, тышқан батырмасының оң жағын шерту арқылы
шақырылатын мәтін мәзір бар. Жобалық топ ағашынан оның project group1
атын белгілеп алып, оны мәтін мәзірде шақырыңыз. Мәтін мәзірден Save
Project Group As бөлімін таңдап, топты (жобалық топты сақтау керек)
Student деген атпен proj3-2каталогына сақтаңыз. Топ туралы ақпарат
кеңейтілген BPG(Borland Project Group) файлы түрінде сақталады.
Енді кіру сұхбаты бар DLL құру үшін жобалық топқа тағы бір
жоба қосамыз. Алдымен мәтін мәзірді қайта шақырып, AddNewProject
(жаңа жоба қосу) бөлімін таңдаңыз, содан кейін терезеден DLL иконкасын
таңдап, ОК-ді шертіңіз.
Жаңа жоба топқа қосылып Project1.dll деген атпен ағашта көрінеді.
Сонымен қатар мәтіндік редакторында Project1 деген атпен жаңа қатпарлы
бет пайда болады, ал осы қатпарлы бет арқылы Delphi мәтіндік редактор
терезесінде DLL –ді жобалау үшін дайындық құрады. Егер ұзынсонар
түсініктемені файлдың басында алып тастасақ, бұл дайындық келесідегідей
түрде көрінеді.
library Projectl; uses
SysUtils, Classes;
{$R *.RES}
begin
end.
DLL-дің бағдарламалық модулінің құрылымы Delphi-дің қарапайым модуліне
ұқсас, айырмашылығы – DLL үшін ол library кілттік сөзінен басталады. DLL-
дің де басқа бағдарламалау сияқты процедуралары мен функциялары
болады, және де DLL ішкі модульдерді де қолдана алады. Дегенмен, DLL-
дің басты мақсаты- өзінің процедуралары мен функцияларын басқа
бағдарламаларға пайдалануға мүмкіндік беру, ал ол үшін процедуралар
мен функциялар басқа бағдарламаларға көрінуі керек.
Осы мақсатпен, әрбір DLL-дің экспортталатын процедуралары мен
функцияларының атаулары арнайы exports бөлімінде орналасуы керек.
Мысалы, ішкі бағдарламалар DLL-де орнатылған CreateDialog
процедурасына қол жеткізу үшін, мынадай етіп жазу керек:
exports
CreateDialog name 'CreateDialog';
Project1-ді LOGIN деген атпен сақтаймыз, ол үшін ...\ proj3-2каталогында,
dll_Login деген каталог астындағы каталогын құрамыз. Жобалық топ
терезесі енді 11-суреттегідей түрге келеді:
11-сурет. Login. Dll жобасын қосқаннан кейінгі жобалар менеджерінің
терезесі
Біздің dll-дің бағдарламалық жобасы жеке каталогта орналасқанымен,
компиляциялау нәтижесінде алынатын login.dll файлы , оны пайдаланатын
бағдарламаның каталогында орналасуы керек. login.dll-дің мәтін
мәзірінен Options бөлімін таңдап, DirectiriesCorditionals бетінде ,
шығатын каталог ретінде \ proj3-2 жобасының каталогын орнатыамыз.
(OutputDirectory)
Жобалық топ бірбүтін ретінде компиляциялануы мүмкін- Delphi топтың
барлық файлдарын , олардың топ ағашында көрсетілген реті бойынша
,кезекпен компиляциялайды. Бізге login.dll жобасының негізгі proj3-2
жобасынан бұрын компиляцияланғаны қажет, себебі proj3-2 жобасын
жүктегенде login.dll-дің жаңа нұсқасы қажет. Жобалық топ
компиляциясының ретін мәтін мәзірдің арнайы бөлімдерінің көмегімен
беруге болады:
Build Sooner. Таңдалған жобаны объектінің тармақталу терезесі бір саты
жоғары жылжытады.Осылайша, бұл жоба өзінің алдында тұрған жобадан
бұрын компиляцияланады.
Build Later. Таңдалған жобаны объектінің тармақталу терезесінде бір саты
жоғары шығарады.
login.dll жобасын proj3-2-ден бұрын компиляциялануы үшін, жоғары
орналастырыңыз.
Жобаланатын Dll-дің алдында біз жасаған proj3-1 жобасында кіріс
сұхбаты болуы керек.Құрамында бағдарламалық код және кіріс сұхбатының
формасын сипаттайтын.
Мұны Windows-тың немесе басқа бағдарламаның стандартты көмекшісі
арқылы жасауға болады.Көшірілген файлдарды login жобасын қосыңыз. Ол
үшін мәтін мәзірден Add.. бөлімін таңдап,uLogin.pas файлын көрсету
керек. Бұл модульдің login.dll жобасының uses бөліміне қосылатынына
назар аударыңыз. Енді объектінің тармақталу терезесі келесідей түрде
көрінеді(12-сурет).
12- сурет. Жылжытқаннан кейінгі объектінің тармақталу терезесінің түрі.
Кіріс сұхбатының модулі жобаның бөлігі болып табылады, дегенмен онда
тек қана типтің сипатталуы түрінде енеді. Оны пайдалану үшін, өзіміз осы
сұхбаттың данасын құруымыз керек.Алдында , proj3-1 жобасында Delphi
бағдарламасының барлығынөз мойнына алғанына еш алаңдағанымыз жоқ.
Шынында да, жаңа форма құрған кезде , оның құрылу жолағы автоматты
түрде жоба файлында өзі қосылатын еді.
Мысалы, кіріс сұхбаты үшін, жол мынадай түрде берілген:
Application.CreateForm(TfLogin, fLogin);
Енді сұхбат терезесін құру үшін арнайы конструктор шақыру керек:
fLogin:= TfLogin.Create(Application);
ал қолданғаннан кейін- деструктор көмегімен жою керек:
fLogin.Free;
Ең тиімдісі, барлық осы шақыруларды , артқы қосышалар қол жетерліктей бір
функцияға біріктіру керек, яғни экспорттау керек.Бұл функцияны
ShowLoginDialog деп атайық.
Жобаның файлына exports бөлімін қосамыз;
library login; uses
SysUtils,
Classes,
uLogin in 'uLogin.pas' {fLogin};
{$R *.RES exports
ShowLoginDialog name 'SHOWLOGINDIALOG'; begin end.
ShowLoginDialog функциясын жобаға қазір қосылған uLogin модуліне
анықтайық.Бұл процедурамен жұмысты ары қарай жалғастыру үшін өзімізге
мынадай сұрақ қоялық:
Кіріс сұхбатының көмегімен, қосымша пайдаланушыдан нақты бір мәліметтер
алуы керек, нақтырақ айтсақ: атауы, кілтсөз және тағы бір параметр-
сұхбат жұмысының нәтижесі, ModalResult. Барлық мәліметтер, сұхбатпен
жұмысты аяқтағаннан кейін негізгі қосымшаның қолы жетерліктей болуы
керек.Мұндай жағдайларда жиі қолданылатын кеңінен таралған әдіс,
төмендегідей:
• Негізгі қосымшада бірқатар құрылым-record немесе class құрылады,
онда керекті айнымалылар болады.
• Бұл құрылымға сілтеме, әдетте, Dll-де процедура немесе функция
параметрі ретінде беріледі.
• Dll-ден шақырылатын процедура, жұмыс барысында құрылымға енетін
айнымалыларды өзгертеді, оған берілетін сілтеуіш арқылы
хабарласады.
login.dll жобасына жаңа модуль қосыңыз, ол үшін мәзірдің
FileNewUnit бөлімін таңдаңыз, сосын модульдің иконкасын (unit)
таңдап, ОК-ді шертеміз.
Delphi жобаға, үнсіз келісім бойынша аты Unit1 деп каталогына uLoginData
деген атпен сақтаңыз, оны proj3-2 каталогының ішінен құрамыз.
Модульге type бөлімін қосып, келесідегідей кластың анықтамасын теріңіз:
type
TLoginData = class
modalResult: TModalResult;
user_id, password: shortstring;
constructor Create;
end;
Бұл кластың мәліметтерді беруге арналған айнымалылары бар.
Конструктор, айнымалы- мүшелер класына алғашқы мәндерін беру үшін
қажет. Конструктор құруды аяқтау үшін, сілтеуішті кез-келген класс
анықтамасының жолына қойып, SHIFT-CTRL-C пернелер жиынын басыңыз. Delphi
автоматты түрде, класқа енетін барлық әдістер дайындығын құрады; берілген
жағдайда – Create конструкторының дайындығын.
Конструктор мәтінін тереміз:
constructor TLoginData.Create; begin inherited;
ModalResult:=0; user__id: = ''; password:^'';
end;
Сонымен қатар uses бөліміне Controls модулін қысыңыз, бұл-осы
модульде берілген, TModalResult стандартты типін қолдану үшін қажет.
uLoginData-ң соңғы нұсқасы төмендегідей түрде көрінуі керек:
unit uLoginData;
interface uses Controls;
type
TLoginData = class
modalResult: TModalResuIt;
user_id, password: shortstring;
constructor Create; end;
implementation
{ TLoginData }
constructor TLoginData.Create; begin
inherited;
ModalResult:=0;
UBer__id:'';
passwords'';
end;
end.
Енді uLogin модуліне оралайық. Оны төменде көрсетілген листинг бойынша
дұрыстаймыз:
unit uLogin; interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, uLoginData;
type
TfLogin = class(TForm)
Labell: TLabel; зд Label2: TLabel;
ebUserName: TEdit; ebPassword: TEdit;
btnCancel: TButton;
btnOk: TButton;
procedure FormShow(Sender: TObject};
procedure btnOkClick{Sender: TObject);
procedure btnCancelClick(Sender: TObject); private
{ Private declarations } public
{ Public declarations }
LoginData: TLoginData; end;
procedure ShowLoginDialog(Handle: THandle; p: pointer);
var
fLogin: TfLogin;
implementation
{§R *.DFM}
procedure ShowLoginDialog(Handle: THandle; p: pointer); begin
Application.Handle := Handle;
fLogin:= TfLogin.Create(Application);
fLogin.LoginData:=TLoginData(p);
fLogin.ShowModal;
fLogin.Free; end;
procedure TfLogin.FormShow(Sender: TObject); begin
ebPassword.Text:=''; end;
procedure TfLogin.btnOkClick(Sender: TObject); begin
LoginData.user_id:=ebUserName.Text; LoginData.password:=ebPassword.Text ;
LoginData.modalResult:=mrOK; end;
procedure TfLogin.btnCancelClick(Sender: TObject); begin
LoginData.modalResult:=mrCancel; end;
end.
Мұнда interbase бөліміне мынадай хабарлама қосылады.
procedure ShowLoginDialog(Handle: THandle; p: pointer);
ал implementation бөліміне- осы процедураны жүзеге асыру:
procedure ShowLoginDialogfHandle: THandle; p: pointer); begin
Application.Handle := Handle;
fLogin:= TfLogin.Create(Application);
fLogin.LoginData:=TLoginData{p);
fLogin.ShowModal;
fLogin.Free;
end;
Бұл процедураның екінші параметрі болып, TloginData класына сілтеме
жатады.Дәл мұндай сілтеуіш, кіріс сұхбатының өзінің класс
анықтамасының public бөлімінде қосылған:
public
{ Private declarations }
LoginData: TLoginData;
Алынған сілтеуіш, типті түрлендіруді қолданумен loginData класының
мүшесіне беріледі.
fLogin.LoginData:=TLoginData(p);
Кластың бұл мүшесі , басқа процедуралар сұхбатынан берілген класқа
хабарласудың тиімділігі үшін енгізіледі, нақтырақ айтсақ ОК және
(Отмена) Болдырмау батырмаларын басатын өңдеушілер үшін.
ОК батырмасын шерткенде , пайдаланушы енгізген TloginData класының
аты мен құпия сөзді беру жүріп жатады:
LoginData.user_id:=ebUserName.Text; LoginData.password:=ebPassword.Text ;
LoginData.modalResult:=mrOK;
Болдырмау батырмасын шерткенде , болдырмау батырмасы шертілгенін
хабарлайтын, мәні modalResult беріледі:
LoginData.modalResult:=mrCancel;
Login.dll жобасын компиляциялап, proj3-2 каталогында login.dll
файлының пайда болғанына көз жеткізіңіз.
Енді негізгі қосымшадан кіріс сұхбатын шақырумен айналысайық. dll
мен негізгі бағдарламаның арасында мәліметтер алмасу үшін, кластың
негізгі бағдарламадан да көрінгені қажет. Топ ағашынан proj3-2
жобасының атын 2 рет шертіп,өтіңіз.
Мәтін мәзірден Add бөлімін таңдап, біз жаңа ғана құрған login.dll
жобасында,\comman каталог астындағы каталогынан uLoginData файлын
көрсетіңіз. Main модуліне өтіп, implementation және uses бөліміне
uLoginData модулін қосыңыз.БҚ-на қосылуға жауап беретін процедураны
келесідегідей етіп дұрыстайық:
procedure TfMain.N3Click(Sender: TObject); type
TShowLoginDialog =procedure(Handle: THandle; p: pointer); var
hLib: THandle;
ShowLoginDialog: TShowLoginDialog;
LoginData: TLoginData; begin
hLib := LoadLibrary('LOGIN.DLL'); if hLib32 then begin
ShowMessage
LOGIN.DLL.'); Exit; end; LoginData;=TLoginData.Create;
ShowLoginDialog:=TShowLoginDialog(G etProcAddress(hLib,
'SHOHLOGINDIALOG'));
ShowLoginDialog(Application.Handle, LoginData); FreeLibrary(hLib);
if LoginData.ModalResult=mrOK then begin try
with fDM.Databasel do begin
if Connected then Close; LoginPrompt:=false;
Params.Values['PASSWORD'] := Trim(LoginData.password);
Params.Values['USER NAME'] :=Trim(LaginData.user_id);; Open; end;
StatusBarl.SimpleText:= except
StatusBarl.SimpleText:= ' end;
end;
end;
Оны тереңірек қарастырайық, себебі дәл осында DLL-ді басқару –оны есте
сақтаушыға жүктеу, экспортталатын процедураны шақыру және БҚ-на
енгізілген атау мен құпия сөзді пайдалану арқылы жүргізіледі.
DLL-ді есте сақтаушыға жүктеу LoadLibrary функциясын шақыру көмегімен
жүргізіледі.
hLib := LoadLibraryf'LOGIN.DLL');
Бұл функция жүктелінген кітапхананың сипаттамасын кері қайтарады, егер
DLL есте сақтаушыға жүктелінген болса, онда бұл жүктелінген
кітапхананың сипаттамасы- қайта жүктелмейді. DLL-ді пайдаланудың тағы
бір тиімділіг; DLL—дің бірнеше бағдарламалар қолданатынына қарамастан,
ол есте сақтауға бірақ рет ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz