Delphi ортасында бағдарламалау ( әдістемелік құрал )

МАЗМҰНЫ

КІРІСПЕ 3

1 DELPHI ОРТАСЫМЕН ТАНЫСУ 4
1.1 Негізгі ұғымдар. Бағдарлама құру кезінде шешілетін тапсырмалар 4
Зертханалық жұмыс № 1 «Delphi интерфейсінің элементтері» 11
Зертханалық жұмыс № 2 «Негізгі пішіннің жобасы мен модулінің бағдарламалық коды» 19
Зертханалық жұмыс № 3 ««Тест» қосымшасын құру» 25

2 OBJECT PASCAL ТІЛІНДЕГІ ОБЪЕКТІЛІ . БАҒЫТТАЛҒАН БАҒДАРЛАМАЛАУ 31
2.1 Класс және объект туралы түсінік 32
2.2 Инкапсуляция, туындау және полиморфизм 33
2.3 Кластың синтаксисі 34
2.4 Кластың өрістері 35
2.5 Кластың әдістері 36
2.6 Кластың қасиеттері 41
2.7 Кластың құрылымы. Кластың элементтерінің көріну аймағы 45
2.8 Кластарға операциялар қолдану. IS және AS кілттік сөздері 46
2.9 Оқиға және меншіктеу 47
Зертханалық жұмыс №4 «Полиморфизм және көрнекілік әдістер» 52
Зертханалық жұмыс №5 "Қасиеттер мен әдістер" 56
Зертханалық жұмыс №6 "Оқиғалар" 58

3 ТЕРЕЗЕЛІК ҚОСЫМШАЛАРДЫ ҚҰРУ 63
3.1 Label, Edit, Memo мәтіндік құрауыштары. Button батырмасы 63
Зертханалық жұмыс №7 "Қарапайым Windows.қосымшасын құру" 70
3.2 Пернетақта арқылы берілген хабарламаны өңдеу 71
3.3 Тышқан арқылы берілген хабарламаны өңдеу 73
Зертханалық жұмыс №8 “TForm объектісі” 75
3.4 Басқару элементтерінің тасуын қамтамасыз ететін сипаттамалар (Drag & Drop тетігі) 76
Зертханалық жұмыс №9 "Экрандық объектілерді сүйреу" 80
3.5 Диалог терезелері. Dialogs парағындағы Delphi құрауыштары (Open Dialog, Save Dialog, Font Dialog және т.б.) 82
Тәжірибелік жұмыс №10 «Мәтіндік редактор» 93
3.6 Delphi . дің кескінді құруға тағайындалған кластары мен құрауыштары. Timer . таймер құрауышы. 98
Зертханалық жұмыс №10 «Бейнелерді құру» 108

ҚОРЫТЫНДЫ 113

ҚОСЫМША А 114
ҚОСЫМША Б 118
ӘДЕБИЕТТЕР ТІЗІМІ 119
МАЗМҰНЫ 120
КІРІСПЕ
Нақты әдістемелік құрал - дербес компьютерлер үшін Delphi бағдарламалау ортасында қазіргі Windows - қосымшаларын (бағдарламаларды) құруға арналған. Көмекші құрал қосымшаны құрудың негізгі әдістерін сипаттауға бағытталған, сонымен бірге орта интерфейсі, қосымшаны құрудың көрнекілік құралдары және қолданушының бағдарламалық кодын құрудан тұрады.
Әдістемелік құрал үш бөлімнен тұрады. Әдістемелік құралдағы материалдар: теориялық деректер; иллюстрациялар; көмекші құралда көрсетілген материалдар көптеген мысалдармен қатар бекітілген, ал олар өз кезегінде бағдарламалаудың жаңа тәжірибелік әдістерін меңгеруге және ұғуға мүмкіндік береді; әрбір пункттің соңында жаттығулар берілген, олардың бірінші бөлімі жаттығуларды орындауға әдістемелік нұсқаудан, ал екінші бөлімі өз бетімен орындауға арналған жеке тапсырмалардан тұрады, олар оқылған материалдарды толық меңгеру үшін қолданылады; өзін өзі тексеруге арналған бақылау сұрақтары.
Бірінші бөлім «Delphi ортасымен танысу» Delphi ортасында құрылған бағдарламаны толық меңгеру үшін қажет білімді береді: негізгі ұғымдар – класс, объект, құрауыш; бағдарламаның ішкі құрылымы; жобаның құрылымдық элементтерінің өзара байланысы; бағдарламаның құрылуы барысында шешілетін тапсырмалар.
Қазіргі уақытта объектілі – бағытталған бағдарламалар өте танымал болып барады. Артық айтпасақ Delphi ортасында құрылған бағдарламаның 99% пайызы осыларға байланысты ұғымдарға сүйенеді. Сондықтан объектілі – бағытталған бағдарламалаудың негізін, сырттай қарағанда қарапайым нәрселердің ішкі жұмысын түсінбей ары жылжу мүмкін емес. Әдістемелік құралдың екінші бөлімінде «Object Pascal тіліндегі объектілі бағытталған бағдарламалау» объектілі – бағытталған бағдарламалаудың негізгі қағидалары, негізінде класс және объект ұғымы жатқан Object Pascal объектілі моделінің теориялық негізі қарастырылады.
Әдістемелік құралдың үшінші бөлімінде терезелік қосымшаларды құрудың технологиясы қарастырылады – Windows жанұясының операциялық жүйесінде қолданылатын қосымшаның негізгі түрі.
Көмекші құрал келесі мамандықтың студенттеріне арналған: 010240 «Қолданбалы математика», 510230 «Қолданбалы математика және информатика», 0913 «Ақпараттық жүйе (аймақтық және салалық қолдану)», 010540 «Информатика».
Оқу құралы бағдарламалаудың қазіргі технологиясымен танысамын, объектілі бағытталған технологияның негізінде өздерінің меншік бағдарламасын құрамын деген студенттер, оқытушылар, мектеп мұғалімдері және қолданушылардың кең ортасында қолданылуы мүмкін. Turbo/Borland Pascal тілінде бағдарламалаудың жақсы білімі керек деп болжаймыз.
ӘДЕБИЕТТЕР ТІЗІМІ

Негізгі әдебиеттер тізімі

1. Кандзюба С.П. Delphi 6\7. Базы данных и приложения. Лекции и упражнения. Спб.: ООО «ДиаСофтЮП», 2002. –576с.
2. Архангельский А.Я. Object Pascal в Delphi. -М., 2002г.
3. Гофман В.Э., Хомоненко А.Д. Delphi 5. –СПб.: БХВ – Санкт-Петербург, 1999. – 800 с.:ил.
4. Дарахвелидзе П.Г., Марков Е.П., Котенок О.А. Программирование в Delphi 5. –СПб.: БХВ-Питербург, 2001.
5. Епанешников А.М., Епанешников В.А. Delphi 5. Язык Object Pascal. –М: «Диалог –МИФИ» 2000
6. Епанешников А.М., Епанешников В.А. Программирование в среде Delphi: Часть 3. Проектирование программ. –М: «Диалог –МИФИ» 1998
7. Культин Н. Delphi 6. Программирование на языке Object Pascal.


Қосымша әдебиеттер тізімі

1. Дарахвелидзе П.Г., Марков Е.П. Delphi-среда визуального программирования. Спб.: BHV - Санкт-Петербург, 1996г.
2. Архангельский А.Я. Приемы программирования в Delphi. –М.: ООО «Бином-Пресс», 2003 г. –784 с.
3. Джон Матчо, Дэвид Р. Фолкнер. Delphi на примерах. –М.: БИНОМ, 1995г.
4. Орлик С.В. Секреты на примерах: –М.: Восточная книжная компания, 1996г.
5. Конопка Рэй Создание оригинальных компонент в среде Delphi. Киев: DiaSoft Ltd, 1996г. -512с.
8. Епанешников А.М., Епанешников В.А. Программирование в среде Delphi: Часть 4. Работа с базами данных. Организация справочной системы. –М: «Диалог –МИФИ» 1998
6. Пономарев В.А. COM и ActiveX в Delphi. –СПб.: БХВ-Питербург, 2001.
7. Елманов Н.З., Трепалин С.В. Delphi 4. Технология COM, OLE, ActiveX, Automation, MIDAS, Microsoft Transaction Server. –М.: Диалог-МИФИ, 1999 –320с.
8. Федоров А., Елманов Н. ADO в Delphi. Пер. с англ. –СПб.: БХВ-Питербург, 2002.
        
        МАЗМҰНЫ
КІРІСПЕ 3
1 DELPHI ОРТАСЫМЕН ТАНЫСУ 4
1.1 Негізгі ұғымдар. Бағдарлама құру кезінде шешілетін ... ... ... № 1 «Delphi ... ... 11
Зертханалық жұмыс № 2 «Негізгі пішіннің жобасы мен модулінің бағдарламалық
коды» 19
Зертханалық жұмыс № 3 ... ... ... 25
2 OBJECT PASCAL ... ... – БАҒЫТТАЛҒАН БАҒДАРЛАМАЛАУ 31
2.1 Класс және объект туралы түсінік ... ... ... және ... ... Кластың синтаксисі 34
2.4 Кластың өрістері 35
2.5 ... ... ... ... ... 41
2.7 Кластың құрылымы. Кластың элементтерінің көріну аймағы ... ... ... ... IS және AS ... ... ... Оқиға және меншіктеу 47
Зертханалық жұмыс №4 «Полиморфизм және көрнекілік әдістер» 52
Зертханалық ... №5 ... мен ... ... ... №6 "Оқиғалар" 58
3 ТЕРЕЗЕЛІК ҚОСЫМШАЛАРДЫ ҚҰРУ 63
3.1 Label, Edit, Memo мәтіндік құрауыштары. Button ... ... ... №7 ... Windows-қосымшасын құру" 70
3.2 Пернетақта арқылы берілген ... ... ... ... арқылы берілген хабарламаны өңдеу 73
Зертханалық жұмыс №8 “TForm объектісі” ... ... ... тасуын қамтамасыз ететін сипаттамалар (Drag &
Drop тетігі) ... ... №9 ... ... ... ... Диалог терезелері. Dialogs парағындағы Delphi құрауыштары ... Save Dialog, Font Dialog және т.б.) ... ... №10 ... ... 93
3.6 Delphi - дің кескінді құруға тағайындалған кластары мен құрауыштары.
Timer – таймер құрауышы. ... ... №10 ... құру» 108
ҚОРЫТЫНДЫ 113
ҚОСЫМША А 114
ҚОСЫМША Б ... ... ... 120
ҚАЗАҚСТАН РЕСПУБЛИКАСЫНЫҢ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТІРЛІГІ
DELPHI ОРТАСЫНДА БАҒДАРЛАМАЛАУ
Әдістемелік құрал
КІРІСПЕ
Нақты әдістемелік ... - ... ... үшін ... ортасында қазіргі Windows - қосымшаларын (бағдарламаларды)
құруға арналған. Көмекші құрал қосымшаны ... ... ... ... ... бірге орта интерфейсі, қосымшаны ... ... және ... ... ... ... тұрады.
Әдістемелік құрал үш бөлімнен тұрады. Әдістемелік ... ... ... ... ... құралда
көрсетілген материалдар көптеген мысалдармен қатар бекітілген, ал олар ... ... жаңа ... ... меңгеруге және ұғуға
мүмкіндік береді; әрбір ... ... ... берілген, олардың
бірінші бөлімі жаттығуларды орындауға әдістемелік нұсқаудан, ал ... өз ... ... ... жеке ... ... ... материалдарды толық меңгеру үшін қолданылады; өзін өзі тексеруге
арналған бақылау сұрақтары.
Бірінші бөлім «Delphi ... ... Delphi ... ... ... ... үшін қажет білімді береді: негізгі ұғымдар –
класс, ... ... ... ішкі ... ... ... өзара байланысы; бағдарламаның құрылуы барысында ... ... ...... ... өте ... барады. Артық айтпасақ Delphi ортасында құрылған бағдарламаның 99%
пайызы ... ... ... ... ... ...
бағытталған бағдарламалаудың негізін, сырттай ... ... ішкі ... түсінбей ары жылжу мүмкін емес. Әдістемелік
құралдың екінші ... «Object Pascal ... ... ... объектілі – бағытталған бағдарламалаудың негізгі қағидалары,
негізінде класс және ... ... ... Object Pascal ... ... ... қарастырылады.
Әдістемелік құралдың үшінші бөлімінде терезелік қосымшаларды құрудың
технологиясы қарастырылады – Windows ... ... ... қосымшаның негізгі түрі.
Көмекші құрал келесі ... ... ... ... ... 510230 ... ... және информатика»,
0913 «Ақпараттық жүйе (аймақтық және салалық ... ... ... ... ... технологиясымен танысамын,
объектілі бағытталған технологияның ... ... ... ... ... ... оқытушылар, мектеп мұғалімдері және
қолданушылардың кең ортасында қолданылуы мүмкін. Turbo/Borland ... ... ... ... ... деп ... DELPHI ... ТАНЫСУ
1.1 Негізгі ұғымдар. Бағдарлама құру кезінде шешілетін тапсырмалар
Delphi – Windows операциялық жүйесінде жұмыс ... ... құру ... Delphi - дегі ... ... көркемдік жобалау
технологиясының негізінде құрылады, ал олар өз ... ... ... ... ... сүйенеді (2 – ші бөлімді қараңыздар).
Delphi – дегі ... Object Pascal ... ... ол Turbo ... ... мен ... болып табылады. Turbo Pascal бағдарламалау
тілі мен ол ... ... ... құру ... кезінде
бағдарламалық өнімді құру құралы, соның ішінде бағдарламалауды оқып –
үйренетін ... ... ... ... ... Бұл танымалдық тілдің
қарапайымдылығы, жоғары сапалы ... және ... құру ... ... ... технологиялар бір орында тұрмай ары қарай
дамиды, сондықтан Borland фирмасы (1998 жылдың сәуір айынан бастап ... тағы бір ... ... Turbo Pascal ... ... ... тілі ... ол объектілі – бағытталған бағдарламалау концепциясына
сүйенеді.
Delphi және Object Pascal көп ... ... ... ... ... бүгінгі таңда олар қазіргі компьютерлік ... ... ... Жеке ... ... оны былай айтуға болады, Delphi
– дің көмегімен ... ... ...... ... ... ... мен Internet – те жұмыс істейтін бағдарлама құруға
болады.
Delphi бағдарлама құратын және жаңа ... ... құру ... ... ... ... ... бағдарламасы – бұл өзара байланысқан бірнеше файлдар. Кез – келген
бағдарлама жоба файлы (мұндай файл .dpr ... ... және ... бірнеше модульден тұрады (.pas кеңейткіші бар файлдар). Жоба файлы
бағдарламаның жинақтаушы бөлігі болып табылады, ол өте ... емес ... ... ... ... ... қалыптасады.
Класс – берілгендер мен оларға әрекет жасайтын арнайы тип. Ол өріс,
әдіс және ... ... ... ... ... ... табылады.
Объект – белгілі тапсырманы орындауға арналған, екілік бағдарламалық
кодтың ... ... ... ... ... ... ... болып табылады, бірақ керісінше емес.
Құрауыш – Delphi – дің стандартты ... Delphi ... ... іске ... ... Құрауыш болып меню, ... ... ... қаріпті таңдау, файлды сақтау), енгізу
терезесі және редактірлеу ... және т.б. ... ... ... және ... тұрады. Қолданушының құрауыштармен жұмысы, ... ... ... ... ... және ... ... олардың қасиеттері мен мазмұнына ... ... ... ... ... ... Delphi ... қолданушымен жылдам
қарым – қатынас жасау үшін қолданылады.
Құрауыштар қасиеті – ... ... ... ... өзгергенде
автоматты түрде оның атрибутын өзгертетін құрауыштың өрісі. Құрауыштың
функциясын ... ... ... ...... ... ... операциялық жүйемен
әрекеттесуінің нәтижесінде пайда болады. Әрбір құрауыш ... ... ... ... ... ... тұрады, олардың әрқайсысы
құрауыштың белгілі оқиғаға ықпалын анықтайды (пернені басу немесе ... ... деп – ... ... ... ... ... қосымшаның код бөлімін айтамыз.
Құрауыш пішінге немесе басқа құрауышқа тиісті болуы мүмкін.
Пішін деп - Windows ... ... ие және ... ... ... ... орналастыруға негіз
болатын көрнекілік құрауышты айтамыз.
Қосымшаның пішіні қолданушылық интерфейстің негізі ... ... ... ... ... ... ... ақпарат екі типті файлда сақталады: - .dfm және - .pas,
файлдың бірінші типі ... ......... кескінін және
қасиеттерін сақтайды, екінші тип (пішіннің модульі ) сіздің ... іске ... ... ... және ... мен оның құрауыштары
үшін оқиғаларды өңдеуді қарастырады. Екі файл да автоматты түрде Delphi ... ... ... пішінге өзінің модульі сәйкес келеді.
Бағдарламаның сыртқы құрылымы
Delphi - дің ... ... ... ... ... құрылымынан өзгешелеу болады, ол өз ... ... ... ерекшеліктерін шартты түрде ... ... екі ... ... деп ... болады: интерфейс ... ... ол ... ... ... және ... ... бірге тікелей тапсырманы шешуге ... ... ... ... ақпараттың түрленуі және т.б.). Бағдарлама
өз жұмысында операциялық жүйе, әртүрлі ... ... ... базасы,
басқа бағдарлама және т.б. ... ... ... ... сыртқы құрауыштармен әрекеттесу құрылымын сурет 1.1 көрсетілгендей
түрде ... ... бұл ... ... оның ... ... бағытқа жіберу асырылады, - пішін, ...... ... ... және т.б. ... ... ... алынған интерфейс
барлық бағдарламаның құрылымын анықтайды.
Объектілер бағдарламада жеткілікті ... ... ... ... ... жіберу, сонымен бірге бағдарлама мен операциялық
жүйе, ... мен ... ... т.б. ... ... беру ... жүйесі қолданылады.
Сурет 1.1 Бағдарламаның сыртқы құрылғылармен әрекеттесуі
Мұндай бағдарламаның жұмысы да өз ... ... ол ... ... келесі хабарламаны күту режимінде тұрады. Хабарлама пайда
болғанда бағдарлама оған талдау жасайды, қандай әрекет жасау ... ... одан ... сол әрекетті орындап, ... ... ... ... ... болғаннан кейін бағдарлама шарт бойынша әртүрлі
әрекет жасайды, барлық орындалатын операторлар ... ... ... олар ... ... ... ретінде бекітіледі
(хабарламаны және оқиғаны өңдеу әдістерін қоса алады), немесе ... ... ... ... ... ... жүйелер және оларды
баптау, олар белгілі командаларды күтеді, содан ... ... ... (TApplication класының) болып бағдарламаның өзі саналады.
Шынында бұл объектіні программист өзі ... ол Delphi ... ... ... ... ... құру кезінде оның әдістері мен
қасиеттерін қолдануға болады.
Объектілердің ... ... ... ... ... ... жеке
объектілердің жиынтығы ретінде қарастыруға болады. Бұл объектілерді ортақ
қасиеттері бар кластарға біріктіруге болады. ... ... ... ... ... ... оны түгелдей көру үшін Browser бағдарлама
элементтерін көру терезесінің ... ... ... ... ... ... үшін қолданылатын тек ... ... ... (сурет 1.2).
Жобада қолданылатын негізгі объект болып қосымша, пішін және құрауыш
табылады.
Қосымша келіп түскен хабарламаны өңдеу циклін ... ... ... ... көрсетеді.
Пішін интерфейстік элементті көрсетеді, оның арқасында қосымшалар мен
сыртқы құрылғылар ... ... ... ... жүреді. Пішін қосымшада
орналасады, ал қосымша бір немесе бірнеше пішіннен тұруы мүмкін.
Сурет 1.2 Жобаның құрылымдық құрауыштарының классификациясы
Құрауыштар пішінге ... және ... алу, ... ... үшін ... орындауға қатысты объектілерді сипаттайды.
Олардың классификациясы қиындау, сондықтан жиі қолданылатын ... ... ... ... кез ... ... тұра ... түрде жоғарыда көрсетілген құрауыштардың бәрі TComponent
(Құрауыш) класына, объект ... ... ... және көп ... ... ... түрде бұнда тек файлдармен жұмыс істеу, графикалық
әдістер, ... ... мен ... және ... ... ... ғана
кірмейді. Қосымша меншік TApplication (Қосымша) класын қалыптастырады, ол
тікелей TComponent класының ұрпағы ... ... ... ... ... өзін қоса алғанда айтарлықтай
қиынырақ құрылымды жасайды. Ең алдымен бұл элементтерді екі ... ... TControl ... ... ... басқару элементтері.
Басқару элементтері (TControl класының ұрпақтары ... ...... ...... жүзеге асыратын экранда
бейнеленетін құрауыштар (көрнекілік құрауыштар) Бағдарламада
қолданушы шарт бойынша оларды ... ... ... ... ... оларға тышқанның көмегімен әсер ету және т.б.).
Олар экранда қосымша орындалғанда ... ... ... ... ... ... ... құрауыштар). Олар жүйелік ресурстарға қатынауға жауап ... ... ... ... меню, әртүрлі қиын объектілер,
стандартты диалог терезелеріне ұқсас және т.б. Құру ... емес ... ... ... бейнеленеді, ал
қосымшаны орындағанда ереже бойынша көрінбейді.
Басқару элементтерін өз ... екі ... ... ... ... ... арасында принциптік айырмашылық бар:
- Терезелік басқару элементтерінің класы TWinControl (Терезелік
басқару элементі).
Терезелік ... ... ( TForm, TButton, TEdit, TMemo, ... және т.б. кластардың құрауыштары) терезелік функциялардан
(немесе процедуралар) тұрады, олардың арқасында ол ... ... ... етеді және экранда активтенеді.
- Графикалық басқару элементтерінің ... ... ... ... басқару элементі ( TImage класының құрауышы – ...... ... ... ... TShape – ... ... – белгінің тегі) мұндай функцияны басқармайды,
тек экранға ақпаратты ғана шығарады, олар ... ... ... басқа белгілі қимылға ықпалын тигізе алмайды. ... ... ... ... ... жатады.
Жобаның құрылымдық элементтерінің әрекеттесуі
Жанұя деп өзінің ұрпақтарымен қоса алғандағы класты айтамыз.
TComponent жанұясының ... ... Owner ... бар:
TComponent (Иесі), берілген объекті орналасқан объектіге нұсқағыш.
Негізгі объект деп - ... ... ... ... ... ... деп – орналасатын объектіні айтамыз.
property ComponentCount: Integer – тек оқу ... ... ... ... ... береді (ағымды құрауыштың).
property Components[Index: Integer]: TComponent – тек оқу үшін.
Ағымды құрауыштың ... ... ... ... ... нөлден басталады.
Кез – келген пішін TApplication класының қосымшасына орналастрылады,
қосымша ол үшін ... ... ... ... ... құрауыштарын пішінге екі түрлі ... ... ... ... TWinControl жанұясының қосымша топталған бір құрауышына (TGroupBox –
тақырыбы бар панель, TPanel – панель, TTabControl – бетбелгі және
т.б.).
TControl ... ... ... Parent ... бар: ... онда ... құрауышқа нұсқағыш беріледі.
Үлкен құрауыш – тікелей берілген құрауыш орналастырылған құрауыштың
өзі.
Кіші құрауыш – орналасатын құрауыш.
Бейнеленбейтін ... Parent ... ... ... ... жоқ (Parent = nil).
Мысал 1.1. Бұл мысал ... ... ... ... ... тұрады: радиотоп, екі ... және ... іске ... ... OnCreate оқиғасы туындағанда екі
радиобатырма RadioGroup1 құрауышына жоғарғы сол ... ... ... ... Button1 батырмасына шерткенде екі
радиобатырма пішінге тасымалданады.
procedure TForm1.FormCreate(Sender: TObject);
begin
RadioGroup1.Caption := 'Радиогруппа';
RadioButton1.Parent := RadioGroup1;
RadioButton1.Caption := 'Первая радиокнопка';
RadioButton1.Top := ... := ... := ... := RadioGroup1;
RadioButton2.Caption := 'Вторая радиокнопка';
RadioButton2.Top := 35;
RadioButton2.Left := 10;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
RadioButton1.Parent := Form1;
RadioButton2.Parent := Form1;
end;
property ControlCount: Integer – тек оқу ... ... ... құрауыштарының санын береді (тек терезелік құрауыштарда ғана болады).
property Controls[Index: ... TControl – тек оқу ... ... ... ... кіші ... тізімін береді (тек
терезелік құрауыштарда ғана болады).
«Негізгі » - ... » ... ...... ... ... құрауыштарға қолдануға болады.
«Үлкен» - «Кіші» қарым – қатынасы тек қана бейнеленген құрауыштарға
ғана ... 1.2. Бір ... ... жобаны қарастырамыз. Тікелей пішінге
төмендегілерді орналастырамыз:
- Негізгі меню - MainMenu.
- Таймер - ... GroupBox – ... бар ... Button - ... тақырыбы бар панельге орналастырамыз:
- Енгізу жолы - Edit.
- Белгі - Label.
|Құрауыш |ComponentC|Components |Owner ... |Parent |
| |ount | | |ount | | ... |6 ... ... ... |nil |
| | |Timer1 | | |Button1 | |
| | ... | | | | |
| | |Button1 | | | | |
| | |Edit1 | | | | |
| | |Label1 | | | | ... |0 |Бос |Form1 |2 |Label1 |Form1 |
| | | | | |Edit1 | ... |0 |Бос |Form1 |0 |Бос |Form1 ... |0 |Бос |Form1 |- |- ... ... |0 |Бос |Form1 |0 |Бос ... ... |0 |Бос |Form1 |- |- |- ... |0 |Бос |Form1 |- |- |- ... құрарда шешілетін тапсырмалар
Негізгі болып келесілер табылады:
1) Жобаның түрін анықтау
a) бір құжатты ... көп ... ... ... ... таңдау
3) Құрауыштарды орналастыру
4) Менюді құру
5) Хабарламаны өңдеу
хабарламаны өңдеудің келесі кезеңдерін ерекшелеуге болады:
a) хабарламаның типін қалыптастыру;
b) инициализация сообщения;
c) хабарламаны ... және ... ... оқиғаны өңдеу;
e) хабарламаны өңдеу циклін қалыптастыру.
6) Деректер базасын қалыптастыру.
7) Тапсырманы бағдарламалау.
8) Қарым – қатынас, ... ... ... ... ... өңдеуді қамтамасыз ету.
10) Анықтама жүйесін құру.
Зертханалық жұмыс № 1 «Delphi интерфейсінің элементтері»
Бірінші тәжірибелік жұмыс Delphi ... мен осы тіл ... ... ... басталады. Сіздер жобамен Delphi ортасының қосымшасы
ретінде танысасыздар, ал пішінді құрауыштарынан бағдарлама ... ... ... ... Нақты мысалдарда Delphi ортасында
бағдарламалаудың концепциясы тереңдетіліп оқылады, олар: жобаны анықтау,
жаңа пішінді ... ... ... қосу, осы құрауыштардың қасиеттерін
анықтау және бағдарламаның орындалуы.
Жұмыстың мақсаты: Delphi ... және оның ... ... ... ... ... құру және оны сақтауды үйрену.
Delphi — Windows жүйесінде жұмыс істеуге арналған ... ... Оның ... яғни Delphi ... ... ... Windows жүйесіне арналған.
Delphi ортасында бағдарламалау объектілі-бағытталған технологияға
сүйенеді. Бағдарламалаудың базалық тілі ретінде Object Pascal тілі ... ... ... құру жұмысының көп бөлігі құрауыштарды
таңдау, оларды тышқанның көмегімен экранға ... және ... ... ... кетеді. Құрауыштар — «құрылысшы
блоктар» деп саналады, олардан Delphi ортасының қосымшалары ... ... ... көрінетін болуы мүмкін, олар қолданбалы интерфейстің
бөліктері (айналдыру ... ... ... меню т.б.), ... ... ... мүмкін — таймер, деректер базасы.
Тапсырма 1. Delphi - ді іске ... – ді іске қосу үшін 3 ... ... орындаңыздар:
➢ 1. Егер сіз Windows ортасында отырсаңыз , онда Жұмыс стөліндегі Delphi
пиктограммасына тышқанның көмегімен екі рет ... ... 2. ... ... ... Пуск – ... – Borland Delphi 6 ... ... 3. Windows ... ... Program Files\Borland\Delphi 6\Bin)
delphi32.exe файлын тауып алып, соны орындаңыз.
Тапсырма 2. Delphi интерфейсінің элементтерін оқып – ... ... ... (IDE – ... ... ... интегралдық құрылымына қосымшаларды құрайтын және
жобаны басқаратын ... ... ... ...... панельі
Жоба диспетчері (Project Manager)
Код редакторы (Code Editor)
Құрауыштар ... ... ... ... инспекторы (Object Inspector)
Объект бұтақтары (Object Tree View)
Меню конструкторы (Menu Designer)
Зерттеуші (Browser)
Delphi 6 ортасын іске ... ... ... ... 1.3 – ... ... табады.
Сурет 1.3 Delphi 6 ортасының терезелері мен панельдері
Бағдарламалау ортасының негізгі терезесін қарастырайық. Ол ... — Delphi 6 – Project 1, яғни Delphi ... ... ... нұсқау береді және оған Project 1 деген ат тағайындайды. Төмен қарай
негізгі меню, 16 батырмадан тұратын құрал-саймандар панельі және ... ... меню ... ортасының командаларына қатынасты
қамтамасыз етеді, ... көбі Windows ... және оның ... ал ... Delphi – ді оқып – үйренгенде кең түрде талқыланады.
Құрал – саймандар панелі ... ... жиі ... ... орындауға мүмкіндік береді.
Құрал – саймандар панельінің батырмалары.
Кейбір батырмалар мен терминдердің не үшін ... ... жан – ... ... ... батырмалардың біреуіне біраз уақыт тышқанның курсорын апарып қоя
тұрсақ , онда көмек ... ... жолы ... ... онда ... ... ... қандай әрекет орындалатыны жазылады.
Құрауыштар палитрасы — пішінге ... ... ... ... ... Delphi ... ... құруға осы құрауыштар
қолданылады. Олардың әрқайсысы үшін ... ... ... ... Windows ... ... белгіленген. Құрауыштар ортақ
қасиеттері бар топтарға біріктірілген (Standard, Additional және ... ... ... сәйкес бетбелгіге тышқанның көмегімен шерткенде
шақырылады.
Құрауыштар палитрасының кейбір парақтарын қарастырайық:
Standard –Windows – де қосымшасы бар ... ... ... ... ... ... ... (батырмалар, тізімдер және
т.б.).
Additional – қосымша ... ... ... мен
диаграммаларды салуға арналған құрауыштар, графикалық көріністерді бейнелеу
және т.б.).
Data Access – деректер базасына қатынауды ... ... ... ... тұрады.
Data Controls – қолданушымен қарым – ... ... ... тұрады және деректер ... үшін ... ... ... – стандартты қарым - қатынас құратын ... ... ... ... ... және ... – операциялық жүйемен қарым – қатынасты орнататын құрал.
VBX –Visual Basic стиліндегі құрауыш.
Бетбелгіде жазылған сөздерді ... және ... ... ... ... ... ... кеңесін қолдану арқылы әрбір
құрауышты қараңыздар.
Бұл құрауыштардың көбі ... алда ... ... ... - ... кіретін пішіндер мен модульдердің аттарын
көруге, жобаға пішіндер мен модульдерді қосуға, жобадан ... және ... ... ... терезесінде келесі бағандар бар:
Unit – жоба модульдері.
Form – жоба ...... ...... ... ... – файлды жобаға қосу.
Remove – файлды жобадан ... unit ... ... form – ... көру.
Options – жоба параметрлері.
Код редакторы бағдарлама кодынан тұрады, олар бағдарлама кодын құруға
және ... ... ... ... ... ... File at Cursor – ... тышқанның көрсеткіші орналасқан файлды
ашады
Browse Symbol at Cursor – терезедегі кез – келген ... ... ... ... мүмкіндік береді
Toggle Breakpoint – тоқтату нүктесін тағайындайды
Run to Cursor – ... ... ... ... ......... өзгерту және көру үшін қарым –
қатынас терезесін ашады
Debug – Add Watch to Cursor – ... ... ... көру үшін ... Only – ... ... редакциялауға тиым салады
Объект инспекторы қосымша құрамындағы ... ... ... Оның ... ... ... ... және
олардың стандартты оқиғаларға әрекеті тағайындалады (пернеге басу, екі рет
шерту, ... және ... ... Delphi 6 ... ... ... ... болып
табылады. Бұл терезеде пішінде, берілгендер модульінде немесе фреймде
орналасқан құрауыштар бейнеленеді және олардың ... ... ... ... ... ...... қарым - қатынасы.
Delphi 6 ортасының құрылымын баптаңыздар.
Tools – Environment Options меню ... ... ... ...... ... қойыңыздар, егер олар Preferences
қалташасында тұрмаса:
Autosave options тобында ... ... files ( Run ... ... немесе Delphi – ден шыққанда
кодтар редакторында өзгертілген ... ... Desktop ( Егер сіз Delphi – ден ... ... жобаны жапсаңыз
сіздің жұмыс стөліңіздің орналасуын сақтайды).
Compiling and running тобында(компиляторлау және іске қосу):
Show Compiler Progress (Сіздің жобаңыздың компиляциясы ... ... ... ... On Run (Сіз ... іске ... Delphi – ді ... сіз қосымшаңызды жапсаңыз Delphi орнына қайта келеді);
Hide Designers On Run (Қосымша іске қосылып ... ... Object ... Form window типіндегі жобалау терезелерін тығып ... ... ... пайда болады.).
OK батырмасына басыңыздар.
Тапсырма 3. Delphi – дің негізгі терезелерінің қасиеттерін оқып –
үйрену.
Delphi – де он ... ... бар. Delphi іске ... ... ... ... ... негізгі пішіннің терезесі, Объект
бұтақтарының терезесі және Объект Инспекторы терезесі. Төртінші ... ... ... ... — ол ашық ... бірақ пішін терезесінің
артына тығылған, оны көру үшін құрал – ... ... ... ... ... керек.
Пішін терезесі — Құрауыштар палитрасындағы құрауыштардан бағдарлама
жинақталатын негізгі орын. Пішіннің өзі ... ... ... ... ... Run ... ... және осы бағдарламаны
орындаңыз.
Пішіннің бағдарламасы откомпилируется, экрандағы көмекші терезелер
жойылады, пішіннің ... торы ... және ол ... ... ... меңгереді.
Осы терезенің қасиетін зерттеңіз. Оның өлшемін ... ... ... жоғарғы сол жақтағы батырманы активтеңіз, ... ... ... үлкейтіңіз.
Сіз байқағандай, пішін терезесі «жанданды».
Alt+F4 батырмаларының комбинациясы Delphi ортасын алғашқы ... ... ... ... ... ... ... шерткенде активтенетін қасиеттерден тұрады. Активтенген құрауштың
аты терезенің тақырыбынан кейін орналасады (сурет 1.3. ... ... өзі). ... екі ... ... ... ... парағы)
және Events (оқиғалар парағы).
Құрауыштардың стандартты палитрасындағы Button батырмасына басып, содан
кейін пішіннің кез – ... ... ... ... бейнесі пайда болады (сурет 1.4).
Бұндай іс-қимыл пішінге құрауышты қосу деп аталады.
➢ Қойылған құрауышқа шертіңіз.
Оның ... ... бар ... ... ... ... Бұл
дегеніміз құрауыш активтенді дегенді білдіреді және Объект ... аты ... ... Button1: TButton. Бұл ... Button ... ... ... T әрібі тип дегенді білдіреді.
Сурет 1.4 Пішінге құрауышты қосу
TButton типі ... ... ... және оның ... ... ... ретінде сипатталған, ... ... ... ... Объект Инспектірі терезесі деп аталады. Properties парағы
2 бағанаға бөлінген: қасиеттер аты бағанасы және ... мәні ... жақ ... ... ... ... ... оң жақта —
қасиеттердің нақты мәні ... ... кез – ... қасиеттің мәнін
өзгерте алады..
Тапсырма 4. «Программа "Тест"» жобасын құру.
➢ Form1 ... ... ... ... Caption ... ... ... деп
жазыңыз.
➢ MainMenu құрауышының көмегімен (сурет 1.5. ... ... ол ... ... палитрасында бірінші орын алады:
➢ соған шертіңіз, одан кейін пішінге шертіңіз;
➢ пайда болған MainMenu пиктограммасына екі рет шертіңіз.
Экранда ... ... ... ... ... тағы бір ... ... болады;
Объект Инспектіріндегі Caption жолына бірінші элемент меню Тест – ті
енгізіңіз , ол меню ... оң жақ ... ... орналасқан көк
тіктөртбұрышқа жазылады.
Enter батырмасын басу арқылы менюдің бірінші ... ... ... ... ... ... деп ... Enter – ді басыңыз.
➢ Аналогиялық түрде келесі командалар үшін Результат және ... ... ... ... ... ... топтарға бөлуге болады, ол
үшін Результат командысынан кейін , Caption ... ... ... ... ...... ... келесі элементін құрыңыздар — Помощь:
Меню Тест командасының оң ... ... ... ... ... жолына Помощь деп жазып, Enter – ді басыңыз;
Аналогиялық түрде келесі операцияларға Инструкция және О программе
командаларын жазыңыздар.
... ... ... ... ... ... пішінге Form 1.
MainMenu1 терезесінде құрылған менюді орналастырыңыз.
Сурет 1.5 ... ... ... ... ... ... ... үшін оған бағдарлама жазыңыздар:
- Выход командасына шертіңіз.
Кодтар ... ... ... - өшіп ... ... бар бағдарламаның коды пайда болады (Delphi ортасы осы оқиғаны
өңдеу үшін автоматты ... бос ... ... );
Тышқанның көрсеткіші тұрған позицияға пернетақтаның ... ... ... ... ... ... TObject);
begin
Close;
end;
➢ 5 – тапсырмада көрсетілген ереже бойынша жобаны сақтаңыздар.
➢ Run батырмасының көмегімен бағдарламаны орындаңыздар.
Біз «Программа ... ... ... ... ... Егер
жобаның жұмыс істеу қабілетін тексеретін болсақ, онда менюдің ... ... ... ... ... ... командасынан басқа командалары
орындалмайтынын көрдік. Менюдің ... ... ... ... тәжірибелік жұмыстарда қарастырамыз.
Тапсырма 5. Жобаны және ... ... ... ... «Мои документы» папкасында өзіңіздің меншік папкаңызды келесі түрде
құрыңыз: Топ_Фамилия_Delphi ... ... Оған ... ... ... ... Delphi – дің негізгі менюінде келесі командалар тізімін орындаңыз: ... Save Project As… ... ... ... Save Project As
батырмасына ... ... «Save Unit1 As» ... бар ... ... ... болады, ол
бағдарлама кодының файлын сақтауға арналған ... 1.6). ... «Тип ... ... көрсетілгендей .PAS кеңейткіші беріледі.
Сурет 1.6 Негізгі пішіннің модульінің файлын ... ... ... ... ... документы\…\Программа_Тест_.
➢ «Имя файла» өрісіне – MainForm ... ... және ... басыңыз.
Осыдан кейін жоба файлын сақтау үшін «Save Project1 As» ... ...... ... ... ... ... 1.7). Үнсіздікпен ол
файлға .DPR (Delphi PRoject) кеңейткіші беріледі.
➢ «Имя ... ... – Test ... енгізіңіз және Сохранить батырмасына
басыңыз.
Енді сіздің жобаңыз «Test» деп аталады , ал оның ... ... ... жазудың мұндай тізбегі жоба файлы алдын – ала ... ... ... ... файл ... білдіреді.
➢ Жобаны жабыңыз.
Сурет 1.7 Жоба файлын ... ... ... Delphi ортасымен таныстыңыздар: негізгі терезенің
құрама бөліктерімен – ...... ... ... Delphi ... негізгі терезелерімен: пішіндер, Объект
Инспектірі және Код ... ... ... ... үйрендіңіздер,
меню командаларын енгізу, менюдің Выход командасын шерткенде орындалатын
оқиғаның бірінші өңдеуішін ... ... және оның ... ... ... ... үйрендіңіздер.
Зертханалық жұмыс № 2 «Негізгі пішіннің жобасы мен ... ... ... ... ... ... жобасы мен модульінің
бағдарламалық коды қарастырылады; Delphi ортасы пішінге құрауышты қосқан
кезде оның ... ... ... ... қосады, «оқиға» деген
түсінік кіргізіледі және оның оқиғаны өңдеу прцедурасының көмегімен ... ... 1. ... ... ... жобаны іске қосу және жоба
мен модульдің бағдарламалық кодын ... Delphi – ді іске ... ... ... командасын орындаңыз: File \ Open Project
➢ Ашылған терезенің ... ... (.DPR ... бар ... аты бар жобаны тауып алыңыздар, оған тышқанның сол жағымен бір
рет шертіп, ОК - ді ... ... ... Enter ... ... «Тест»» тақырыбымен пішін пайда болады.
➢ Жобаның бағдарламалық ... көру үшін ... ... Project\View
Source командасын орындаңыздар.
➢ Көңіл қойып жобаның бағдарламалық кодын қараңыздар ... ... 1.8. ... ... коды
Жобаның бағдарламалық коды бағдарламаның тақырыбынан, модульді қосу
бөлімінен, компилятор ... және ... ... денесінен
тұрады.
Бағдарламаның тақырыбы Program қызметші сөзінен тұрады, одан кейін
жобаның атымен сәйкес келетін бағдарламаның аты орналасады. Жобаның аты ... ... ... және ол Delphi ... ... файлдың атын
анықтайды.
Модульді қосу бөлімі Forms ... ... мен Mainform ... ... бағдарламалық коды Mainform.pas. файлында жазылады.
Компилятор директивасы {$R *.RES} ... ... ... ... ... (мысалы, қосымшаның пиктограммасын сипаттау)
файлдық ресурсты жүктеу үшін ... ... ... ... ... аты жоба ... атымен дәл келеді, бірақ кеңейткіші .res
болатындығын білдіреді.
Бағдарлама денесі begin сөзінен басталады және end ... Ол үш ... ... бірінші жол қосымшаны инициализациялау
үшін, ал екінші жол Form1 ... ... құру және оны ... ... ... ал соңғы үшінші жол - ... іске ... ... Mainform ... ... ... ... шығыңыздар (сурет 1.9).
Ол үшін құрал – саймандар панельінің View Unit ... ... ... ... Unit ... ... терезесі пайда болады. ( Бұл терезені
негізгі менюден ... ... ... арқылы немесе Ctrl+F12
пернелерінің комбинациясын басу арқылы шақыруға болады.)
➢ Тізімнен Mainform атын таңдап, OK батырмасына басыңыздар.
Модульдер Object Pascal ... ... ... ... ... (бөлімдердің тізбегі мен аттары). Жалпы
түрдегі модульдің құрылымы:
Unit < модульдің аты>;
interface

implementation

initialization

finalization

end.
Сурет 1.9 Модульдің бағдарламалық коды
Модульдің тақырыбы Unit ... ... ... ол ... алдыңызда
модульдің бағдарламалық коды тұр дегенді білдіреді, одан кейін модульдің
аты орналасқан. Модуль онымен ... ... ... ... ... үшін ... ... жағдайда модуль TEST.DPR жобасына
қосылған).
Модульдің бағдарламалық коды модульдің тақырыбы мен төрт ... ... ... ... ... және қорытынды бөлім.
Интерфейс бөлімі interfase сөзінен басталады. Бұл бөлімде негізгі
бағдарламаға ... ... ... қатынау мүмкіндігі бар модульдің
барлық ауқымды ... ... ... (типтер, тұрақтылар,
айнымалылар және бағыныңқы бағдарлама) Ол мыналардан тұрады:
а) модульді қосу ... uses ... ... Біз ... біздің модульімізге бірнеше жүйелі модульдер ... ... ... ... ... типтерді сипаттау бөлімі, type сөзінен басталады. Оның құрамында
Delphi ортасында құрылған форма типін сипаттау ... (TForm1 ... ... ... типтерінің тізімі мен қандай да бір ... ... ... тұрады. Біздің класс мыналардан ... ... меню ... N1, N2, .... N8 , ... ... ... «Тест» және «Помощь» элементтері, ал қалған алтауы ... ... ... ... ... ... «Выход»,
«О программе» және «Инструкция». Delphi құрауыштарды пішінге орналастырған
кезде автоматы түрде осы ... ... ... ... сипаттау Procedure N5Click(Sender: Tobject);
в) ауқымды айнымалыларды жариялау бөлімі var сөзінен басталады.
Жүзеге асыру ... ... ... ... Ол ... ... шерту, қарым – қатынас терезесінің батырмасына басу,
пернетақтадағы пернеге басу және т.б. ... ... ... тұрады. Сонымен бірге программистің меншік ... ... ... ... мүмкін, олар өз кезегінде оқиғаны өңдеу
процедурасынан шақырылады.
Нақ осы ... бұл ... біз бір ғана ... ... TForm1.N5Click(Sender: TObject);
begin
Close;
end;
Бұл процедура меню элементі «Выход» - қа тышқанмен шерту оқиғасын
өңдейді.
Компилятор директивасы {$R *.DFM}, ... ... ... басында
орналасады, ол компиляторға жүзеге асыру бөліміне модульдің атымен сәйкес
келетін .dfm ... бар ... ... ... ... ... ... қою туралы бұйрық береді.
Инициязациялау және қорытындылау бөлімдері міндетті емес.
Инициялизациялау бөлімі модульдің аяғында ... және ... Егер ол бар ... онда ол ... ... басталады немесе
begin ... end оператор жақсаларымен аяқталады. Бұл ... ... ... ... дейін орындалады және оның жұмыс істеуіне
дайындық ... ... ... ... ... ... ... аяқталуы кезінде орындалатын операторлардан тұрады.
➢ Тест орындалуы үшін қосымшаның ... ... ... ... қажетті оқиғаларды өңдейтін процедуларды атап өтіңдер.
Біз жасап отырған қосымша өзіміз қосқан менюі бар негізгі пішіннен
тұрады. «О ... меню ... ... біз ... ... тағы бір қосымша пішінді шақыруымыз керек. Дайын шаблонды біз New
Items қарым – ... ... ... ... ол үшін ...... New батырмасына басу керек.
Тапсырма 2. Aboutbox пішінінің шаблонының негізінде «О программе»
(сурет 1.10.) терезесін ... File ... ... New ... ... ... осы
пункттің ағымды менюінен Other... таңдаңыз, сонда New ... - ... ... ... ... Forms ... пішінін таңдаңыз.
Келесі элементтерден тұатын Aboutbox ... ... ... ... ... ол ... ... құрауыштар палитрасының Image
(кескін) батырмасының көмегімен қойылады;
- мәтіндік құрауыштар (TLabel);
- ОК батырмасы.
➢ Aboutbox пішінінің Объект Инспектірінің Caption қасиетіне О ... ... ... Image ... ... ... ... активтеңіз.
Суреттің маңайында қара квадраттары бар жақтау пайда болады.
➢ Жақтаудың қара кадраттарын тышқанмен ... ... Image ... ... графикалық объектінің шекарасына дейін өзгертіңіз.
➢ Image құрауышының Объект Инспектірінің Picture қасиетінің үш нүктесі
бар батырмасына шертіңіз.
Picture Editor ... ... ... Load ... Picture ... ... ... 256color каталогқа
өтіңіздер (C:\Program Files\Common ... ... ... ... ... ... (қалауларыңа қарай
басқасын таңдауға болады) және «Открыть» басыңыз.
➢ Picture Editor ... OK ... басу ... ... ... пішінінің дайындалып жатқан жақтауына орналастырыңыздар.
➢ Инспектор Объектісін Image ... ... және ... ... true ... ... ... толығымен орналасады.
Сурет 1.10 «О программе» пішінінің терезесі
Пішіндегі барлық мәтіндік құрауыштарды ( TLabel) жойыңыздар. Ол үшін
әрбір құрауышты тышқанмен ... ... ... және Delete ... Aboutbox пішініне Label құрауышын қосыңыз (Standart палитра құрауышынан
). Оған мәтінді кіргізесіздер.
➢ Label1 құрауышы үшін Объект ... AutoSize ... ... ... (бұл ... Label - дің ... ... ... ... алады). Alignment және Layout қасиеттеріне
taCenter, tlCenter параметрлерін орнатыңыздар, ол мәтінді ... ... ... ... WordWrap қасиетіне – ... ... ... ... етіледі).
➢ Caption қасиетіне Программа Тест © Copyrighte by Makeew S. ... (өз ... ... ... ... Label1 ... қажетті өлшемді беріңіз және оны
терезенің оң жақ жоғарғы бұрышына орналастырыңыз.
➢ Color қасиетіне ... ... ... Font қасиетінің үш нүктесі бар батырмасына басу арқылы Қаріп қарым –
қатынас терезесін ... ... ... ... және ... қаріпі бар мәтінді енгізу үшін тізбекпен ... ... және ... үшін өз ... ... Әрбір Label –
ге 256 символ орналастырылады.
... ОК ... ... Объект Инспектірінің осы батырмасының Caption қасиетін Продолжить деп
өзгертіңіздер.
➢ Осы ... «О ... ... ... мен ... белгілеңіздер.
Тапсырма 3. «О программе» пішінінің бағдарламалық модульін MainForm
негізгі пішінінің модульіне ... ... ... ... «Программа «Тест»» неізгі пішінінің терезесін
алыңыздар (терезенің бос жеріне тышқанмен шерту арқылы немесе 1 – ... ... ... ... қолдану арқылы).
➢ «Помощь» менюін ашыңыздар және «О ... ... ... ... меню ... ... ... өңделетін
процедурасы бар редактор терезесінің бағдарлама коды ашылады.
➢ Тышқанның көрсеткіші жанып - өшіп тұрған жерге мынаны жазыңыздар:
AboutBox.ShowModal;
Бұл команда ... ... ... ... ... «О ... ... шығарады.
➢ Құрылған модульді сақтаңыздар: құрал – ... ... Save ... ... ... ... терезесінің «Имя файла» өрісіне
about_x деп жазып, «Сохранить» батырмасына басыңыздар, ал жоба мен
қалған ... ... ... ... Toggle Form/Unit батырмасына тышқанмен шерту арқылы код редакторы
терезесінен MAINFORM.PAS ... ... ... ... шақырыңыздар
(пішіннің өзіне сәйкес бағдарламалық модульге ауыстырлып қосылуы және
керісінше). Бағдарламаның ... uses ... ... ... үтір ... about_x деп жазыңыздар.
➢ Бағдарламаны орындаңыздар. «Tест» бағдарламасының менюіндегі
«О программе» командасының ... ... ... ... зертханалық жұмыста біз қосымша қарым – қатынас терезелерін
құруды үйрендік, оқиғаларды өңдеу, модульдерді негізгі ... ... ... орналастыру ( мәтіндер, графикалық суреттер және
т.б.), сонымен бірге ... ... және жоба ... ... ... № 3 ««Тест» қосымшасын құру»
№3 – ші зертханалық жұмыста №1 – ші зертханалық ... ... ... ... ... аяқтаймыз; «Тестирование» және
«Результат» пішіндерін құру ... ... ... ... ... бағдарлама құрудың қарапайым әдістерін көрсетеміз.
Тапсырма 1. Жобаны іске қосу. «Тестирование» пішінін құру.
➢ Алдыңғы зертханалық жұмыста құрылған ... ... ... және оның жұмыс ... ... ... ... ... ... таңдап, жобалау режіміне қайтып
оралыңыздар.
Енді «Тестирование» пішінін құруға кірісеміз.
Біздің тест 3 – 4 ... ... ... бар 5 ... ... осы 5 ... ... сиятындай пішін керек. Бұл ... ... ... ... жазба кітапша түріндегі пішін қажет, әрбір парақ
парақтың нөмірі бар бетбелгіден тұрады. Delphi ... ... ... ... ... Бұл пішінді біздің жобамызға қосамыз.
➢ Құрал – ... ... New ... ... New ... Forms қалташасын таңдаңыз, одан кейін Tabbed pages ... (Tabbed Notebook Dialog – ... бар ... ... ОК ... басыңыздар.
➢ Пішінді оқып – үйреніңіздер. Ол бетбелгісі бар үш парақтан және ... ... ... Пішіннің әрбір парағы жұмыс істеп тұрған
бағдарламада сәйкес бетбелгіге тышқанмен шерткенде шақырылады. ... ... Cancel және Неlр ... ... ... құрауыштар тізімін ашыңыздар. Бұл құрауыштар тізімінде
әрбір құрауыш объект ретінде көрсетілген. ... ... ... PagesDlg пішіні, PageControl1 ... ... үш ... ... ... Panel1, Panel2 екі ... және
ОКBtn батырмасы.
➢ Пішінге тақырып және объектілерге қысқартылған ат ... – ды ... Caption ... ... ... Name ... — TestDlg және Enter – ді басыңыздар. ...... ... ... ... тақырыптан және TestDlg
аты бар объектіден тұрады, ол Инспектір Объектісінің ... Color ... ... түсін орнатыңыздар, мысалы сары.
➢ Жазба кітапшасының парақтар санын беске дейін ... ... ... ... ... және ... бетбелгілеріне Вопрос1,
Вопрос 2 және т. б. деп жазыңыздар. Ол үшін ... ... ... және Caption ... ... 1 және т.б. деп
жазыңыздар.
➢ Парақ қосу үшін парақтың ... ... оң жақ ... ... контекстік меню пайда болады, одан New Page – ... ... ... ... 5 ... бір жолға сиюы үшін, жазба
кітапшасының TabWidth (бетбелгінің ... ... ... Width ... мәні болып жазба кітапшасының кеңдігі
алынады.
Тапсырма 2. Графикалық ... бар ... ... ... көркемдеу.
Біздің жазба кітапшамыздың әрбір парағына сұрақ пен оның жауаптарын
орналастырайық. Бірінші парақтан бастайық. Сұрақтың мәтінін жақтаудың ... ... ... жазамыз. Ол үшін Panel және Label ... ... ... ... – ді таңдаңыздар және ... ... ... ... – ді ... ... ... жазықтығынан жақтаудағы панель түрінде мәтінді енгізетін
орын дайындаңыздар. Ол үшін бірінші параққа құрауыштар ... ... ... және оны ... ... ... жоғарғы
бөлігіне дейін созыңыздар (сурет 1.11). Align қасиетіне - alClient мәнін
беріңіздер.
➢ Объект Инспектірінің Color қасиетіне тышқанды екі рет ... ... ... ... және ... ... ... түсін
орнатыңыздар.
➢ Caption қасиетінен Panel3 деген жазуды жойыңыздар.
➢ Панельге ... ... ... ... Ол үшін Bevelinner (ішкі
фаска) қасиетіне Lowered (төмендетілген) мәнін ... ... ... ... ... ... тағайындаңыздар.
➢ Дайын панельге Label құрауышын қосыңыздар, оны панельдің ... ... және ... ... ... ... үшін Label
құрауышының Autosize қасиетіне False ... ... ... — taCenter ... ... центрлеу), Layout қасиетіне –
tlCenter мәнін (көлднеңінен – центрі бойынша туралау),
➢ Word Wrap қасиетіне (сөзді бөлуге ... ... – True ... Label1 құрауышының Caption қасиетіне “ Заставкой какого программного
продукта ... эта ... деп ... Font ... екі рет ... ... ... терезесін шақырып, қаріптің түсін,
түрін және өлшемін орнатыңыздар.
➢ Сурет қою үшін панель аймағына Additional қасиетінен Image ... және қара ... ... екі рет ... ... ... үшін Picture Editor ... шақырыңыздар. Load
батырмасының көмегімен осы ... ... ... терезесін шақырып,
C:\Program Files\Common Files\Borland Shared\Images\Splash\16color
каталогынан Athena.bmp ... ... ... Stretch қасиетіне true мәнін тағайындаңыздар.
➢ Қозғалысты бағыттау ... мен Shift ... ... ... ... ... өзгертуге болады, ал ... ... ... ... пішіннің бойымен жылжытуға
болады.
Сурет 1.11 «Тестирование» ... ...... ... біз ... бірнеше варианттарын
орналастыруымыз керек, оның ішінен тестен өтуші дұрыс деген бір ... ... ... ... ... ... үшін Standard палитрасының
RadioGroup деген құрауышын қолданамыз, ол бірнеше радиобатырмаларды бір
топқа ... ... атау ... бойынша көптеген
радиобағдарламалардың ішінен біреуін ... бір ғана ... ... ... ... ... «Тестирование» пішінінің бірінші сұрағының парағына ... ... және оның Caption ... ... ... ответов беріңіздер.
➢ Items (элементтер) қасиетіне тышқанның екі шертуімен String List Editor
(Жол тізімінің редакторы) терезесін шақырыңыздар.
➢ Бұл редактордың ... ... Delphi, ... ... — Windows 95,
үшіншісіне — Microsoft Office 95 деп ... ОК ... ... ... ... Жауаптың әрбір варианты
RadioGroup құрауыш панельінің радиобатырмаларының ...... ... Қарым – қатынас терезесінің екінші парағына ... ... ... ... Ол үшін ... ... панельін тышқанмен шерту
арқылы ерекшелеңіз және Edit (редакциялау) менюінің Сору (көшіру)
командасын орындаңыздар. ... ... ... және Edit ... (қою) командасын орындаңыздар.
➢ Өздіктеріңнен №2, №3, №4, №5 сұрақтардан тұратын ... бар тағы ... ... ... ... ... модульін Test_x.pas деген атпен
сақтаңыздар.
... ... ... ... ... ... менюінен
«Тестирование» пішінін іске қосатын команданы енгізіңіздер. Ол үшін
«Программа ... ... ... меню ... шертіңіздер – сонда осы оқиғаны ... ... коды бар ... пайда болады. Тышқанның көрсеткіші жанып -
өшіп тұрған жерге мыныны жазыңыздар
TestDlg.Showmodal;
➢ Uses ... ... ... атын test_x ... 4. “Результат” пішінін құру және жобаны аяқтау.
Сурет 1.12 ... ... ... New Items ...... ... Dialogs қалташасын таңдаңыздар
және онда Standard Dialog ... ...... терезесі)
пішінінің шаблонын таңдаңыздар. Пішінге «Результат» тақырыбын беріп,
Name қасиетіне объектінің атын ... ... ... ... ... ... ішінен ОК батырмасын ғана қалтырыңыздар. ... ... ... ... ... Ол үшін ... тышқанның оң жақ батырмасымен батырмаға шертіңіздер. Пайда
болған контекстік менюден Align командасын таңдап, ... ... ... ... ... Center in window параметрін таңдаңыздар.
➢ Пішіннің панельінің жоғарғы жағына Label құрауышын қосыңыздар, ... ... false ... ал ... ... taCenter ... Қаріптің ... ... ... ... ... негізгі модульінің
бағдарламалық кодына енгізіледі және ... ... ... ... ... ... сурет қойыңыздар.
➢ Пішіннің файлын Result_x атымен сақтаңыздар және оны MainForm.pas
модуліне қосыңыздар.
... ... ... ... бағдарламалық кодты құрыңыздар.
Негізгі пішіннің Тест\Результат меню командасына шерту арқылы Mainform
модульінің кодын ... және ... ... ... - өшіп
тұрған жерге пернетақтаның көмегімен бағдарламаның мәтінін енгізіңіздер
(көп нүктенің орнына дұрыс жауаптарының нөмірін ескере отырып, ... ... ... ... жазу ... ... ... бағдарламалық коды
var ball:byte;
begin
ball:=0;
if TestDlg.RadioGroup1.ItemIndex=0 then ball:=ball+1;
if TestDlg.RadioGroup2.ItemIndex=
...
...
ResultDlg.Label1.Caption:=’Ваш результат:’+IntToStr(Ball);
ResultDlg.ShowModal;
end;
Тестілеу нәтижесінде әрбір дұрыс жауап 1 балл деп ... ... ... ... ... 5 ... ... пішініне шығуы
керек. Көрнекілік бағдарламалау ... ... бұл ... ... ... ... қарапайым бағдарламалауға көшейік.
procedure TForm1.N6Click(Sender: TObject);
процедурасы тестілеу нәтижесінің балдарын қосады және ... ... ... ... ... ... ... бар радиобатырмаға
басқан кезде ғана бал есептелінеді. Әрбір ... бір ғана ... және ол ... ... ... нөмірінің индексі бойынша
белгіленеді, 0 – ден басталады. Бұл ... ... ... ... ... индексі 0 – ге тең және т.б. Бағдарламалық жолда
if TestDlg.RadioGroup1.ItemIndex=0 then ball:=ball+1;
шартты көшу командасы орындалады. Мұнда былай деп ... егер ... ... бірінші батырмасына шертсек (элемент индексі ItemIndex=0),
онда ball айнымалысына 1 балл (ball:=ball+1) қосылады. Басқа ... ... ... Осылайша TestDlg пішінінің барлық радиотобына жазып
шығамыз. Тәжірибелік тұрғыдан алғанда бірдей жолдарды ... ... ... ... ... ... оны ... Edit менюінің Сору және
Paste командаларын қолдана отырып, тағы да төрт ... ... ... ... енгізіңіздер.
Бағдарламалық жолда
ResultDlg.Label1.Caption:=’Ваш результат:’+IntToStr(Ball);
ResultDlg пішінінде орналасқан Label1 құрауышының Caption қасиетіне 'Ваш
результат:' деген мәтін және ... ... саны ... (Integer to string ... басқы әріптері— бүтінді жолға
айналдыру) функциясы ball айнымалысындағы ... ... ... форматқа
айналдырады.
ResultDlg.ShowModal;
командасы Результат пішінін демонстрация жасайды.
➢ Бағдарламаны орындап, онда өз ... ... және ... ... ... ... бағдарламаны
құру үшін 1500 – ге жуық жол жазу керек, ал ол бір ... ... ... ... айтыңыздар. Delphi тілін меңгеру
арқылы мұндай ... 30 ... ... ... жасауға
болады. Delphi сияқты күшті, әрі әдемі ... ... ... ... ... ... бағдарламалау дегеніміз не және оның қарапайым бағдарламалаудан
айырмашылығы неде?
Жоба дегеніміз не, жаңа жобаны қалай ... және ... ... ... ... не, жаңа ... қалай қосамыз, жобада сіздер пішіннің
қандай шаблонын ... ... ... элементтерден тұрады?
Құрал – саймандар панельі дегеніміз не? Құрал – ... ... ... ... ... ... не, палитра құрауыштарының қандай
құрауыштар ... ... өз ... ... ... ... қасиеті дегеніміз не, ... ... не үшін ... пен ... ... ... ... бар?
Бірнеше құрауыштарды және олардың қасиеттерін атап өтіңіздер.
Модульдің және жобаның бағдарламалық коды ... не, ... ... ... ... қосу» дегеніміз не? Жобаға қандай модульдер қосылды?
Модуль ... ... ... ... құрылымы.
Меню дегеніміз не? Ол қандай элементтерден тұрады?
Оқиға дегеніміз не? Оқиғаларға мысалдар келтіріңіздер.
«Оқиғаны өңдеу» дегеніміз не? ... ... ... ... ... ... ... шақырады ?
«Тест» жобасында нені өзгертер едіңіз және не қосар едіңіз?
2 OBJECT PASCAL ТІЛІНДЕГІ ОБЪЕКТІЛІ – БАҒЫТТАЛҒАН БАҒДАРЛАМАЛАУ
Процедуралық ... ... ... ... ... ... деп тұжырымдайды.
Объектілі - бағытталған бағдарламалау (ОББ) – ол негізінде ... ... мен ... сай келетін, қандай да бір құрылым ретінде
қарастырылатын объект түсінігі бар бағдарламаны ... ... ... ... ... тапсырмалар объект және
оларға қолданылатын операциялар деген терминдермен сипатталады. Мұндай
түрдегі ... ... ... мен ... арасындағы байланысты
көрсетеді.
Кластар мен олардың элементтеріне ат тағайындауда ұсынылатын
ережелер:
➢ Кластың аты Т ... ... TObject, TForm, TButton және ... ... ... қасиетке сай келеді (property), әдетте қасиеттің атымен
аталады, бірақ F деген префикстен басталады.
Мысалы: FCount: Integer;
property Count: Integer read FCount write ... ... ... оның мәні қандай да бір ... ... ... ... ... бірақ А деген префикстен
басталады.
Мысалы: procedure SetCount(ACount: Integer);
... аты, оның ... ... мәні ... ... Get сөзінен
басталады.
Мысалы: function GetParam: Integer;
➢ Әдістің аты, оның ... ... мәні ... ... ... ... SetCount әдісі (жоғарыдан қараңыздар).
➢ Конструктор әдісіне әдетте Create аты беріледі.
Мысалы: constructor Create(Owner: TComponent);
constructor Create(AName: String);
➢ Деструктор әдісіне ... Destroy аты ... ... Destroy; override;
➢ Хабарламаны өңдейтін әдістердің аттары WM префиксінен басталады,
хабарламаның типтерінің ... - TWM , ал ... ... - WM_ ... ... procedure WMSetFocus (var Message: TWMSetFocus);
message WM_SetFocus;
message WM_Quit; {әр кез бағдарламаның
орындалуын ... ... ... ... Оқиғаның өңдеуішіне қатынауды жүзеге асыратын қасиеттің аттарына On
префиксі бар ат тағайындалады.
Мысалы: property ... ... read ... write ... ... және ... туралы түсінік
ООБ – дың негізінде класс (class) және объект деген ұғымдар жатыр.
Object Pascal – да ... деп - ... әдіс және ... ... ... ... ... айтамыз. Кластың арғы - тегі ... ... ... ... Turbo Pascal ... типі ... Объект Turbo Pascal
тіліне Delphi - ді құрғанға дейін кіргізілген ... Object Pascal ... ... ... ... Delphi ... ... ескі бағдарламалық
өніммен үйлесімділік үшін сақталған. Қазір объектіні қолдану ... өз ... ... ... ... ол ... ... ерекше типтің нұсқағышы: онда класқа қатынағанда "^" ... ... ... мен ... ... ... ... – кластың физикалық іске асырылуы (кластың экземпляры).
Класс өзінше бір сипатталатын тип ... ... және ... ... ... = class(TForm) { TForm1- TForm класының ұрпақ - класы}
{Аталық кластың өрісін, ... ... ... TButton; ... TButton; ... TLabel; ... TLabel; {өріс}
procedure Button1Click(Sender: TObject); {әдіс}
procedure FormActivate(Sender: TObject); {әдіс}
private
{ Private declarations }
public
{ Public ... ... бір ... ... (record) – ... де ұқсайды, ол
берілгендердің ... ғана ... String; ... типтің өрісі}
FModified: Boolean; {логикалық типтің өрісі}
оларды өңдейтін бағыныңқы бағдарламалардан (әдіс),
Мысалы:
private
procedure SetCaption(Const ACaption: String);
procedure Close;
сонымен қатар өрістер мен ... ... бар ... ... Caption: String read FCaption write ... ... Boolean read ... write SetModified;
Сол себепті класта оның сипаттамалары мен тәртібі сипатталған.
Объект – белгілі бір класқа сай келетін ... ... ... ... ... ... ... TForm1;
Барлық кластарға сай келетін объектіні құра беруге болмайды. Олардың
бірқатары әсіресе барлық кластардың ... ... ... бұны орындауға мүмкіндік бермейді, немесе олардың ... ... ... ... ... болып келеді, мысалы TObject
ағымды класы. Ол мынамен байланысты, мұндай ... сол ... ... ... жан – ... сипаттамасын бермейді (мысалы үшін,
жиһаздың тек үлгісін ғана ... ... ал ... ... ... ... т.б. құруға болады). Мұндай кластар абстрактілі кластар деп аталады,
сондықтан ... ... ... сай ... Бұл ... ... ... құру тиімді, өйткені бұл ... ... көп рет ... ... ... тиісті жалпылықты
жинақтауға болады.
ОББ үш негізгі қасиеттермен сипатталады:
✓ инкапсуляция (encapsulation),
✓ туындау (inheritance),
✓ полиморфизм (polymorphism).
2.2 Инкапсуляция, туындау және полиморфизм
Класс - ... әдіс және ... ... ... қоса ... жеке
тапсырмаларды шешуге тағайындалған, аяқталған құрылымдық ... ... ... ... ... шешімі қандай да бір мәселелер жетегінің
айналымында табылатын ... ... ... ... ... Text Format форматындағы файл) қуатты мәтіндік редакторын береді, ол
файлды көруді және редактрлеуді ұйымдастыруға, ... ... мен ... мен ... символдар жолын іздеуге және т.б. тағайындалған.
Өріс, әдіс және ... ... ... ... деп ... тілде көптеген кластар бар (300 – ге жуық ), олар Delphi ... ... ... Object Pascal ... ... -
Inprise International фирмасының қызметкерлерінің көмегімен құрылған.
Программист, бағдарламаны құра отырып өзінің ... ... ... ... не айқын емес құрылады, онда программист Delphi
ортасының ... ... ... ал ... ... Delphi ... немесе айқын, онда программист кластың кодын Object Pascal
тілінің құралдарымен өзі жазады.
Жаңа ... ... ... ... ... ... Ол үшін
кластың тақырыбында оның аталық класын көрсету керек. Жаңа ... ... ... ... ... ... = class (ancestorClass)
мұнда className – жаңа кластың аты; ancestorClass – аталық ... ... ... ... ... ... аталық класының өрісін, әдісін және
қасиеттерін иемденеді және ... ... ... және ... ... бұл ... ... деп аталады. Туындаудың
көмегімен қарапайымнан қиынға өту әдісі арқылы, ... ... да ... ... ... болады. Қарапайым класс болып TObject ... өріс пен ... ... бірақ кластың данасын құратын, жоятын, осы
класқа қызмет ... және ... ... ... арналған
қандай да әдістердің жиынынан ... ... ... ... ... ортақ кластың туындау ағашы құрастырылады. Мысалы:
type TPersistent = class (TObject),
type TComponent = class ... TControl = class ... ... ... сипатталған әдістер қандай да бір ... ... ... ... ... ... ... класта
аталық класта жазылғандай атпен әдіс құруға болады, ... ... ... ... ... ... екі класта да бір атпен ... ... ... ... ... бұл ... әдістерді жариялауға
мүмкіндігі бар туыс кластардың қасиеті.
2.3 Кластың синтаксисі
Барлық кластың синтаксисі мынандай түрде болады:
type
ClassName = class ... ...... аты; class – ... сөз; AncestorClass – аталық
кластың типі; MemberList – ... ... және ... ... TForm1 ... тұратын main модулінің мәтіні көрсетілген.
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, ... Forms, ... = ... { TForm1 ... ... TButton; {өріс}
Button2: TButton; {өріс}
L1: TLabel; {өріс}
L2: TLabel; {өріс}
procedure Button1Click(Sender: TObject); {әдіс}
procedure FormActivate(Sender: TObject); ... Private ... ... Public ... }
end;
var
Form1: TForm1;
i: Integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); {әдістің сипатталынуы}
begin
L1.Caption:= DateTimeToStr(Date);
L2.Caption:= TimeToStr(Time);
end;
procedure TForm1.FormActivate(Sender: TObject); {әдістің ... ... ... деп ... ... берілгендерді айтамыз. Кластың
өрістері жазбаның өрістері сияқты, бірақ айырмашылығы олар кез – келген
типті ... ... ... ... кез – келген класс та бола алады, мысалы:
type
TChildClass = class(TObject) { TChildClass класын жариялау}
FOne: integer; {бүтін ... ... String; ... ... ... TObject; { TObject класс өрісінің типі}
end;
Ерер арғы тегі TObject ... ... онда ... оны ... принципі бойынша өрістерге қатынау кластың әдістері мен
қасиеттерінің көмегімен жүзеге асырылады. Сонымен бірге Object Pascal - ... ... ... да мүмкіндік берілген. ... ... ... ат жазу ... туады, ол нүкте арқылы ажыратылған кластың аты
мен өрістің атынан ... ... : ... := 16;
MyObject := ’Некоторое строковое значение’;
end;
Ұрпақ – класының ... арғы – ... ... ... қатынауға
мүмкіндігі бар, бірақ оларға қол жеткізу ... емес ... ... ... ... = class ... тек ... жариялау}
Value: Integer;
end;
TPotomok = class(TPredok) {ұрпақ класын жариялау}
Value: String; {туындау өрісінің қабысуы}
end;
var
My1: TPredok; {класс айнымалысын жариялау (My1 –айнымалы-объект)}
My2: ... ... ... ... (My2 – ... := TPotomok.Create; { TPredok класының объектісін құрады }
My2 := TPotomok.Create; { TPotomok класының объектісін құрады}
My1.Value := 'Hello!'; ... TPredok ... типі ... := ... ... Value: String ... жұмыс істейді}
My2.Value := 8; {қате: Value: Integer өрісі ... ... екі ... ... TPredok – арғы тек және TPotomok ... ... Әр класс біратты әртүрлі типті Value өрісінен тұрады.
Ары қарай var-секциясында әртүрлі class типті екі ... - ... My2 ... Бір қарағанда My1:= TPotomok.Create объектісінің
оператор – конструкторы TPotomок типті My1 ... ... ... (оны
құруға жады бөледі). Бірақ My1 басқа ... ... , ол олай ... ... ... ... типті объект құрады, яғни TPredok ... Енді ... ... ... операторлардағы қателердің
көзі түсінікті болды.
2.5 Кластың әдістері
Кластың әдісі болып инкапсуляцияланған ... мен ... Бұл ... ... ... бағыныңқы бағдарламалар
сияқты жарияланады. Әдіс кластың сипаттамасында жеке тақырып ... ... ал ... коды - ... ... ... әдістің өзінің класына қатысын білдіреді, ... ... ... = ... ... ... ... {DoSomething әдісін жариялау}
...
end;
DoSomething әдісіне ... ... ... ... ... ... мысалы:
procedure TMyClass.DoSomething; {тақырыптың түрі: класс. әдіс}
begin
...
end;
Әдіске қатынағанда құрамды атты немесе With ... ... ... = ... ... ... FirstFunc(x:real):real;
procedure SecondProc;
...
end;
...
var
MyObject : TChildClass;
y : real;
begin
...
MyObject.SecondProc; // ... ... екі ... := ... //құрамды аттың көмегімен: класс . әдіс
...
With MyObject do // сол ... // With ... ... := ... ... ... ... виртуальды, динамикалық және
абстрактілі болуы ... ... типі оның ... ... ... ... әдістер ұрпақтарда мысалда көрсетілгендей өрістердің
қалқалануы сияқты қалқаланады . ... ... ... деп ... ... үшін ... компилятор арқылы жүзеге асырылады.
Үнсіздікпен класта ... ... ... статикалық болып табылады.
Мүмкіндікті кеңейту үшін жиі динамикалық қалқалау қолданылады. Ол
үшін аталық әдіс dinamic (динамикалық ... ... virtual ... ... ... ... ал ... класта қалқалау әдісі -
override директивасынан ... ... ... = ... Draw; virtual; {виртуальды әдіс}
end;
TRectangle = class(TFigure)
procedure Draw; override; {қалқалау әдісі}
end;
TEllipse = class(TFigure)
procedure Draw; override; {қалқалау әдісі}
end;
Бұл мысалда TFigure ... ... Draw ... әдісі
жарияланған және екі біратты әдіс TRectangle және TEllipse ұрпақ класына
қатысты жарияланған. ... ... ... ... ... ... ... жету мақсатында әдістерді қалқалауға
мүмкіндік береді:
var
Figure: TFigure;
begin
Figure := TRectangle.Create; // ... ... ... // ... ... шақыру
Figure.Destroy; // класс данасын жою
Figure := TEllipse.Create; // класс данасын құру
Figure.Draw; // TEllipse.Draw әдісін ... // ... ... ... ... және ... әдістер біркелкі жұмыс
істейді. Айырмашылығы тек виртуальды әдіс ... ... көз ... ... ... жылдамдығын тиімдейді), ал динамикалық әдіс оперативтік
жадыны рациональды қолдануға мүмкіндік береді (сәйкес келетін бағдарламалық
кодтың өлшемін тиімдейді). Динамикалық және ... ... ... ... ... , аталық әдістер мен ұрпақтар әдістерінің ... ... ... ... ... ... әдіс abstract директивасының көмегімен абстрактілі болып
жариялануы мүмкін. Мұндай әдіс виртуальды немесе ддинамикалық әдіс ... ... ... ... ... ... секциясында
өзінің коды болмауы мүмкін. Ол класта анықталады, бірақ ... ... ... шақырылмайды және ұрпақтар класында қайтадан анықталуы
керек. Абстрактілі әдістен тұратын класс абстрактілі ... деп ... ... мен ... ... ... ... тәсілін инкапсуляция
жасайды, бірақ өздері ештеңе істемейді, мысалы:
procedure DoSomething; virtual; abstract;
Қалқаланбаған абстрактілі әдіске қатынау орындалу ... ... ... (run time error), ... = ... Paint; virtual; abstract;
end;
TClass2 = class(TClass1)
...
procedure Paint; override;
end;
var
jClass1: TClass1;
jClass2: TClass2;
begin
jClass1.Paint; // ... ... ... ... ... // ... ... екі ерекше әдістен тұрады – конструктор және деструктор.
Конструктор объектіні құру және оны ... үшін ... Object Pascal ... ... ... ... болып табылады
және айнымалы-объект берілгендерден емес оларға сілтемеден ... ... ... ... ... және объектінің өрісіне
алғашқы мәнін меншіктейді. ... ... ... ... өрісі
алғашқы мән ретінде 0 – ді алады, жолдық тип ретінде – бос жол, нұсқағыш
өрістер - nil ... ... - ... - Unassigned мәнін алады. Одан басқа,
конструктор динамикалық жады бөлінгеннен кейін құрылған объектіге сілтемені
Self айнымалысына ... ... ... ... Self
айнымалысынан тұрады, ол автоматты түрде класта жарияланады.
Деструктор, конструкторға қарама – қарсы ұғым, ол ... ... ... яғни ... объектіні бұзу және жойылатын объектімен бос
емес бөлігін босату. TObject базалық класының және оның ... мен ... Create ... және Destroy (жою) сәйкес
аталады. Бұл класта сонымен қатар Free ... ... ол ... ... ... (объект шын мәнінде жүзеге асырылған ба ... ... ... ... қана Destroy әдісін шақырады. Егер объект
конструктормен ... ... онда ... ... ... ... әкеп ... Мұндай байланыста Destroy әдісінің орнына Free
әдісін қолданған жөн болады.
Конструктор мен деструктор процедура болғанымен де, олар ... ... ... ... ... ... ал
деструктор – destructor сөзімен жарияланады.
type
TSample = ... ... Create; // ... ... құру
destructor Destroy; // кластың данасын
end;
Өріске, қасиеттерге және әдістерге қатынамас бұрын, ең алдымен оларды
құру керек. Объектіні құру үшін ең ... ... ... ... ... қажет:
var
MyObject: TSample;
begin
...
MyObject := TSample.Create;
...
end;
Егер ұрпақтар класы құрылып ... және оны құру ... ... класта
жоқ кейбір қосымша әрекеттерді іске асыру көзделсе, онда алдымен өзінің
аталығының конструкторын шақыру ... ал ... ... ... ... іске ... қажет. Арғы тектің өрістеріне қатынауды қамтамасыз
ету үшін, ... ... – ала арғы тек ... ... ... ... ... кез – келген қалқаланған әдісін шақыруды резервтелген
inherited (иемденген) сөзінің көмегімен іске асырады. Мысалы:
type
TShape = ... ... ... ... TBrush;
procedure PenChanged(Sender: TObject);
procedure BrushChanged(Sender: TObject);
public ... ... ... ... ... Destroy; override;
...
end;
...
constructor TShape.Create(Owner: TComponent);
begin
inherited Create(Owner); // TGraphicControl арғы тек класының ... := 65; // ... ... ... ... := ... := ... // class TPen типі бар жеке өрісті құру
FPen.OnChange := ... := ... // class TBrush типі бар жеке ... ... := ... ... ... конструкторды немесе деструкторды жарияламай
– ақ, құрылуы немесе жойылуы ... ... ... TObject, класының
ұрпағы болып келсе, онда мұнда Constructor мен Destructor - ды ... ... = ... ... ... {объектіні құру}
...
Classy:= TClassy.Free; {объектіні жою}
Тілде бір класс аралығында бір ... ... ... ... бар. Осыдан кез – келген осындай әдіс қайта іске ... ... ... ... ... ... әдістерді өзінің
тиімді формальды параметрлерінің жиынымен идентификациялайды. Сол атпен
пайда болған әдіске Delphi компиляторының реакциясын ... ... ... ... ... директивасымен белгілеп қою керек.Ары қарай
implementation секциясында ... ... ... ... ... ... = ... HH(i, j: byte; var s: String); reintroduce; overload;
Procedure HH(q: String); ... ... HH(a: array of ... ... overload;
end;
...
implementation
...
procedure TClassy.HH(i, j: byte; var s: String);
begin
S:=IntToStr(i + j);
end;
 
procedure TClassy.HH(q: String);
begin
Label2.Caption:= q;
end;
 
procedure TClassy.HH(a: array of ... ... + ... TClassy.HH аты бар әдіске ... ... ... ... ... ... параметіріне сай келетін әдісті ғана
шақырады.
2.6 Кластың қасиеттері
Қасиеттер, өріс ... ... ... болып саналады. Қасиеттер
сырт көрінісімен кластың өрісін еске түсіреді, бірақ шынында ол ... ... ... ... ... ... ... сипатталады:
← оның қасиеттің мәнін сақтайтын кластың өрісімен байланысы;
← қасиеттің өрісіне қатынауды қамтамасыз ... екі ... ... мәнін тағайындайтын әдіс қасиетті жазу әдісі (write)
деп аталады.
- қасиеттің мәнін алатын әдісті ... оқу ... (read) ... property, read және write сөздерінің көмегімен ... және write ... ... ... ... ... басын
білдіреді, олар сәйкес оқу мен ... ... ... ... ... type index ... ... – қасиеттің аты, кез – ... ... ...... имя2, ... , имяN: type] ... ат - ...... типі, ол құрамдас немесе алдын – ала типтерді жариялау
бөлімінде жариялануы қажет; index ...... ... тұрақты
шама, міндетті емес параметр, ол бірнеше ... ... ... сол бір ... қолдануға мүмкіндік береді (мысал 2.6.2); read,
write, stored, default ... ... және ... ... ... 2.6.1 Object Pascal - да анықталған қасиеттерге ... ... ... TObject read ... ... ... Y: Integer]: TColor read GetPixel
write SetPixel;
property Values[const Name: string]: string read ... ... ... Integer read GetErrorCount;
property NativeError: Longint read FNativeError;
Мысал 2.6.2 Index спецификаторы бар ... ... = ... ... of ... GetCoordinate(Index: Integer): Longint;
procedure SetCoordinate(Index: Integer; Value: Longint);
public
property Left: Longint index 0 read GetCoordinate
write ... Top: Longint index 1 read ... ... Right: Longint index 2 read ... ... Bottom: Longint index 3 read ... SetCoordinate;
property Coordinates[Index: Integer]: Longint read GetCoordinate
write SetCoordinate;
...
end;
Index спецификаторы бар қасиетте қатынау әдісі бүтін типті ... алуы ... Оқу ... үшін ол ... ... ... үшін ол соңғы параметрдің алдындағы (қасиеттің мәнін анықтайтын
алдыңғы параметрге сай) ... ... ... ... қасиетке
қатынағанда, бүтін санды ... шама ... ... ... ... ... ... TRectangle типті болса, жоғарыда жарияланғандай, онда
Rectangle.Right := Rectangle.Left + 10;
мынадай сәйкестік орын алады:
Rectangle.SetCoordinate(2, Rectangle.GetCoordinate(0) + 100);
Қасиеттердің барлық ... read және write ... ... ... ... болуы қажет. Олар ... ... ... және ... ... ... fieldOrMethod
write fieldOrMethod
мұндағы fieldOrMethod – қасиет жарияланған ... ... арғы – ... ... өріс ... ... аты.
Егер fieldOrMethod қасиет жарияланған класта жарияланса, ол қасиетті
жарияламас бұрын орындалуы қажет.
Егер fieldOrMethod арғы – тек ... ... онда ол ... ... яғни басқа модульде жарияланған жеке өріс немесе ұрпақ
кластың әдісі ... ... ... - өріс ... онда ол ... типінен тұруы
керек.
Если fieldOrMethod - әдіс ... онда оны ... ... ... ... - read ... анықталған әдіс болса,
онда ол қасиеттің типіне сай келетін мәнді қайтаратын параметрі жоқ ... ... ... ... функцияның аты соңынан қасиеттің аты жазылатын
Get ... ... ... - write ... ... әдіс ... ол бір ғана параметрден тұратын процедура болуы тиіс. Бұл ... ... ... сай ... ... ... тағайындалған процедураның
аты соңынан қасиеттің аты жазылатын Set приставкасынан ... егер ... ... ... Color: TColor read GetColor write ... GetColor ... мыналай сипатталуы қажет
function GetColor: TColor;
және SetColor әдісі мыналай сипатталуы
procedure ... ... ... Value: ... керек.
Егер қасиет тек read спецификатрынан тұратын болса, онда ол "read
only" (тек ... ... ... ... Егер ... тек ... тұратын болса, онда ол "write only" (тек жазуға ... ... ... ... тек ... ғана тағайындалған мәнді
меншіктеу немесе қасиеттің өрнегінде тек жазуға ғана ... ... ... ... ... ... ... қорғалған қасиетке
мәнді объектіні инициализациялау кезінде орнатуға болады.
Мысал 2.6.3 Name және Address екі ... ... Name және ... ... сипаттау.
type
TName = string[15];
TAddress = string[35];
TPerson = class // класты ... TName; // Name ... ... TAddress; // Address ... ... ... ... ... GetName: ... ... TAddress;
procedure SetAddress(NewAddress: TAddress);
public
property Name: TName // Name ... GetName; // тек ... ғана ... ... Address: TAddress // Address ... ... // оқуға және жазуға
мүмкіндік бар
write SetAddress;
end;
Мұндағы Name – FName өрісімен байланысқан ... GetName – ... ... тағайындалған әдіс. Address – FAddress өрісімен байланысқан
қасиет, ... және ...... FAddress ... ... ... ... әдіс.
Төменде TPerson класының объектілерін құруға және оның қасиеттеріне
қатынауды қамтамасыз ететін TPerson ... ... ... ... TName); // TPerson класының конструкторы
begin
FName := Name;
end;
function TPerson.GetName; // Name ... ... ... ... := ... ... // Address қасиетінің мәнін алатын әдіс
begin
Result := FAddress;
end;
// Address қасиетінің мәнін өзгертетін әдіс
procedure TPerson.SetAddress(NewAddress: TAddress);
begin
If FAddress = ’’ then FAddress := ... ... үшін ... ... өрістер мен әдістердегі
сияқты объектінің атынан, нүктеден және қасиеттің атынан тұратын құрамды
атты қолдану керек, мысалы:
var
Student : TPerson // ... ... ... : ... := ... := ’ул. ... д.3, ... := ... қасиетіне мән меншіктеу нұсқасын орындағанда компилятор
әдісті ... ... оны ... ... ... д.3, ... жағынан қарағанда бағдарламада қасиетті қолданудың объектінің
өрісін қолданудан еш айырмашылығы жоқ. Бірақ қасиет пен объектінің ... ... ... бар: ... мән ... және оның
мәнін оқығанда қандай да бір жұмысты атқаратын процедура ... ... ... біз FAddress ... тікелей керекті мәнді орналастыра
аламыз
Student.FAddress := ’ул. ... д.3, ... Address ... ... ... біз тек оқу мен жазуға
тағайындалған әдістерге әртүрлі әрекет жасай аламыз: қасиетке ... ... ... ... ... ... ... ету,
экрандағы объектінің сырт көрінісін өзгерту және т.б. Егер жазу немесе оқу
кезінде ... ... ... ... онда ... әдістің орнына
өрістің атын нұсқау қажет:
type
TPerson = class
FAddress: TAddress;
procedure SetAddress(NewAddress: TAddress);
property Address: TAddress read FAddress write ... ... бір ... ... да ... Бұл ... ... типіне сай келетін берілгендермен әрекет жасау үшін екі
әдіс анықталады.
2.7 Кластың құрылымы. Кластың ... ... ... Pascal объектілерінің модельінде оларды қай аймақта қолдануға
болатындығын анықтайтын (көріну аймағы) құрамды ... ... ... ... бар. ... класс секциядан тұратын құрылымнан
тұрады. Әрбір секция арнайы резервтелген ... ... ... ... ... private ... ... public (қатынас бар), automated (автоматталған). Әрбір
секцияның ішінде ең алдымен өріс , одан ... ... ... және ... ... ... мысал:
type
TMyClass = class(TControl)
private
... {меншік жариялану мына жерде}
protected
... ... ... мына ... {қатынас бар жариялану мына жерде}
published
... { жариялану мына жерде}
end;
Секциялар ... ... ... ... көріну аймағын
анықтайды:
• Private – көріну аймағын минимумге дейін кішірейтеді: сипаттаудың
жабық ... тек ... ... ... ... ... және ... бағдарламаның әдістерінің ішінде ғана
қатынауға болады. Private ... ... ... ... ... ... ... кластарға да қол жетпейтін болып
қалады. Әдетте private ... ... ... ... ал осы өрістерге қатынасты қамтамасыз ететін әдістерді
protected секциясына орналастырады.
• Public – класс жарияланған uses тізімінде модульге ... ... және кез – ... ... ... көрінетін элементтер
жиынынан тұрады.
• Published – ол Public сияқты, бірақ айырмашылығы тек мынада, published
секциясы ... ... ... үшін арнайы даярланған. Бұл
секцияға орналастырылған қасиеттер тек ... ... ғана емес ... ... ... конструкциялау кезінде
Объект Инспекторының терезесінде де оған ... ... ... секциясында жарияланған өрістер класс типтес болуы керек.
Пішін (мысалы, TForm1) класының жариялануының басында орналасқан аты
жоқ секция, ... ... ... ... ... Protected – кластың және оның кез – келген ұрпақ ... ғана ... ... ... және олар сол ... ма? жоқ па? одан ... ... protected класына кластың
әдісінің сипаттамасын орналастырады.
• Automated – ... ... ... ... ... әдістерді жариялауға қолданылады. Бұл секцияның мүшелерінің көріну
аймағы шектелмеген.
• Бір кластың төңірегінде ретсіз кез – келген ... ... ... ... ... де ... ... мүмкін. Сонымен қатар
кез – келген секция бос ... ... ... ... қолдану. IS және AS кілттік сөздері
Кластарға екі ... ... ... ... – IS және ... IS операторы.
IS операторының көмегімен берілген класс нұсқалған типке тиісті ме
соны анықтауға болады. IS операторынан ... ... ... ... ... is ... ... логикалық типтен (boolean) тұрады, егер object айнымалысы
class класының ... ... ... ... ... ... ... мәнін қайтарады, әйтпесе – FALSE.
Мысал 2.8.1
IF ActiveControl IS TEdit THEN ... ... ... мәнді қайтарады.
TRUE – егер тексерілетін айнымалы ActiveControl берілген ... ... (TEdit). ... ... ... тип тексерілетін айнымалының
арғы – тегі болып ... ... ... TEdit класының немесе одан
туындаған бір кластың объектісі болса).
FALSE – кері жағдайда.
Мысал ... ... IS TObject THEN ... ... TObject ... ... ... болғандықтан,
DoSomeThing процедурасы кез – келген жағдайда орындалады.
2. AS операторы.
AS опрераторы нұсқағышты нақты типке ... үшін ... ... тұратын өрнектің синтаксисінің түрі мынандай болады:
object as class
Бұл өрнектің есетелінуінің нәтижесі болып class ... ... class ... ... – класының типіне сай келетін объектіге
сілтеме табылады. Бағдарламаның орындалу барысында object class ... ... class ... ...... ... немесе nil типті болуы
мүмкін. ... ... ... ... жағдайдың өрбуіне әкеп соғады.
Мысал 2.8.3
WITH ActiveControl AS TEdit DO DoSomeThing;
Келтірілген фрагментте ActiveControl айнымалысы ... да бір ... ... ... AS ... көмегімен бұл нұсқағыш TEdit – тегі
нұсқағышқа түрленеді. Егер ActiveControl айнымалысы TEdit типінің ... бір ... ... ... ... табылмайтыны анықталса, онда
типтің келтірілуі орындалмайды және DoSomeThing әдісі шақырылмайды. Кері
жағдайда типтердің ... ... және ... ... шақырылады.
Мысал 2.8.4
with Sender as TButton do // егер Sender TButton ... ... // ... TButton – нан ... -тип
Caption := '&Ok';
OnClick := OkClick;
end;
...
(Sender as TButton).Caption := '&Ok'; // TButton ... оның ... Sender ... ... '&Ok' мәні ... Оқиға және меншіктеу
Windows жүйесінде бұрыннан жұмыс ... келе ... ... ... ... ... қажеті жоқ шығар. Осы орта мен ол
үшін жазылған ... ... ... компьютер аппаратурасы
немесе басқа бағдарламаның ... ... ... ... ... ... басталуы туралы хабар – ол терезе ... ... Windows ... ... ... бола ... мұндай санды хабарламалармен жұмыс істеу
оңайға түспейді. Сондықтан Delphi – дің ... бірі ... Windows ... ... ... ... арылғаны
болып табылады (бірақ оның мұндай мүмкіншілігі бар; ол ... ... ... Delphi – де ... оқиғалардың саны екі ондықтан аспайды
және олардың барлығы орта туралы терең білімді ... ... ... тұрады.
Object Pascal тілінің деңгейінде іске оқиғалар қалай іске
асырылғанын қарастырайық.
Оқиға — бұл ... ... ... ... реакциясын құруға
тағайындалған процедуралық типтің қасиеті. ... ... мәні ... да бір ... нұсқағыш табылады.
Оқиғаны сипаттаудың синтаксисі мынадай:
property OnMyEvent: TMyEvent read FOnMyEvent
write ... ...... аты, TMyEvent – ... ... FOnMyEvent — өріс, ол сәйкес келетін оқиғаны өңдейтін әдіске
нұсқағышты сақтауға ... ... мән ... дегеніміз - объектіге оқиға
шақырылған кезде шақырылатын әдістің ... ... ... ... ... деп ... ... мына жазу:
Application.OnActivate := MyActivatingMethod;
Application (осылай жұмыс істеп тұрған қосымшаға сай ... ... ... ... ... ... - әдісі
шақырылатынын білдіреді.
Кітапхананың ... Delphi – дің ... ... ... ... оқиғаны өңдеу шақыртулары ... ... ... ... ... бұл ... белгіліме соны тексереді, ал егер ол белгілі болса, онда
оны шақырады:
if Assigned(FOnMyEvent) then FOnMyEvent(Self);
Оқиға ... ... және ... ... ... саны мен ... тұрады. Барлығына жалпы болып Sender параметрі
табылады, ол оқиғаның объект-көзіне нұсқайды. Ең қрапайым процедуралық ... ... – оның екі ... ... = ... (Sender: TObject) of object;
Мысал 2.9.1 Мысал ретінде TControl класының ... ... ... сол жақ ... екі рет ... өрбиді),
OnMouseDown (тышқанның батырмасын басқанда өрбиді) және OnMouseMove
(тышқанды жылжытқанда өрбиді ) ... ... = ... ... ... ... ... TNotifyEvent read FOnDblClick
write FOnDblClick;
property OnMouseDown: TMouseEvent read FOnMouseDown
write FOnMouseDown;
property OnMouseMove: TMouseMoveEvent read ... ... ... и ... – оқиға-қасиетін
сипаттағанда қолданылатын өрістер. Өрістерді сипаттағанда ... ... ... ... ... = ... (Sender: TObject) of object;
TMouseEvent = procedure (Sender: TObject; Button: TMouseButtton;
Shift: TShiftState; X, Y: Integer) of object;
TMouseMoveEvent = procedure (Sender: TObject; Shift: ... Y: Integer) of ... ... ... болып оқиғаның объект-көзіне нұсқағыштан
тұратын Sender параметрі табылады. Button параметрі ... қай ... ... ... ... Shift ... ... батырманың кодынан тұрады. X және Y – ... ... ... координаталары.
Инспектор объектісінің Events парағының кез – ... ... ... арқылы, сіздер бағдарламада керекті типтің әдісінің
дайындамасын аласыздар. Мұнда ат ағымды ... пен ... ... ... (On ... ... ал ол ... пішінге тиісті болады. Form1
пішінінде Label1 ... бар деп ... Онда ... ... ... оқиғасы) TForm1 класының Label1Click әдісінің тақырыбы құрылады:
procedure TForm1.Label1Click(Sender: TObject);
begin
...
end;
Оқиға объектінің қасиеті болып табылғандықтан, ... ... ... ... кез – ... ... өзгертуге болады.
Мұндай тамаша мүмкіндік атын қайта өзгерту деп ... Кез – ... бір ... ... ... ... алып, оны келесі бір
объектіге қайта тағайындауға болады:
Object1.OnMouseMove := Object2.OnMouseMove;
Меншіктеу принципі әрбір арнайы жағдай үшін жаңа ... ... ... ... ... пайда болуының алдын алады және ондай үрдістерді
қарапайым процедураларды қоюмен ... ... ... ... ... береді?, өйткені ол
жай ғана процедура емес, әдіс қой. Бұл жерде Object Pascal ... ... ... ... сай ... Әдіс ... процедурадан айқын
сипатталған параметрлерден басқа әдіске айқын емес ... ... ... ... Self ... орналастырылатын оны шақырған объектіге
нұсқағыштан тұрады. Сипатталып ... ... тип ... ... Self – ті алуды қарастырады), яғни әдістің типі болып
келгенін көрсету үшін процедураны сипаттағанда of object резервтелген сөзді
қосу ... ... ... ... – ол ... ... нұсқағыш
болып табылады.
type
TMyEvent = procedure(Sender: TObject; var AValue: Integer) of object;
T1stObject = class;
FOnMyEvent: TMyEvent;
property OnMyEvent: TMyEvent read ... write ... = ... ... TObject; var AValue: Integer);
procedure SetValue2(Sender: TObject; var AValue: Integer);
end;
var
Obj1: T1stObject;
Obj2: ... := ... ... := ... := Obj2.SetValue1;
Obj1.OnMyEvent := Obj2.SetValue2;
...
end.
Бұл мысал атын қайта өзгерткен кезде басқа кластардың да ... ... ... Мұнда Objl объектісінің OnMyEvent
оқиғасының өңдеуіші болып ретпен Obj2 ... ... және ... ... ... Events бетінде әдістің, яғни оқиғаның типіне
сай келетін құрауыштың қасиеттері бейнеленеді. ... да бір ... ... ... типі ... ... сай ... керек,
сондықтан әдістің типін басқаша оқиға өңдеуішінің типі деп те ... ... пен оның ... ат ... ... ... дегеніміз не? Объект дегеніміз не? Кластың жариялануы. Объектінің
жариялануы. Кластың синтаксисі.
Кластың ... ... не? ... ... өрістерінің қалқалануы.
Мысалдар.
Кластың әдісі болып не ... ... ... ... ... ... ерекшеленеді?
Әдістердің қалқалануы. Статикалық қалқалану. Динамикалық қалқалану.
Динамикалық, виртуальды және қалқалау әдістері. Мысалдар.
Абстракті әдістер. ... ... іске ... әдістер. Мысалдар.
Конструктор мен деструктор. Мысалдар.
Кластың қасиеті. Қасиеттің синтаксисі. Мысалдар.
Қасиеттің ... ... ... ... ерекшеленеді? Read, write
специфиациялары.
Инкапсуляция. Мысал.
Туындау. Мысал.
Полиморфизм. Мысал.
Кластың құрылымы. Published, private, protected, public секциялары.
Кластарға ... ... IS және AS ... ... Мысалдар.
Оқиға. Оқиғаның сипатталынуының синтаксисі. Мысалдар.
Процедуралық тип. Мысалдар.
Ең қарапайым процедуралық тип болып қандай тип табылады? Sender параметрі.
Оқиғаның ... ... ... ... ат ... Мысалдар.
Өз бетінше орындауға арналған тапсырма
Объектілі – бағытталған бағдарламалаудың ... ... ... ... ... данасы және әдіс.
Абстракция, инкапсуляция, туындау және полиморфизм. Мысалдар.
Delphi – дің абстрактілі кластарының сипаттамалары (TObject, ... – дің ... ... ... (TControl,
TGraficControl, TWinControl, TScrollingWinControl).
Stored, default (немесе nodefaulte), implements спецификациялары. Мысалдар.
Берілгендердің динамикалық құрылымы. Нұсқағыштар, ... ... ... Variant ... айнымалылар. Variants модульі.
Зертханалық жұмыс ... және ... — бұл ... ... кіретін әдістерге бірдей ат
тағайындау мүмкіндігі. ... ... ... ... в ... ... метода к объекту использование именно того
метода, который соответствует классу объекта.
Біреуі қалған екеуіне базалық ... ... үш ... ... ... ... = ... String; // өрістің аты
Constructor Create(AName: String);
Function Info: String; ... TPerson – нан ... = class ... Integer; // оқу ... ... Create(Aname: String; Gr: Integer);
Function Info: String; override;
end;
// TPerson – нан ... = ... String; // ... ... Create(AName: String; Dep: String);
Function Info: String; override;
end;
Әрбір класта Info әдісі анықталған. ... ... ... ... Info ... ... болып анықталған. Әдістің
көрнекі болып ... ... ... ... ... өз ... ... жасауға мүмкіндік береді. Әрбір еншілес кластың
өзінің Info ... ... ол ... ... ... ... ... (аталық кластың көрнекілік әдістерін ауыстыратын ... ... override ... орналастырылады).
Төменде әрбір класс үшін Info әдісінің анықталуы ... ... ... := ' ... TStud.Info: String;
begin
result := FName + ' группа ' + IntToStr(FGr)
end;
function TProf.Info: String;
begin
result := FName + ' ... ' + ... ... та бір базалық кластан туындағандықтан студенттер ... ... ... жариялауға болады (бұл жерде мынаны еске алу
қажет, ... ... - бұл ... ... of ... ... ... болады, өйткені Object Pascal аталық
кластың нұсқағышына еншілес ... ... ... ... ... ... list ... элементі Tstud класының және
TProf класының ... бола ... мен ... тізімін Info әдісін массив элементтеріне
қолдану арқылы шығаруға болады. Мысалы, ... := ' ... i := 1 to SZL do // SZL – ...... ... list[i] ... st := st + list[i] .Info + ... орындалуы барысында массивтің әрбір элементі TStud
типті ... де, TProf ... ... де тұра ... ... ... ... типіне сай келетін әдісті қолдануды
қамтамасыз етеді.
Келесі бағдарлама жоғарыда қарастырылған TPerson, TStud және ... ... ... ... ... мен оқытушылардың
тізімін қалыптастырады және шығарады. ... ... ... ал ...... терезесі сурет 2.1 келтірілген.
Сурет 2.1 «Полиморфизм» бағдарламасының қарым – қатынас терезесі
2.1 листингісі Полиморфизмнің демонстрациясы
Unit polimor_;
Interface
Uses
Windows, ... ... Classes, ... ... Forms,
Dialogs, StdCtrls;
type
ТForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
( Private declarations )
public
( Public ... ... ... ... = ... String; // ... ... Create(AName: String);
Function Info: String; virtual;
end;
// Студент класы
TStud = class (TPerson)
FGr: Integer; // оқу ... ... ... String; Gr: ... Info: String; ... Оқытушы класы
TProf = class(TPerson)
FDep: String; // ... ... ... String; Dep: ... Info: String; override;
end;
const
SZL = 10; // тізімнің ... ... ... of TPerson; // ... Inteqer = 0 // ... ... саны
implementation
($R *.DFM}
constructor TPerson.Create(AName: string);
begin
FName:=AName;
end;
constructor TStud.Create(AName: string; Gr: integer);
begin
inherited ... // ... ... ... ... ... string; Dep: string);
begin
inherited Create(AName); // базалық кластың конструкторын ... ... ... ... String;
begin
result := FName + ' группа ' + IntToStr(FGr)
end;
function TProf.Info: String;
begin
result := FName + ' ... ' + ... ... ... ... ... TObject);
begin
if n < SZL then
begin
// объектіні класқа қосу
n:=n+1;
if ... // TStud ... ... // TProf ... ... RadioButton2.Checked then
List[nl:=TРrоf.Create(Edit1.Text,Edit2.Text);
// енгізу өрісін тазалау
Edit1.Text :=' ';
Edit2.Text :=' ... // ... ... ... өрісінде
end
else ShowMessage('Список заполнен!');
end;
procedure ТForm1.Button2Click(Sender: TObject);
var
i:integer; // индекс
st:string; // тізім
begin
for i:=1 to SZL do
if list[i] NIL then st:=st + ... + ... ... ' + #13 + ... ... батырмасын ... іске ... ... TStud ... TProf ... ... ... Құрылып жатқан объектінің класы RadioButton ауыстырып
қосу батырмасының күйімен ... ... қосу ... ... ... орнатылуы TStud класын анықтайды, ал ... ... – TProf ... анықтайды.
Список (Button2) батырмасын ... іске ... ... ... ... объектісіне (массив
элементтеріне) Info әдісін қолдана ... ... ... ... жұмыс №5 "Қаситтер мен әдістер"
Кластың сипатталынуы "Қос мәнді теріс емес бүтін сан" (TN2).
Қасиет – аты, ... ... ... сан, ... ... процедуры: мәнді орнату (SetN2), сандарды ауыстыру (Swap);
– функциялар: ... ... ... кіші ... ... ... (Create).
Листинг 2.2 «TN2» класын жүзеге асыратын бағдарламаның демонстрациясы
program Class_TN2;
{$APPTYPE CONSOLE} {Компилятор директивасы – ... ... ... тапсырмасы.}
{MS-DOS режиміне тәріздес мәтіндік режимнің эмуляторы
құрылады}
uses SysUtils;
type
TN2 = ... ... ... ... String);
procedure Swap;
function Info: String;
function LessThen(aNum: TN2): Boolean;
procedure SetVal(Value:Integer);
function GetOdd:string;
function ... ... ... ... ... read ... ... read GetOdd;
property Val:integer read fVal write SetVal;
property D1:byte read GetD1 write SetD1;
property D2:byte read GetD2 write SetD2;
end;
constructor TN2.Create(aName: String);
begin
fName:=aName;
fVal:=1;
end;
procedure TN2.Swap;
begin
SetVal(D2*10+D1);
end;
function ... ... ... ... chislo ... first number='
+IntToStr(D1)+' second number='+IntToStr(D2);
end;
procedure TN2.SetVal(Value: Integer);
begin
if (Value>=0) and (Value StartX ... := 'Left: ' + ... := 'Right: ' + ... := 'Left: ' + ... := 'Right: ' + ... ... №8 “TForm ... Жаңа жоба құрыңыздар. Пішінге тақырып беріңіздер "Лабораторная работа
№8, Фамилия Имя". Жеке каталогқа жобаны сақтаңыздар.
2. Пішіннің өлшемін 500 де 400 ... және ... ... ... орнатыңыз.
3. Пішінге өзіңіздің фирмалық иконыңызды ... Осы ... да ... (Қосымшаны көріңіздер).
4. Пішінге "Моя формочка" деген көмекші кеңесті ... ... ... қошқыл жасыл түс беріңіздер. (clLime).
5. Тышқанның көрсеткішін пішіннің үстімен жылжыту кезінде, ол өз ... ... ... баяу ... керек: сол жақтағы
жоғарғы бұрыштың түсі - ... сол ... ... ... түсі -
көгілдір, оң жақтағы жоғарғы - қызыл, оң жақ ... - ақ. ... ... осы режимді қосуға/өшіруге болады.
6. Тышқанның екі рет ... ... Alt-X ... ... F10 ... ... пішін жабылады (рұқсат
сұрату арқылы).
7. Бағыттары көрсетілген пернелерге ... ... ... ... ... оң жақ батырмасына басқанда пішін жан – ... 5 ... ... оң жақ ... мен Shift ... басқанда
пішін жан – жағынан 5 пиксельге үлкейеді.
Өздіктеріңнен.
1. Пішіннің өлшемі өзгергенде шертпенің дыбысы шығады, ал өлшемнің ... ... ... минимизация терезесінде көрсетіледі.
2. Тышқанның ортаңғы батырмасына немесе екі шеткі батырмаларына басқанда
пішін тышқанның көрсеткішінің нұсқағышына байланысты центрленеді.
Қосымша.
1. Beep(0) ... ... ... ... ... ... функциясы r,g,b (от 0 до 255) ... ... ... ... және көк ... ... ... Application объектісі бағдарламаның маңызды қасиеттері мен ... ... ... ... ... ... |Оперативті көмекші кеңестің таңбашасының түсі. ... ... ... ... пайда болып және жоғалғанға |
| ... ... ... ... ... |Минимизацияланған бағдарлама батырмасының пиктограммасы. ... ... ... ... ... |
4. Screen объектісі ДК экранының жұмысын жеңілдететін маңызды қасиеттер
мен ... ... Screen ... кейбір қасиеттері:
|Fonts |Барлық экрандық қаріптердің тізімі. ... Width ... ... мен ені. ... ... ... батырмасының мәтінінің |
| ... ... ... ... ... ... ... беретін қабілеті.|
3.4 Басқару элементтерінің тасуын қамтамасыз ететін сипаттамалар
(Drag & Drop тетігі)
Экранда бейнеленетін басқару элементтері ... ... ... ие, ... экран бойынша жылжытуға болады және оларды басқа
басқару элементтеріне түсіруге болады. Тасу (Drag & Drop) ... ... ... керекті орынға сүйреу арқылы жүзеге асады. Тышқанның
сол жақ батырмасын босатқанда құрауыштың сол жақ жоғарғы ... ... ... ... ... ... ... тағайындалған TControl класының негізгі
сипаттамаларын қарастырайық.
Қасиеті (Properties):
property DragCursor: ... = ... ... тасыған уақыттағы тышқанның көрсеткішінің түрін
анықтайды.
property DragMode: TDragMode;
type
TDragMode = (dmManual,dmAutomatic);
Басқару элементін тасудың режимін ... егер ... ... мәнін қабылдаса, онда басқару элементін тікелей тышқанның
көмегімен тасуға болады, егер dmManual ... мәні ... ... ... ... тасу мүмкін емес.
Оқиғалар (Events):
property OnDragDrop: TDragDropEvent;
Басқару элементіне басқа ... ... ... ... оқиға. Оқиғаның өңдеуіші TDragDropEvent типінен тұрады:
type
TDragDropEvent = procedure(Sender, Source: TObject;
X, Y: Integer) of object;
мұндағы Sender тасылатын ... ... ... ... Source ... ... элементі; X, Y – Source басқару элементін түсірген
сәттегі тышқанның көрсеткішінің координаталары (Sender ... ... ... ... ... Source басқару элементін Sender
объектісіне түсірген кезде ғана өрбиді.
property OnDragOver: TDragOverEvent;
Sender басқару элементінің үстіне ... ... Source ... ... өрбитін оқиға. Оқиғаның өңдеуіші TDragOverEvent
типінен тұрады:
type
TDragOverEvent = procedure(Sender, Source: TObject; X,Y:Integer;
State: TDragState; var Accept: Boolean) of ... Source, X, Y ... ... ... ... ... State – тасу ... күйін анықтайды (dsDragEnter – тасылатын
объект басқару элементіне ... ол ... оны ... ... – тасымалданатын элемент осы басқару элементін ... ...... ... ... элементінің бойымен жылжиды); Accept
– егер Sender объектісі тасымалданған ... ... ... онда
оқиғаның өңдеуіші True мәнін, ал кері жағдайда False мәнін ... ... ... ... элементін тасу аяқталғанда өрбитін оқиға. Оқиғаның
өңдеуіші TEndDragEvent типінен тұрады:
type
TEndDragEvent = procedure(Sender, Target: TObject;
X, Y: Integer) of ... Sender ... ... ... Target – ... ... элементі орналасқан объект; X, Y – тасу аяқталған кездегі тышқанның
көрсеткішінің координаталары. Оқиға кез – ... ... ... ... Sender ... элементін қабылдағанда, қабылдамағанда өрбиді. Соңғы
жағдайда тасылатын басқару ... өз ... ... ... ... басқару элементі тасылғанда өрбитін оқиға. Оқиғаның өңдеуіші
TStartDragEvent типінен тұрады:
type
TStartDragEvent = procedure(Sender: TObject;
var DragObject: TDragObject) of object;
мұндағы Sender – ... ... ... DragObject – тасу кезінде
басқару элементінің кескінін қалыптастыратын арнайы объектіге ... ... nil – ге тең ... яғни құрауыштың өзі тасылатын
болады.
Бұл оқиғалардың барлығы қорғалған, ... ... ... олар
жинақталған болып жарияланады, сондықтан объект инспектрінде пайда болады.
Оқиғалар қажетті түрде жазатын ... ... ... ... ... ... сәйкес оқиғаны өңдеп береді. Бұл ... ... үшін ... ... ... ... тышқанның көмегімен
активтеу керек.
TControl класында сүйреу режимін іске қосатын әдіс анықталған:
procedure BeginDrag(Immediate: Boolean;
Threshold: Integer = -1);
BeginDrag әдісі бағдарламаның ... ... ... ... ... dmManual ... ... Егер DragMode –
dmAutomatic, онда әдіс автоматты түрде ... ... ... - TRUE, онда ... ... DragCursor
қасиетінде берілген түрді қабылдайды және жылжыту тез арада басталады. Егер
Immediate – FALSE, онда тышқанның ... түрі ... ... ... ... Threshold параметрінде көрсетілген пиксель
санына жылжытқанша сүйреу басталмайды. Егер әдісті шақырғанда ... ... онда ... Mouse ... ... ... мәнін қолданады.
Immediate – қа FALSE орнататын болсақ, онда басқару элементі тасу
амалын бастамай – ақ ... ... ... 3.4.1 ... элементін тасуды қамтамасыз ететін бағдарлама.
Басқару элементін тасуды жүзеге асыратын бағдарлама жазайық. Ол үшін
пішінге GroupBox тақырыбы бар ... мен Button ... ... мен оған ... ... пішіннің бойымен жылжытайық.
Батырманы жылжыту үшін оның DragMode қасиетіне dmAutomatic мәнін беру
керек, ал пішін мен панель үшін OnDragDrop және ... ... жазу ... ... ... және ... оқиғаларының
қолданылғанын көрсету үшін батырмалардың аттарын өзгертетін оқиғалардың
өңдеуішін жазу керек.
Тапсырманың шешімін келесі ... ... ... Button1 қасиетінің DragMode қасиетіне dmAutomatic мәнін тағайындайық.
Ол оның жылжуын тікелей тышқанның ... ... ... береді.
2. Пішін тасылатын батырманы ... ... ... ... Ол үшін ... ... ... өңдеуішін
қалыптастырайық.
procedure TForm1.FormDragOver(Sender, Source: TObject;
X, Y: Integer; State: ... var Accept: ... True; ... ... жаңа ... ... ... босатылуына мүмкіндік береді}
end;
3. Пішінге батырманы тасуды аяқтауда ... ... іске ... ... ... құрайық:
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
WITH Source AS TButton DO {Source ... TButton ... ... ... ... ... ... Pointer(Sender); {Батырмаға үлкен құрауыш
беріледі - Parent қасиетіне Sender (басқару элементі
түсірілетін құрауыш) қасиетінің мәні тағайындалады,
оны ... – ала Pointer ... ... X; {Басқару элементінің сол жақ жоғарғы бұрышының
Top:= Y; координаталарына басқару элементі түсірілген
құрауыштың ішіндегі тышқанның көрсеткішінің ... ... ... ... ... үшін OnDragOver және OnDragDrop оқиға
өңдеуішін құрастырайық. Олар пішін үшін ... ... ... ғана ... ... әдістерді меншіктеуді
қолдануға болады.
5. Батырма үшін оны ... басы мен ... ... өңдеуішін
құрастырайық (OnStartDrag және OnEndDrag оқиғалары), олар батырманың атын
өзгертеді.
procedure TForm1.ButtonStartDrag(Sender: TObject; var DragObject:
TDragObject);
begin
WITH Sender AS TButton ... ... ... ... ... TButton ... ... TButton типінің
ұрпағын иемденсе, онда батырмаға«Перемещается»
деген ат беріледі}
END;
end;
6. Аналогиялық түрде батырмаға OnEndDrag оқиғасының өңдеуішін құрайық:
procedure ... Target: TObject; X, Y: ... Sender AS TButton ... ’Не ... ... ... басқару
элементі TButton типін немесе TButton типінің
ұрпағын иемденсе,
онда батырмаға«Не перемещается» ... ... ... Sender - ... ... ... (батырма); Target –
тасылатын басқару элементі түсірілген құрауыш (пішін немесе панель).
Зертханалық жұмыс №9 ... ... ... ... ... тышқанның көмегімен жеке құрауыштардың
арасында ақпаратты тиімді тасымалдауға мүмкіндік береді. Жолды бір тізімнен
екінші тізімге сүйреу тетігін мысалда қарастырайық. ... ... ... ListBox1 және ListBox2 ... ... жоба ... Бірінші
тізімді апта аттарының атымен толтырыңыздар. Келесі қадамдар ... ... ... ... өңдеу мысалдарынан тұрады.
1 этап. Сүйреудің басталуы. Тышқанды сол жақ ... ... ... ListBox1 ... DragMode ... ... яғни ... өзіне осы этаптың өңделуін алады. Егер осы
қасиетке dmManual ... ... онда ... ... ... басын
(мысалы, MouseDown оқиғасы бойынша) және оның тетігін іске ... ... өзі ... ... ... ... Сүйреуді бастау сәтінде
құрауыш OnStartDrag оқиғасын өрбітеді. Осы ... ... ... ... ... ... ... объектіні сүйреу. Тышқанның көрсеткішін құрауыштың
үстінен жылжытқанда болатын сүйреуде ол OnDragOver оқиғасын өрбітеді. ... ... ... ... ... Source - объект —
сүйреудің көзі, X,Y – тышқанның көрсеткішінің ... Accept ... ... ... ... ... ма? жоқ па?, соны ... типтес айнымалы. ListBox2 құрауышының осы оқиғасы үшін келесі жолды
жазыңыздар, ол тек ListBox1 құрауышынан ғана ... ... ... := ... этап. Ақпаратты толық құрауышқа лақтыру. Құрауыштан тышқанның
батырмасын ... ... ... ... ... ... өрбітеді.
Осы оқиғаның өңдеуішіне сүйреу сәйкес келетін қимыл жазылуы керек. Біздің
жағдайда ол ... сол жақ ... оң жақ ... ... ... ... өңдеуішіне ListBox1 тізімінде ерекшеленген
жолды ListBox2 тізіміне қосатын операторды жазыңыздар:
with ListBox1 do ... ... ... ... ... - сүйреудің көзі оны босатқан сәтте
OnEndDrag оқиғасын өрбітеді, оның Target параметрі басқа ... ... ... ... жағдайда ListBox2). Бұл оқиғаның өңдеуішіне бірінші
тізімнен таңдап алынған жолды ... ... және ... ... ... жазыңыздар:
if Target = ListBox2 then
with ListBox1 do Items.Delete(ItemIndex);
Color := clYellow;
Компиляцияны ... және ... ... ... жұмысқа тапсырма №9_1
Екі ListBox тізімінен, Edit құрауышынан, Panel құрауышынан, екі батырмадан
және төрт ... ... жоба ... ... жоба ... ... ... етуі керек:
• жолды Edit құрауышынан екі тізімге тасымалдау;
• жолды бірінші тізімнен екінші тізімге ... және ... ... қара панельге сүйреу арқылы жою;
• файлдағы жолды бірінші тізімде оқу;
• екінші тізімнің жолдарын файлға сақтау.
Көп таңдау жасалғанда барлық ... ... ... ... - тен ... басылған тасымал жасалғанда, көшірме алынады
(тышқанның ... түрі – ... ... ... ... ListBox ... Edit құрауышынан және екі батырмадан тұратын жоба
құрыңыздар. Ерекшеленген сөзді тасымал жасағанда орындалатын функцияларды
іске асыратын бағдарлама ... ListBox1 ⋄ ... ListBox1 – дегі сөз ... ListBox2 ⋄ ... ListBox2 – дегі сөз ... ListBox1 ↔ ListBox2: сөздердің қарапайым тасымалдануы;
• ListBox1 ⋄ Edit1, ListBox2 ⋄ Edit1: ... ... ... Edit1 ⋄ ListBox1, Edit1 ⋄ ListBox2: тышқанның сол жақ пернесі –
тасымал, оң жағы – ... ... ListBox1 ... ⋄ Button1: ... барлық тізімді оқу;
• ListBox1 (ListBox2) ⋄ Button2: барлық ... ... ... ... жасалғанда барлық таңдап алынған жолдарды тасымалдау.
Edit1 – ден көшірмесін алғанда тышқанның көрсеткішінің түрі – crCross.
Ұсыныс :
Edit1 – ден ... ... ... ... ұймдастырыңыздар, яғни
Edit1.DragMode=dmManual орнатыңыздар және Edit1.OnMouseDown өңдеуішіне
келесіні жазыңыздар (бұл толық ... ... and ... ... ... терезелері. Dialogs парағындағы Delphi құрауыштары (Open
Dialog, Save Dialog, Font Dialog және т.б.)
Windows жанұясының ... ... ... ... және ... ... ... және басқаларды таңдауға және баптауға
тағайындалған стандартты ... ... ... Delphi ... да
стандартты диалог терезелерінен тұрады. Ол үшін Delphi – дің ... өз ... ... ... ... ... ... болып
келетін TCommonDialog (Жалпы диалог) бір ата – тек класына қатысты арнайы
кластар ... ... ... ... емес құрауыштардың мысалы
болып табылады. Бұны мынадан байқауға болады, конструктірлеу ... ... ... ... көрінісі бағдарламаның орындалу
барысындағы диалог терезесінің сыртқы көрінісімен сай келмейді.
Delphi - дің диалог ... ... ... ерекшелігі олардың
Windows жанұясының операциялық ... ... ... болады. Мысалы, Delphi - дің ... ... ... ... тілдегі ақпараттан тұрады.
Dialogs – Құрауыштар Палитрасындағы стандартты диалогтардың парағы.
Open Dialog – ашылатын файлдың атын таңдауға ... ...... – TComponent – TCommonDialog.
Ашылатын файлдың атын таңдауға ... ... ... ... ... ... ... Ол компьютердің файлдық жүйесін көруге және
керекті файлдың атын таңдауға ... (3.5.1 ... ... Open Dialog ... ... ... ... ашуға
тағайындалмаған. Ол тек қолданушының таңдаған файлының атын ғана ... ... ... ... ашу Object Pascal ... стандартты
процедураларының көмегімен немесе арнайы әдістермен жүзеге асырылады.
Мұндай әдістер ... TStrings ... ... класының негізгі қасиеттерін қарастырайық.
property DefaultExt: String – егер файлдың ... ... ... ... ... ... ... Бөлетін нүктені
қоспағанда үш символдан тұруы мүмкін.
property FileName: TFileName;
type
TFileName = String;
Ол таңдап алынған файлдың ... ... Ол ат ... ... ... (File Name:) жолына орналастырылады.
property Files: TStrings – ерекшеленген файлдардың аттарының
тізімінен тұрады. ... тек ... ғана ... Filter: String – бір ... ... ... ... тұрады. Файлдық сүзгі – арнайы символдардан тұратын файлдың
атының (файлдың қалқасы) бір немесе бірнеше ... ... *.pas ... ... ... тек қана .pas кеңейткіші бар файлдарды ғана
бейнелеуге ... Filter ... ... ... ... ... тізбегінің жұбы болуы мүмкін. Әрбір осындай жұп ... ... сай ... және өз ... ... ... бөлінген екі
бөліктен тұрады. Бірінші бөлік берілген ... үшін ... ... ... (Files of type:) ... жолында шығатын мәтінді береді, ал екінші
бөлім сүзгінің өзінен тұрады. Сүзгі үтір мен нүкте ... ... ... ... ... ... ... нәтижесінде
OpenDialog1.Filter := Delphi модульдерінің файлдары(*.pas)|*.pas|' +
'Мәтіндік құжаттар (*.txt, *.doc)|*.txt;*.doc';
диалог терезесінің Тип ... ... жолы екі ... ... ... модульдерінің файлдары (*.pas)
және
Мәтіндік құжаттар (*.txt, *.doc)
Бірінші жолға *.pas файлдық сүзгі, ал ... ... *.txt; ... ... сай ... ... бірінші сүзгіні таңдағанда файлды ашу
диалог терезесінде .pas кеңейткіші бар ... ғана ... ал ... ... - .txt ... .doc кеңейткіші бар файлдар бейнеленеді.
Пішінді конструктірлеу кезеңінде Объект Инспектірінен осы ... ... ... ... оның көмегімен көлденең ... ... – ақ ... ... және сүзгінің өзін беруге болады.
property FilterIndex: Integer – ... ... ... ... ... ... ... анықталады. Элементтерді нөмірлеу
бір санынан басталады. Әдетте сүзгінің бірінші элементі қолданылады.
property InitialDir: String – ... ... ... ... ... ... анықтайды. Егер осы қасиеттің мәні тағайындалмаса, онда
ағымды қапшық немесе қолданушының диалог терезесіне ... рет ... ... ... Title: String – ... ... тақырыбын береді.
property Options: TOpenOptions;
type
TOpenOption = (ofReadOnly, ofOverwritePrompt, ... ... ... ... ... ... ... ofNoReadOnlyReturn, ofNoTestFileCreate, ofNoNetworkButton,
ofNoLongNames, ... ... = set of ... диалог терезесінің сипаттамасын орнатады және мән ретінде келесі
шамалардың кез – келгенін ала алады:
ofReadOnly – ... для ... ... ... ... береді
(орнатады),
ofOverwritePrompt – файлды сақтағанда хабарлама шығады, егер мұндай
файл бар ... ... онда ... ... ... – Только для чтения файлының ... ... ... ... ... – бұл мән ... тек бар ... ғана беруге
болады, қарсы жағдайда файл жоқ деген хабарлама
шығады,
ofNoReadOnlyReturn – бұл ... ... ... для ... ... файлды ашуға болмайды деген
хабарлама шығады,
ofAllowMultiSelect – ... көп ... ... ... ашу ... ... қолданғанда ерекше орынды TOpenDialog
класында анықталған Execute әдісі алады.
function Execute: Boolean; override;
Диалог ... ... ... режимде орналастырады. Модальды
режим дегеніміз - қосымшаның орындалуы ... ... ... ... ... True ... қайтарады, егер терезе Открыть
батырмасы арқылы жабылса, және False, егер Отмена батырмасы арқылы жабылса.
TOpenDialog ... ... ... ... ... ... ... TNotifyEvent;
Диалог терезесінің көмегімен қандай да бір қапшық ашылғанда немесе
жабылғанда өрбиді.
property OnSelectionChange: ... файл ... ... ... TNotifyEvent;
Берілген сүзгі бойынша анықталған, диалог терезесінде бейнеленетін
файлдардың типі өзгергенде өрбиді.
Мысал 3.5.1 Button1 ... OnClick ... ... ... файлдың
атын таңдауға арналған диалог терезесін ашады және таңдап алынған
файлдың бірінші жолын Edit1 құрауышына орналастырады.
procedure ... ... F: ... String;
begin
IF OpenDialog1.Execute THEN {Экранға файлды ашу диалог терезесін
шығару}
BEGIN ... ... ... ... ... ... онда ...}
{Диалог терезесінің файл атында таңдап алынған атты файлдық айнымалымен
байланыстыру}
AssignFile(F,OpenDialog1.FileName);
Reset(F); ... ... ... ... ... S ... ... }
Edit1.Text:=S; { Edit1құрауышындағы S жолын ... ... ... 3.5.2 Button2 ... үшін OnClick ... ... ашылатын файлдың
атын таңдауға арналған диалог терезесін ашады және ... ... ... ... ... ... ... TfileName;
begin
WITH OpenDialog1 DO
BEGIN
Filter := 'All files|*.*'+'Text files|*.txt,*.doc';
FilterIndex := 2;
IF Execute THEN
BEGIN
{Таңдап алынған файлды Memo1 құрауышында ашады}
Memo1.Lines.LoadFromFile(FileName);
{ fFileName ... ... ... ... толық атын жазу}
fFileName := OpenDialog1.FileName;
{Файлдың толық атын пішіннің тақырыбына шығару}
Form1.Caption := fFileName;
{Label1 құрауышына толық атынан бөліп алып, ... ... ... ... атын ... := ExtractFileName(fFileName);
END;
END;
end;
Save Dialog – сақталатын файлдың атын таңдау диалог терезесі.
Иерархиясы:
TObject – TPersistent – TComponent – TCommonDialog – TOpenDialog.
Save Dialog ... ... Open Dialog ... өте ... ... айырмашылығы ол файлды сақтауда қолданылады (сурет 3.5.2 көріңіздер).
Сақталатын ... атын ... ... ... TOpenDialog класынан
туындаған және оның барлық сипаттамаларына ие болатын TSaveDialog класының
данасы болып табылады.
TSaveDialog класында ... ... ... ... іс - ... ... ... Execute функциясы анықталған.
Өздерінің құрылымдары және сыртқы бейнесі бойынша Save Dialog ... Dialog ... ... ... аз ... 3.5.3 Button2 құрауышы үшін OnClick оқиға өңдеуіші сақталатын файлдың
атын таңдауға арналған диалог ... ... және ... ... осы ... сақтайды.
procedure TForm1.Button2Click(Sender: TObject);
begin
IF SaveDialog1.Execute THEN
BEGIN
Form1.Caption := SaveDialog1.FileName;
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
END;
end;
Font Dialog – қаріпті таңдау диалог терезесі.
Иерархиясы:
TObject – TPersistent – TComponent – TCommonDialog.
Қаріпті ... Font Dialog ... ... ... ... және оның сипаттамаларын орнатуға мүмкіндік береді ... ... Dialog ... ... TCommonDialog класынан туындаған
TFontDialog класының данасы болып табылады.
TFontDialog класының негізгі қасиеттерін қарастырайық.
property Device: ... = ... ... ... қандай құрылғы үшін қаріп тағайындалатынын анықтайды. Келесі
мәндерді қабылдауы мүмкін:
fdScreen – ... үшін ...... үшін ...... және ... үшін ... қаріп экран үшін беріледі.
property Font: TFont – қаріптің сипаттамаларын ... ... үшін Windows ... ... тіркелген көптікке тиісті қаріп
қолданылады.
property Options: TFontDialogOptions –TFontDialogOptions ... = ... ... ... fdForceFontExist, fdNoFaceSel, fdNoOEMFonts,
fdNoSimulations, ... ... ... ... ... ... ... = set of TFontDialogOption;
Ол диалог терезесінің сипаттамаларын береді және мәні ретінде келесі
шамалардың көптігін қабылдай алады:
fdAnsiOnly – бұл ... ... ... ... ... ... символдарына кіретін
қаріпті ғана таңдауға болады,
fdEffects – бұл параметр тағайындалғанда ... ... ... ... және қайта сызуды анықтайтын Effects
терезесінен және қаріптің түсін анықтайтын Color
терезесінен ... – бұл ... ... және жоқ ... ... дұрыс енгізілмеген туралы хабарлама
шығады,
fdLimitSize – бұл ... ... ... ... ... ... ... болады,
fdApplyButton – бұл параметр тағайындалғанда Применить (Apply)
батырмасы пайда ... ... Integer – ... ... (ең ... ... Егер мәні ... тең болса, онда максимальды ... ... Integer – ... минимальды (ең кіші) өлшемін
береді. Егер мәні нольге тең болса, онда минимальды өлшем ... Dialog және Save Dialog ... ... ... ... ... Execute ... көмегімен активтеледі.
TFontDialog класында бір оқиға – OnApply анықталған .
property OnApply: TFDApplyEvent;
type
TFDApplyEvent = procedure (Sender: TObject; Wnd: HWND) of ... Wnd – ... ... идентификаторы.
Оқиға терезенің Применить (Apply) батырмасына басқанда өрбиді. Бұл
батырма OnApply оқиғасының өңдеуіші бар болғанда немесе Options ... ... ... ... ... 3.5.4 Button1 ... үшін OnClick оқиғасының өңдеуіші қаріпті
таңдау диалог ... ... және ... ... ... ... қаріпіне береді.
procedure TForm1.Button1Click(Sender: TObject);
var F: TextFile;
S: String;
begin
WITH FontDialog1 DO
BEGIN
{Options қасиетіне fdLimitSize параметрін береді}
Options := Options + ... := 14; ... ... ... ... = 14
пункт}
MinFontSize := 8; {Қаріптің минимальды өлшемін береді = 8 ... Execute THEN ... ... ... терезесін активтейді}
Label1.Font:=Font; {Егер терезе ОК батырмасымен жабылса, онда
таңдап алынған ... , ... ... 3.5.5 Бұл мысал пішінде орналастырылған келесі басқару элементтерін
қолданады: Edit, Main Menu, Rich Edit. ... ... ... ... ... ... диалогы активтелінеді. Қолданушы
диалог терезесінің Применить (Apply) батырмасына шерткенде сол сәтте
таңдап алынған қаріптің сипаттамалары ... ... ... ... ... ... fdApplyButton параметрін қосады}
FontDialog1.Options := FontDialog1.Options + [fdApplyButton];
FontDialog1.Execute; ... ... ... ... ... TForm1.FontDialog1Apply(Sender: TObject; Wnd: HWND);
begin
IF ActiveControl IS TEdit THEN {Егер ... ... ... ... ... ( ... оның ұрпақтарының бірі)
болса, онда ...}
WITH ActiveControl AS TEdit ... ... ... ... ... қаріпті таңдау диалог терезесінде
таңдалған сипаттамаларды бекіту}
ELSE IF ... IS ... THEN ... ... басқару элементі
TRichEdit типті объект (немесе оның ұрпақтарының
бірі) болса, онда ... ... AS ... ... {Активті басқару
элементінің ерекшеленген мәтініне қаріпті таңдау
диалог терезесінде таңдалған сипаттамаларды
бекіту}
ELSE
Beep;
end;
Color Dialog – түсті таңдау ... ...... – TComponent – TCommonDialog.
Түсті таңдау диалог терезесі TColorDialog класының данасы ... Ол Windows ... ... ... ... түсті таңдап
алуға және меншік түсті беруге мүмкіндік жасайды (сурет 3.5.4 қараңыздар).
TColorDialog ... ... ... ... Color: TColor – ... таңдап алынған мәндерінен тұрады.
property CustomColors: TStrings – Қолданушымен анықталған 16 ... ... жол ... ... ... Со1оrХ=NNNNNN, мұндағы Х – А –
дан Р – ға дейінгі әріптер, олар түстің нөмірін анықтайды, NNNNNN – ... ... он ... ... Options: ... – диалог терезесінің
сипаттамаларын береді.
Мысал 3.5.6 Button1 құрауышы үшін OnClick оқиға өңдеуіші түсті таңдау ... ... ... және ол ... ... көрінісінің түсіне
береді.
procedure TForm1.Button1Click(Sender: TObject);
begin
IF ColorDialog1.Execute THEN
Form1.Color := ColorDialog1.Color;
end;
Print Dialog – баспа режімін таңдау диалог терезесі.
Иерархиясы:
TObject – TPersistent – ...... ... ... ... ... TPrintDialog класының данасы
болып табылады. Сол және басқа құжаттарды баспаға шығарғанда қолданылатын
параметрлер қатарын беруге мүмкіндік ... Setup Dialog – ... ... ... ......... – TCommonDialog.
Принтердің параметрлерін таңдау диалог терезесі TPrinterSetupDialog
класының данасы болып табылады. Құжаттарды ... ... үшін ... ... қатарын беруге мүмкіндік жасайды. Бұл параметрлер
Windows операциялық жүйесінде анықталған және ... ... ... ... байланысты принтердің параметрлерін баптау
терезесін құрады. Бұл диалог принтердің драйверімен қарым – қатынаста
болады және ... ... ... қайтармайды, сондықтан оның
Execute әдісі функция емес, процедура болады.
Find Dialog – ... ... ... диалог терезесі.
Иерархиясы:
TObject – TPersistent – TComponent – TCommonDialog.
Мәтіннің үзіндісін іздеу диалог ... ... ... ... ... Ол ... сол және басқа үзіндіні анықтауға мүмкіндік
береді (сурет 3.5.5 қараңыздар).
Класс ... ... ... ... ... String – ізделінетін мәтіннің үзіндісінен тұрады.
property Position: TPoint – ... ... ... сол ... ... ... Options: TFindOptions – TFindOptions типті қасиет:
type
TFindOption = (frDown, ... ... ... ... ... frDisableUpDown,
frDisableWholeWord, frReplace, frReplaceAll, ... ... = set of ... ... ... ... ... және мән ретінде келесі
шамалардың кез – келген көптігін қабылдай алады (солардың кейбіреулері):
frHideMatchCase – егер осы ... ... ... және ... ... ... алу қосқышы
шығарылмайды,
frHideUpDown – егер осы ... ... ... ... ... қосқышы шығарылмайды,
frWholeWord – егер осы параметр берілсе, бүтін сөздердің ... іске ... ... бір OnFind ... ... OnFind: ... ... үшін мәтіннің үзіндісін таңдағаннан ... ... ... ... (Find Next) батырмасын басқанда өрбиді.
Мысал 3.5.7. Бұл мысал пішінде орналастырылған: Rich Edit, Button және ... ... ... ... Батырмаға шерткенде мәтіннің
үзіндісін іздеу диалогы активтелінеді (іздеу бағыты – ... ... ... (Find what)жолы толтырылғанда және Найти далее (Find
Next) батырмасы басылғанда алдыңғы таңдаудың ... ... ... құрауышының үлгіге сәйкес келетін жолы ерекшеленгенеді.
procedure TForm1.Button1Click(Sender: TObject);
begin
FindDialog1.Position := Point(RichEdit1.Left + RichEdit1.Width,
RichEdit1.Top);
FindDialog1.Execute; {Мәтіннің ... ... ... терезесін
активтейді}
end;
procedure TForm1.FindDialog1Find(Sender: TObject);
var
FoundAt: LongInt;
StartPos, ToEnd: Integer;
begin
WITH RichEdit1 DO
BEGIN
IF SelLength 0 THEN {Мәтіннің ерекшеленген бөлігінің ұзындығы нольге
тең болмаса, ... ... ... ... басталады, егр ол бар болса}
StartPos := SelStart + SelLength;
{SelStart –мәтіннің ерекшеленген бөлігінің мәтіннің басынан
бастағанда бірінші символын анықтайды ... ... 0 ... ... 0). Егер мәтін ерешеленбеген болса, онда алдында
мәтіндік нұсқағыш орналасқан ... ... := 0; ... ... ... ... басталады}
{ToEnd – Rich Edit құрауышындағы мәтіннің StartPos - тан ... ... ... ... := ... - ... := ... StartPos, ToEnd,
[stMatchCase]);
{FindText –мәтіннен диалог терезесінде берілген жолды іздейді және
сәтті іздеуде оның бірінші символының индексін ...... ... ToEnd – ... ұзындығы, [stMatchCase]
– іздеу кезінде жолдық және бас әріптердің айырмашылықтары
ескерілетінін айтады}
IF FoundAt -1 ... := ... := ... Dialog – ... ... ... және айырбастау
диалог терезесі.
Иерархиясы:
TObject – TPersistent – ......... ... ... және ... диалог терезесі тікелей
TFindDialog класынан туындайтын және оның барлық сипаттамаларына ие ... ... ... ... табылады. Ол мәтіннен сол және басқа
үзіндіні табуға және қажет жағдайда оны басқа үзіндіге ауыстыруға ... ... 3.5.6 ... ... ... ... ... анықталған.
property ReplaceText: String – мүмкін табылған үзіндіге айырбас
жасалатын мәтін анықталады.
Бұл класта тағы ... ... ... ... TNotifyEvent;
Оқиға диалог терезесінің Заменить (Replace) немесе Заменить ... All) ... ... ... 3.5.8 ... ... үшін келесі OnReplace оқиға өңдеуіші
TMemo ... Memo1 ... FindText - ті ... және ... – ке ... Ол TMemo ... SelStart, SelLength
және SelText қасиеттерін қолданады.
procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
var
SelPos: Integer;
begin
WITH TReplaceDialog(Sender) DO
BEGIN
{ Memo1 – дегі FindText ... ... ... ... ... := ... ... функциясы Memo1құрауышының мәтінінің шегіне дейін FindText – ті
іздейді және осы мәтіннің шегіндегі FindText - тің ... ... ... ... ... Егер FindText
табылмаса, онда Pos нөлді қайтарады}
IF SelPos > 0 ... := SelPos - ... := ... := ... ... ... ... ReplaceText
– ке ауыстыру}
END
ELSE
MessageDlg(Concat('Could not find "', FindText, '" in Memo1.'),
mtError, [mbOk], 0);
END;
end;
Open Picture Dialog – ... ... ашу ... ............ – TOpenDialog.
Графикалық файлды ашу диалог терезесі TOpenDialog класынан туындаған
және оның барлық сипаттамаларына ие болатын ... ... ... ... ... ... бар ... таңдауға тағайындалған. Диалог
терезесіне қарау терезесі қосылған, онда сол сәтте ерекшеленген ... ... Filter: String – Windows ... ... файлдары үшін
сүзгілер жиынынан тұрады.
Мысал 3.5.9 Button1 құрауышы үшін OnClick оқиға өңдеуіші ... ... атын ... ... диалог терезесін ашады және
оны Image1 құрауышына орналастырады.
procedure TForm1.Button1Click(Sender: ... ... ... Picture Dialog – графикалық файлды сақтау диалог терезесі.
Иерархиясы:
TObject – ............
TOpenPictureDialog.
Графикалық файлды сақтау диалог терезесі ... ... ... және оның ... ... ие ... класының данасы болып табылады.
Ол графикалық кескінді файлға сақтауға арналған.
Мысал 3.5.10 Button2 батырмасына ... ... ... ... ... арналған диалог терезесі ашылады және ... ... осы ... ... ... TObject);
begin
IF SavePictureDialog1.Execute THEN
Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
end;
Тәжірибелік жұмыс №10 «Мәтіндік редактор»
Қадам 1. Пішінді TextEditor ... атау және ... ... ... (Пішін үшін фирмалық таңбашаны орнатуды, сонымен бірге тақырыбы мен
қосымша үшін де таңбашаны, барлық батырмаларға ... ... ... 2. ... Panel1 құрауышын орналастырыңыздар және оның қасиеттерін
орнатыңыздар (осы және басқа ... не үшін ... ... қарау.)
Align = alTop;
Caption = ’’;
Қадам 3. Пішіге Memo1 құрауышын орналастырыңыздар және оны ... = ... = ... = ... = ssBoth;
HideSelection = False; (фокус басқа құрауышқа өткенде ерекшеленген
мәтіннің ерекшеленуі өшпейді).
Қадам 4. ... ... ... бар OpenDialog1 ... = ... = ... файлы | *.txt’ + ’Все файлы | *.*’;
Title = ’Открытие текстового ... (TRUE – ні ... - ... ... ... ... для чтения”
қосқышы жойылады ”;
ofFileMustExist - егер жоқ файл таңдап алынатын болса, онда қате
туралы хабарлама генерацияланады;
ofNoReadOnlyReturn - егер ReadOnly типті файл ... ... ... ... хабарлама шығады.
Қадам 5. ... ... ... бар ... ... = TXT;
Filter = ’Текстовые файлы | *.txt’ + ’Все ... | ... = ... текстового файла’;
Options (установить в TRUE)
ofHideReadOnly
ofNoReadOnlyReturn
ofOverwritePrompt - бар файл таңдап алынған кезде қате туралы
хабарлама генерацияланады.
Қадам 6. Панелге &Open ... ... ... және ... оқиғасының өңдеуішін жазыңыздар (міндетті түрде әр команданың
мағынасын түсініңіздер)
With OpenDialog1 do
if Execute then ... - ... 7. ... &Save ... ... ... және ... өңдеуішін жазыңыздар:
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
Қадам 8. Панелге Save&As атпен батырманы орналастырыңыздар және OnClick
оқиғасының өңдеуішін жазыңыздар:
With SaveDialog1 ... Execute then ... - ... 9. ... E&xit атпен батырманы орналастырыңыздар және OnClick
оқиғасының өңдеуішін жазыңыздар:
Close;
Қадам 10. ... OnApply ... ... бар ... құрауышын
орналастырыңыздар
Memo1.Font := FontDialog1.Font;
Қадам 11. Панелге &Font атпен ... ... және ... ... жазыңыздар:
With FontDialog1 do
if Execute then Memo1.Font:=Font;
Қадам 12. ... ... ... орналастырыңыздар.
Қадам 13. Панелге Printer Set&up атпен батырманы ... ... ... өңдеуішін жазыңыздар:
PrinterSetupDialog1.Execute;
Қадам 14. Пішінге PrintDialog1 құрауышын орналастырыңыздар
Қадам 15. ... &Print ... ... ... және ... ... жазыңыздар:
var FileOut : TextFile;
k : Integer;
begin
if PrintDialog1.Execute then begin
AssignPrn(FileOut);
Rewrite(FileOut);
Printer.Canvas.Font:=Memo1.Font;
for k:=0 to Memo1.Lines.Count-1 do
Writeln(FileOut,Memo1.Lines[k]);
CloseFile(FileOut)
end;
end;
Принтермен жұмыс істеу процедурасы Printers модулінде орналасқан. Оның ... ... ... ... uses ... ... 16. ... Fi&nd атпен батырманы орналастырыңыздар және OnClick
оқиғасының өңдеуішін жазыңыздар:
FindDialog1.Execute;
Қадам 17. Панелге &Replace атпен батырманы ... және ... ... жазыңыздар:
ReplaceDialog1.Execute;
Қадам 18. Пішінге ... және ... ... және Options ... ... қасиеттеріне TRUE мәнін
орнатыңыздар
frHideMachCase - “С ... ... ... тығып қояды,
frHideWholeWord - “Только слово целиком” қосқышын ... ... - ... ... ... ... тығып қояды.
Қадам 19. FindDialog1 құрауышының OnFind оқиға өңдегішін анықтау:
|Өңдеуіштің мәтіні ... ... ... : PChar; ... ... сипаттамасы.|
|BuffLen : Integer; | ... ... ... төменде |
|With Sender as ... do begin ... ... мен әдістер |
| ... ... ... |
| ... ... Sender |
| ... ... ... ... |
| ... ... |
| ... |Memo1 – дегі ... ... ... |Buff ... ... ... ... BuffLen - ге ... |
| ... ... Buff |
| ... жадыда орын бөлінеді |
| ... ... ... |
| ... |Аналогиялық түрде FT динамикалық |
|StrPCopy(FT,FindText); ... ... ... ... |
| ... |
| ... |P ... іздеудің басқы |
|Memo1.SelLength; ... ... |
| ... |P ... ... үлгісіне сай |
| ... ... ... адресі |
| ... |
| If P=Nil ... ... ... (үлгі |
|then MessageBeep(0) ... жоқ), онда ... ... |
| ... |
| else begin ... егер үлгі табылса, ол |
|Memo1.SelStart:=P-Buff; |Memo1 – де ... ... | ... | |
| ... ... ... ... |
|FreeMem(Buff,BuffLen); ... ... ... | ... | ... 20. ReplaceDialog1 құрауышы үшін OnFind өңдеуішін ... ... ... (Object ... ... ... керек
(сондықтан бұл процедурада FindText іздеу жолы нақты FindDialog1 немесе
ReplaceDialog1 ... ... ... көзі Sender – ден ... 21. ... ... үшін OnReplace оқиға өңдеуішінің мәтінін
енгізу.
|Өңдеуіштің мәтіні ... ... ... do ... ... ... | |
| if ... ... ... үзінді іздеу |
|then ... ... сай ... онда |
| ... құрауышының OnFind оқиға|
| ... ... ... ... сай |
| ... ... ... |
| if ... then Break; |Егер үзінді табылмаса, онда цикл |
| ... |
| ... ... ... ... |
| ... айырбастау. ... not ... in ... ... ... ... режимі |
| ... онда ... ... |
| ... ... ... ... жұмыстан 5 деген баға алам деушілер 3 және 6
пункттерін орындаулары қажет)
1. Панельге келесі функцияларды орындауға ... ... ... ... ... ... 6, 11, 16, 21,|Мәтінді жолдағы сөздер саны бойынша сұрыптау ... | ... 7, 12, 17, ... кері ... қою ... | ... 8, 13, 18, ... ... ... саны ... ... |
|28 | ... 9, 14, 19, ... ... бос орын саны ... ... ... | ... 10, 15, 20, |Жолдарды ереже бойынша қою 0-1, 2-3, 4-5,… ... 30 | |
2. ... ... ... келесілерді сақтауға мүмкіндік беретін
батырманы ... ... ... 7, 13, 19, 25 |Соңғы K жолды ... 8, 14, 20, 26 |Жұп ... ... ... ... ... 9, 15, 21, 27 |L - ден ... K ... ... 10, 16, 22, ... К сөзден тұратын жолды ... 11, 17, 23, ... ... ... жолды ... 12, 18, 24, ... ... өзгеше жолдарды |
K және L ... ... ... SpinEdit ... ... - тегі ... ... жағдайына сай келуі керек).
3. Панельге файлдан (файлдың аты диалог терезесінде анықталады) 2 – ... ...... ... вариант) берілген жолдарды
есептеуге мүмкіндік беретін батырманы қосу. Жолдар бар ... ... оған ... ... ... ... N – ші ... – қолданушының таңдауына қарай). Барлық баптау диалогтың уақытында
негізгіні айырбастайтын диалог панельінде анықталады. ... ... де ... ... ... түсін таңдауға тағайындалған батырманы қосу.
5. TMainMenu құрауышының ... ... ... ... ... оған ... ... барлық батырмаларының функциясын саналы
түрде орналастырыңыздар (Әрине, бұл функцияларды ... ... ... OnClick оиғасының дайын өңдеуішін тағайындауға (атын ... ... ... ... 5 ... баға алам ... жобада қосымшаның 2
және 3 пункттерін іске асырулары қажет ... ... Memo - ... ... ... ... ғана ... болатын
қасиеттердентұрады.
|Қасиет |Мән ... ... ... үзіндісі ... ... ... ... ... ... ... бірінші символының нөмірі, барлық |
| ... ... ... Егер ... жоқ ... онда |
| ... ... мәтіннің ішінде ... |TRUE, егер ... ... |
2. ... ... код Memo1 ... ... ... ... мүмкіндік береді:
var X,Y : Integer;
begin
Y:=Memo1.Perform(EM_LINEFROMCHAR, Memo1.SelStart, 0);
X:=Memo1.Perform(EM_LINEINDEX, Y, ... Memo1 ... ... ... үшін ... ... ... болады:
Memo1.Perform(EM_UNDO, 0, 0);
Әрекетті болдырмау мүмкіндігін тексеру үшін функцияның ... ... ... 0, ... Delphi - дің кескінді құруға ... ... ... Timer – ... ... – де ... құру ... анықтайтын бірнеше кластар
анықталған. Олардың қатарына қаріп (TFont ... ... (TPen ... қалам (TBrush класы) және канва (TCanvas класы) жатады. Бұл кластар кез
– келген суретті бейнелеуге, ... ... ... де ... ... ... ... барлығы қандай да бір басқа құрауыштың құрамында
қолданылады.
TFont, TPen және TBrush кластарының ... ата – тек ... ... ... ... бар, ол өз кезегінде TPersistent
класының ұрпақ класы болып ... TCanvas ... ... ... ... ... ... табылады.
TGraphicsObject класының графикалық объектілері.
TGraphicsObject – абстрактілі класс, ол кескінді де ... ... ... ең ... ... ... Ол ... ұрпақ
кластарында қолданылатын OnChange оқиғасын анықтайды.
property OnChange: TNotifyEvent;
type
TNotifyEvent = procedure (Sender: TObject) of object;
Сәйкес келетін сурет салу ... бар ... ... ... ... ... Бұл ... графикалық құрауыштың
кескінін өзіне жаңадан енгізілген қасиеттерге байланысты қайта салуға дабыл
береді. TGraphicsObject класының ұрпақ ... ... ... келесі
құрауыштарда – қаріп, қарындаш және қыл қаламда бұл қасиеттер бар. ... салу ... ... ... ... қарастырылып
отырған кластың басқа жалпы сипаттамасы жоқ, ал нақты ... ... ... өздерінде бейнеленген.
Delрhi – де ... ... ... салуға тағайындалған
құрауыштар бар:
Image - ... ... ... ... ... ыңғайлы құралды көрсетеді.
Shape - ... ... ... ... ... дөңгелек, эллипс және т.б. салу үшін қолданылады.
PaintBox - бағдарламаның ... ... ... канвасы
Canvas – та қарапайым суреттерді құруға мүмкіндік береді.
Сонымен қатар біз осы ... ... ... ... ... Timer құрауышын қарастырамыз. Ол графикалық кескіндерді
құруға ... және ... ... ... ... Бізде ол
графикалық құрауыштардан тұратын қосымшаны құрған кезде қолданылады.
TFont класы.
Класс TFont – графикалық ... ... ... ... ... Осы кластық типті иемденетін қасиеттер қандай да бір
мәтіннен ... кез – ... ... ... TFont ... ... келесі қасиеттердің көмегімен беріледі:
property Charset: TFontCharset nodefault – қаріп символдарының тобын
анықтайды. Ол TfontCharset типтен тұрады:
type
TFontCharset = 0..255;
Кейбір ... Charset ... ... ... ... үшін ... қолданылатын) қасиеттің мәні нөлге тең
(ANSI_CHARSET тұрақтысы).
Орыс тіліндегі бағдарламалар үшін қасиеттің мәні 1-ге ... ...... ... ... аты Name және ... Size арқылы беріледі. Егер сипатталып отырған
қаріпке жүйеде ... жоқ ... онда Windows оны ... ... және 204 ... константасы –кириллица символдары).
255 мәні (OEM_CHARSET тұрақтысы – символдар тобы операциялық жүйенің
кодтық ... ... ... MS-DOS - тың ... ... Color: TColor – символдар түсін аықтайды.
property Height: Integer – қаріптің биіктігін ... ... Name: ...... атын ... ... типі – 32
символға дейінгі жол.
type
TFontName = type string;
property Size: Integer – ... ... ... ... ... ... = 1/72 ... Style: TFontStyles –TFontStyles типті қасиет.
type
TFontStyle = (fsBold, fsItalic,fsUnderline, fsStrikeOut);
TFontStyles = set of TFontStyle;
Ол қаріптің типін береді және мән ... ... ... шамаларын
қабылдайды:
fsBold – жартылай қою,
fsItalic – курсив,
fsUnderline – асты ...... ... 3.6.1 Көптікті қолдану. OnClick оқиғасының өңдеуіші Button1 құрауышы
үшін Memo1 құрауышындағы қаріпті – ... қою ... ... ... ... Styles: ... := ... := Styles + [fsBold, fsItalic];
Memo1.Font.Style := Styles;
end;
немесе
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Font.Style := [];
Memo1.Font.Style := Memo1.Font.Style+[fsBold, fsItalic]
end;
Delphi – дегі ... тек ... ... ... ...... сипаттамаларын береді, оның көмегімен
әртүрлі сызықты немесе жиектемелі бейнелер ... ... ... ... ... ... болады:
property Color: TColor – қарындаш арқылы салынатын сызықтың түсін
анықтайды. Үнсіздікпен түсі ... Mode: TPenMode ... ... қасиет:
type
TPenMode = (pmBlack, pmWhite, pmNop, pmNot, pmCopy, pmNotCopy,
pmMergePenNot, pmMaskPenNot, ... ... ... pmMask, pmNotMask, pmXor, pmNotXor);
Ол қарындаш арқылы салынатын сызықтың стильін анықтайды. Келесі
мәндерді қабылдай алады:
pmBlack - ... қара ... ... - ... ақ ... ... - ... сызық;
pmNot - экранның түсіне терістік болып табылатын түс;
pmCopy - Color ... мәні ... ... - Color ... ... түске терістік болып
табылатын түс;
және т.б.
Үнсіздік бойынша сызықтың түсі Color қасиеті арқылы ... Style: ...... ... ... = (psSolid, psDash, psDot, psDashDot, psDashDotDot,
psClear, psInsideFrame);
Ол қарындаш ... ... ... ... ... ... қабылдауы мүмкін:
psSolid - тегіс сызық (мәні үнсіздік бойынша);
psDashe - үзік сызықты ... - ... ... - үзік ... ... ... - екі пунктирлі үзік пунктирлі сызық;
psClear - невидимая линия;
psInsideFrame - ... ... ... ... Width: Integer – салынатын сызықтың қалыңдығын анықтайды.
Үнсіздік бойынша қалыңдығы 1 ... тең деп ... ... ...... аймақты бояуға арналған қыл қаламның
сипаттамасының анықтамасынан тұрады. Қыл ... ... ... Bitmap: TBitmap – Bitmap ... 8х8 ... өлшемнен
тұратын, кескінді биттік бейнелейтін TBitmap ... ... ... Bitmap бос болмаса, онда толтыру шаблоны Style қасиетінде ... ... ... ... ... ... nil ... тұруы керек.
Мысал 3.6.2 Келесі бағдарламалық код нүктелік суретті файлдан іске қосады
және оның қыл қаламына Form1 ... Canvas ... ... ... := ... := ... := ... Color: TColor – қыл қаламның түсін анықтайды. Үнсіздікпен
берілетін түс ақ түс ... ... Style: ... –TBrushStyle типті қасиет:
type
TBrushStyle = (bsSolid, bsClear, bsHorizontal, bsVertical,
bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross);
Ол қыл ... ... ... Келесі мәндерді қабылдауы
мүмкін:
bsSolid - ... ... - ... ... - ... сызықтар;
bsVertical - вертикаль сызықтар;
bsFDiagonal - сол жақ ... ... - оң жақ ... ... - ... - ... ... класы.
TCanvas класы – Canvas объектісін анықтайды, ол ... ... ... ... ... және ... ... сурет салуға
болатын құрал – саймандарды береді: қаріп (TFont класы), қарындаш ... және қыл ... (TBrush ... TCanvas ... ... ... болып табылмайды және әртүрлі ... ... ... ... ... пішін. Canvas: TCanvas қасиеті бар кез – келген
құрауышқа сурет салуға болады.
Канва жеке ... - ... ... ... ... горизонталь
және вертикаль координаталардан тұрады. Координаталар басы яғни ... бар ... ... сол жақ ... бұрышында орналасады.
Горизонталь осьі солдан оңға қарай ... ал ... ... ... Канваның өлшемі құрауыштың ... мен ... ... Image құрауышы үшін канваның өлшемі Height және ... ... үшін ... және ... ... ... анықталады.
Канвада көрінбейтін меңзер бар, ол қарындаштың ... ... ... ... ... суреттерді салу – сызық, шеңбер,
тіктөртбұрыш және т.б. – осы меңзердің ағымды жағдайынан ... ... ... ... ... ... TCanvas ... меңзерді
берілген жағдайына орналастыратын әдістер анықталған.
TCanvas класының негізгі қасиеттерін ... Brush: TBrush – ... қыл ... орнатады.
property Font: TFont – канваның қаріпін орнатады.
property Pen: TPen – канваның қарындашын орнатады.
property PenPos: TPoint – ... ... ... ... ... 3.6.3 ... бағдарламалық код Label1 құрауышына пішінде көрінбейтін
меңзер тұрған жағдайдан бастап ... ... және жаңа ... ... бастап шығарады.
begin
Label1.Caption := '('+IntToStr(Form1.Canvas.PenPos.X)+';'+
IntToStr(Form1.Canvas.PenPos.Y)+')';
Form1.Canvas.PenPos := Point(50,50);
end;
property Pixels[X, Y]: TColor – канваның барлық ... ... X және Y ... ... 3.6.4 ... ... (10,10) ... пиксельмен қызыл түс
береді.
begin
Form1.Canvas.Pixels[10,10] := clRed;
end;
Мысал 3.6.5 Пішінде координатасы (15,20) нүктеге ... ... ... береді.
begin
Form1.Canvas.Pixels[15,20] := Canvas.Pen.Color;
end;
TCanvas класында барлық мүмкін геометриялық фигураларды салуға
тағайындалған әртүрлі әдістер анықталған. ... ... ... ... жиектелген (яғни, ішкі аймағында бояуы жоқ) және боялған (ішкі
аймағында бояуы бар) деп бөлуге болады. Жиектемелі ... ... ... Pen ғана ... (сызықтың түсі, қалыңдығы және т.б.). Егер
фигура боялған болса (мысалы, эллипс, ... онда оның ішкі ... ... (түс, орнамент және т.б.) Brush қыл қаламымен
боялады. Мәтіндер Font ... ... ... ... ... ... және т.б.) бейнеленеді. Бағдарламаның орындалуы барысында
Pen, Brush және Font ... ... ... ... ... ... ... өзгертулер сурет салу үрдісін қолданғанға дейін орындалуы
қажет.
Қарапайым графикалық кескіндерді ... ... ... ... Arc(X1, Y1, X2, Y2, X3, Y3, X4, Y4: ... жақ ... бұрышының координатасы (X1, Y1) және оң жақ төменгі
бұрышының координатасы (X2, Y2) тіктөртбұрыштың ішіне ... ... ... Доға эллипстің центрі және (X3, Y3) нүктесі арқылы өтетін
түзумен қиылысқан нүктеден ... да, ... ... және (X4, ... ... ... ... эллипспен қиылысу нүктесінен аяқталады.
procedure Chord(X1, Y1, X2, Y2, X3, Y3, X4, Y4: ... ... ... ол ... ... ... ол тура
Arc доғасы сияқты тұрғызылған және басын аяғымен қосатын ... ... ... Y1, X2, Y2: ... ... жақ ... бұрышының координатасы (X1, Y1) және оң жақ төменгі
бұрышының координатасы (X2, Y2) ... ... ... ... ... Rect: TRect);
Rect тіктөртбұрышын Brush қыл қаламымен бояйды.
procedure FloodFill(X, Y: Integer; Color: TColor; ... = ... ... қыл қаламымен канваның бетін (X, Y) координатасы бар нүктеден
бастап бояйды. Егер FillStyle ... fsBorder ... ... ... бет жағы Color ... ... ... боялады немесе
FillStyle параметрі fsSurface мәнінен тұрса, онда ... бет ... Color ... берілген түске боялады.
procedure LineTo(X, Y: Integer);
PenPos қасиетінде анықталған ... ... ... ... ... (X, Y) ... ... дейін Pen қарындашы арқылы сызық
сызады.
procedure MoveTo(X, Y: ... ... (X, Y) ... бар ... ... ... 3.6.6 Form құрауышы үшін OnMouseDown оқиға өңдеуіші пішіннің сол жақ
жоғарғы бұрышынан бастап тышқанмен шерткен нүктеге дейін қызыл ... ... ... TObject; Button: ... ... X, Y: Integer);
begin
Form1.Canvas.Pen.Color:=clRed;
Form1.Canvas.MoveTo(0,0);
Form1.Canvas.LineTo(x,y);
end;
procedure Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Longint);
Эллипстің секторын сызады. Эллипстің ... Arc ... ... ... Y1, X2, Y2: Integer); overload;
Сол жақ жоғарғы бұрышының координатасы (X1, Y1) және оң жақ ... ... (X2, Y2) ... ... ... Y1, X2, Y2, X3, Y3: Integer);
Сол жақ жоғарғы бұрышының координатасы (X1, Y1) және оң жақ төменгі
бұрышының координатасы (X2, Y2) ... ... ... X3 және Y3 осьтері бар эллипстің бөліктерімен дөңгелектенген.
procedure TextOut(X, Y: Integer; const Text: String);
Канваның бетіне Text ... (X, Y) ... ... ... ... ... (X, Y) болатындай етіп канваның ... ... ... Font қаріпінің сипаттамалары арқылы беріледі, ... - Brush қыл ... ... ... ... ... ... қайта салу керек болған жағдайда ... ...... ... ... және қыл қаламды стандартты
қасиеттер ... ... ... ... беріледі)).
function TextHeight(const Text: String): Integer;
Font қаріпінде анықталған, Text мәтінінің ... ... ... Text: String): ... ... ... Text мәтінінің ұзындығын пиксельмен
қайтарды.
TCanvas класында OnChange және ... ... ... ... TNotifyEvent;
Канвада өзгеріс болар алдында өрбитін оқиға. Яғни канваның түрін
өзгертетін, TCanvas ... ... және ... ... ... ... ... өзгеріс болғаннан кейін бірден өрбитін оқиға.
Image құрауышы.
Иерархиясы:
TObject – TPersistent – TComponent – TControl – ... ... ... Additional.
TImage класының Image құрауышы пішінге қандай да бір суретті
орналастыру үшін ... ... ... биттік карта болуы мүмкін
(.BMP кеңейткіші бар ... ... (.ICO ... бар ... (.WMF ... бар файл).
TImage класы TGraphicControl класының тікелей ұрпақ ... ... ... ... ... элементтер класына жатады. Туындаған
қасиеттерімен қатар TImage класында келесі қасиеттер анықталған:
property Canvas: TCanvas – бағдарламаның орындалуы барысында ... ... Center: Boolean – егер ... TRUE ... ие ... ... құрауыштың центрі бойынша теңестіріледі, қарсы ... ... сол жақ ... ... орналастырылады. Үнсіздікпен FALSE
мәніне тең болады.
property Picture: TPicture – құрауышта ... ... Stretch: Boolean – егер ... мәні TRUE ... онда
Picture қасиетінде анықталған кескін құрауыштың өлшеміне дейін үлкейтіледі
немесе кішірейтіледі. Үнсіздікпен мәні FALSE – ге тең.
Басқа графикалық ... ... ... Image ... ... ... ... оқиғаларды өңдейді. Үнсіздік белгісі бойынша оқиға
жоқ немесе анықталмаған.
Жобалау барысында ... Image ... ... кескіннің
тапсырма терезесін қолдануға болады. Бұл терезе құрауыш белсенді болғанда
немесе Объекті ... Picture ... ... ... ... тапсырма терезесінің негізгі өрісі таңдап ... ... ... Сонымен бірге терезеде келесі ... - ... ... іске қосу үшін;
Save - бейнені файлға жазу ... - ... ... ... жою ... - ... алынған бейнені құрауышқа жазу үшін;
Cancel - енгізілген өзгерісті қайтару үшін.
Shape құрауышы.
Иерархиясы:
TObject – TPersistent – TComponent – TControl – ... ... ... ... ... ... болып құрауыш – фигуралар – дөңгелек, эллипс,
тіктөртбұрыш және т.б. табылады. Бұл ... ... ... үлгі
беру үшін қолданылуы мүмкін.
TShape класы тікелей TGraphicControl ... ... ... ... және TImage ... сияқты графикалық басқару элементтерінің
қатарына кіреді. Туындалған қасиеттермен қатар TShape ... ... ... Brush: TBrush – ... бетін бояуға тағайындалған қыл
қаламды анықтайды.
property Pen: TPen – фигураның жиектерін ... ... ... Shape: TShapeType – TShapeType типті қасиет:
type
TShapeType = (stRectangle, stSquare, stRoundRect, stRoundSquare,
stEllipse, stCircle);
Экранға шығатын ... ... - ... - ... - бұрыштары дөңгелектенген тіктөртбұрыш;
stRoundSquare - ... ... ... - эллипс;
stCircle - дөңгелек;
Shape құрауышы үшін ... ... ... ... ... Box ... ... – TPersistent – TComponent – TControl – TGraphicControl
Құрауыштар Палитрасының ... ... ... Paint Box ... ... шектелген аймағында
сурет салуға мүмкіндік береді. Сурет салуға канваның барлық мүмкіндіктері
қолданылады – қаріп, қарындаш, қыл қалам, сонымен қатар бағдарламаның
орындалу барысында геометриялық ... ... ... ... ... TGraphicControl класының ұрпақ класы болып табылады
және бұрын қарастырылған графикалық құрауыштармен қатар ... ... ... ... класындағы анықталған сипаттамалардың ішінен OnPaint
оқиғасын ерекшелейік:
property OnPaint: TNotifyEvent;
Құрауыш ... ... ... ... Box ... үшін ... оқиға болып OnClick оқиғасы
табылады.
Timer құрауышы.
Иерархиясы:
TObject – TPersistent – TComponent.
Құрауыштар Палитрасындағы Парақ: System – жүйелік деңгейде жұмыс
істейтін ... ... ... ... ... емес ... ... табылады,
сондықтан оны көмекші құрауыштар қатарына жатқызуға болады. Таймер бір
берілген уақыт ... ... ... да бір ... ... ... ... қасиеттерін қарастырайық.
property Enabled: Boolean – Егер қасиет TRUE мәніне ие болса, онда
таймер OnTimer ... ... әсер ... Interval: Cardinal – Уақыт интервалын миллисекундпен
анықтайды, одан кейін OnTimer оқиғасы пайда болады. Үнсіздікпен 1000
(1 секунда) – ға тең.
Сонымен ... TTimer ... OnTimer ... ... OnTimer: TNotifyEvent;
Периодты түрде Interval қасиетінде анықталған уақыт интервалы біткен
сайын өрбіп отырады. Ол ... ... ... ... табылады.
Мысал 3.6.7 Келесі оқиғаны өңдеуіш OnTimer таймерінің оқиғасына жауап
береді, ол белсенді басқару элементін бір ... оңға ... ... TObject);
begin
Timer1.Interval := 100;
IF ActiveControl nil THEN
ActiveControl.Left := ActiveControl.Left + 1;
end;
Мысал 3.6.8 Келесі оқиғаны өңдеуіш OnTimer ... ... ... ол белсенді басқару элементін оң жаққа бір ... оң жақ ... ... ... сол жақ шекараға беріледі
және қозғалыс ары қарай орындалады.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Interval := 10;
IF ActiveControl nil THEN
IF ActiveControl.Left+ActiveControl.Width

Пән: Информатика
Жұмыс түрі: Материал
Көлемі: 112 бет
Бұл жұмыстың бағасы: 500 теңге









Ұқсас жұмыстар
Тақырыб Бет саны
Автоматты жүйелерді жобалау пәнінен электронды оқулық жасау74 бет
Borland Delphi-де калькулятор бағдарламасын құрастыру11 бет
Delphi - де «Мозаика» ойын бағдарламасын жазу әдістері35 бет
Delphi 7 ортасында Калькулятор бағдарламасын құру23 бет
Delphi бағдарламалау ортасына сипаттама48 бет
Delphi бағдарламалау тілі13 бет
Delphi бағдарламалау тілінде проектіні құрастыру22 бет
Delphi бағдарламалық ортасында «Pascal бағдарламалау тілінде файлдармен жұмыс істеу» электрондық оқу құралынжасап шығару19 бет
Delphi бағдарламасында Шымкент қалалық жол полициясының деректер қорын жобалау21 бет
Delphi бағдарламасындағы массивтер12 бет


Исходниктер
Пәндер
Көмек / Помощь
Арайлым
Біз міндетті түрде жауап береміз!
Мы обязательно ответим!
Жіберу / Отправить


Зарабатывайте вместе с нами

Рахмет!
Хабарлама жіберілді. / Сообщение отправлено.

Сіз үшін аптасына 5 күн жұмыс істейміз.
Жұмыс уақыты 09:00 - 18:00

Мы работаем для Вас 5 дней в неделю.
Время работы 09:00 - 18:00

Email: info@stud.kz

Phone: 777 614 50 20
Жабу / Закрыть

Көмек / Помощь