Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Агрегатты функциялар 4 страница
Сонымен Пішінге кө рінбейтін ListBox орнатып, пішіндегі оның кө рінбей тұ рғ ан орнын шертің із, сонда обьектілер инспекторында оның қ асиеттері кө рінетін болсын жә не Events астарына кө шің із. Осындағ ы OnClose ө ң деуішін шертіп, шық қ ан кодтар терезесіне мынаны жазың ыз:
begin
Міне осы ө ң деуіш пішіннің экрандағ ы орнын сақ тайды. Енді бағ дарлама жү ктелген кезде пішінді орнына орналастыратын ө ң деуіш жазайық. Ө ң деуіш жобасының oncreate оқ иғ асын қ ұ рың ыз. Бұ л оқ иғ а ОЖ арқ ылы пішінді қ ұ ру сә тінде пайда болады. Міне осы сә тте оғ ан қ ажетті қ асиеттерді меншіктеу қ ажет. Соның бағ дарламасын жазайық:
begin
Файлдың бар-жоқ тығ ын ерекше жағ дайларды бақ ылаудың кө мегімен де орындауымыз мү мкін. Арнаулы оператордың кө мегімен оны ұ стап алып, бағ дарламада қ ате кетірмеуге болады. Кә сіби бағ дарламалардың Windows реестрінде ө з орны сақ талады. Оғ ан да келерміз. ә зірше бұ л кіріспені аяқ таймыз.
Дә ріс №2. Файлдармен тікелей жұ мыс. Дә ріс жоспары: 1. Файлдармен жұ мыс ә рекеттері; 2. Файлдарды ашу, жабу операторлары. Кілттік сө здер: оператор, объект, айнымалы. Иллюстрациялық материал: слайд Delphi жү йесіндегі файлдармен жұ мыс технологиясы ә рекеттердің белгілі бір ретін орындауды талап етеді: 1. Ең алдымен файл ашылуы тиіс. Жү йе басқ а қ олданбалар-дың файлдармен жұ мыс істеуге кедергі келтірмеуін бақ ылайды. Осы кезде файл қ андай режимде – ақ параттар-ды ө згерту немесе оны тек есептеу ү шін ғ ана ашыла ма, сол бірге анық талады. Файл ашылғ ан соң бағ дарламағ а ө ң деу-дің барлық процедураларында осы файлды кө рсетуге қ олданылатын оның идентификаторы орнына қ айтарылады. 2. Файлмен жұ мыс басталады. Ол файлды жазу, есептеу, іздеу жә не басқ а да операциялар болуы мү мкін. 3. Файл жабылады. Енді ол басқ а қ олданбалар ү шін тағ ы да шектеусіз қ ол жетімді болады. Файлдың жабылуы оғ ан енгізілген барлық ө згерістердің сақ талуына кепілдік береді. Delphi-де файлдармен жұ мыстың бірнеше тә сілдері жү зеге асырылады. Қ азір біз файлдық айнымалыны пайдалануғ а байланысты стандартты тә сілмен танысамыз. Файлдық айнымалы файлды кө рсету ү шін енгізіледі. Ол File тү йінді сө зінің кө мегімен жасалады: Var F: File; Осылайша сипатталғ ан файлдық айнымалы типтелмеген деп саналып, файлдың белгісіз қ ұ рылымдармен жұ мыс істеуіне мү мкіндік береді. Мә ліметтер файлды ашқ ан кезде блок бойынша мө лшері 1 байттан бастап есептеледі жә не жазылады. Алайда кө бінесе бірың ғ ай жазбалардан тұ ратын файлдар пайдаланылады. Мұ ндай файлдарды сипаттау ү шін жоғ арыдағ ы сипаттамағ а жазбаның типі кө рсетіліп, былай толық тырылады Var F: File of жазба_типі; Тип ретінде базалық типтерді немесе ө зіндік типтерді қ олдануғ а болады. Мұ нда тип ү шін байтпен алынғ ан дә л мө лшер болуы маң ызды. Ө йткені осыдан бұ рын айтылғ андай, String типі таза тү рінде емес, тек String[N] тү рінде ғ ана қ олданыла алады. Файлдан есептелген немесе файлғ а жазылғ ан мә ліметтер кә дімгі айнымалылардың қ ұ рамында болады, ол айнымалы да файлдық айнымалының типіндей болуы тиіс. Сондық тан бағ дарламада алдымен қ ажетті типті сипаттап алып, сонан соң барып осы типтегі файлдық жә не кә дімгі екі айнымалыны енгізейік:
Файлды ашу ү шін, оның орны кө рсетілуі қ ажет. Ол ү шін файлдық айнымалы оның адресі бойынша анық талатын тиісті файлмен байланысты болуы тиіс. Файл адресі дискі мен каталогы кө рсетілген('C: \Мои документы\Мои рисунки\FileName.ini') – абсолютті немесе салыстырмалы болуы мү мкін. Салыстырмалы адресті тиісті кең ейтілімі бар файлдың аты арқ ылы кө рсету жеткілікті. Оны AssignFile операторы арқ ылы былай сипаттауғ а болады:
AssignFile(SaveF, 'C: \Мои документы\Мои рисунки\FileName.ini');
Енді файл ашылуы тиіс. Файлдың Rewrite операторы арқ ылы ашылуы оның қ айта қ ұ рылуына алып келеді, яғ ни бұ л бұ рынғ ы файл ескертусіз жойылады да, оның орнына берілген типтегі мә ліметтерді жазуғ а дайын жаң а файл қ ұ рылады деген сө з. Егер файл жоқ болса, онда ол жаң адан жасалады. Файлды Reset операторымен ашқ анда ол бұ рынғ ы файлды мә ліметтерді есептеу немесе оларды жазу ү шін ашады жә не оның кө рсеткіші файлдың басына орнатылады:
Rewrite(SaveF);
Осы операторлардың ә рқ айсысының типтік емес файлдар ү шін мағ ынасы болатын міндетті емес екінші параметрлері болуы мү мкін жә не ол мұ ндай файлдың жазба ұ зындығ ын байтпен былай кө рсетеді:
Rewrite(SaveF, 1);
Read(SaveF, SaveV); Write(SaveF, SaveV); Файлды оқ у мен оғ ан жазу кө рсеткіштің ағ ымдағ ы позициясынан бастап жү ргізіледі де, содан соң кө рсеткіш келесі жазбағ а барып орналасады. Керекті файлдың бар-жоқ тығ ын FileExists операторы арқ ылы тексеруге болады:
if FileExists('FileName.ini')
Файлды біртіндеп оқ у кезінде кө рсеткіш файлдың соң ына жетеді де, ә рі қ арай оқ у кезінде «қ ате» туралы хабарлайды. Осы қ ате шық пау ү шін, файлдың соң ына жеткен-жетпегенін тексеруге EOF операторын пайдалануғ а болады:
while (not EOF(SaveF)) do
Файлдағ ы барлық жазбаны (кө рсеткіштің тұ рғ ан жерінен файлдың соң ына дейін) Truncate(SaveF) операторы қ иып тастауғ а(ө шіруге не қ ажет болса, жоюғ а) мү мкіндігі бар. Файлмен жұ мыс істеп болғ ан соң оны жабу керек. Оны CloseFile(SaveF); операторы атқ арады. Енді тақ ырыптың бірінші бө ліміндегі экрандағ ы ө з орнын сақ тайтын бағ дарламаны ө згертуімізге болады. Мұ нда жоғ арыдағ ы суретте келтірілгендіктен, сипаттауды қ алдырамыз. Пішіннің OnCreate оқ иғ асын ө ң деушіні қ ұ райық:
procedure TForm1.FormCreate(Sender: TObject); end;
Енді OnClose оқ иғ асын ө ң деушіні қ ұ райық:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); //тексерудің қ ажеті жоқ, оны қ айта қ ұ рамыз.
Файл осы жағ дайда есептеледі де, ө зіміз кө рсеткен орынғ а жазылады. Алайда бұ л жерде жұ мыс істейтін бағ дарламадан керекті файлды таң дап ала білу қ ажет. Ол туралы тақ ырыптың соң ғ ы бө лігінде айтатын боламыз.
Дә ріс №3. Менюмен жұ мыс Жоспар: Негізгі жә не контексті меню. Меню қ ұ растырушысы. Менюді динамикалық тү рде баптау. Кілттік сө здер: MainMenu, PopupMenu, қ асиеттер, оқ иғ алар, ә дістер Иллюстрациялық материал: слайд
Меню деп арқ айсысы қ андай-да бір команданы білдіретін немесе ішкі менюден тұ ратын, атқ аратын жұ мыстарына байланысты топтастырылғ ан тізімді айтады. Ә детте қ осымшаларда бір бас(негізгі) жә не бірнеше жанама(контекстік) менюлер болады. Бас меню (Т MainMenu типті объект, компоненттер палитрасының Standart бетінде орналасқ ан)- қ осымшаның бү кіл жұ мысын басқ ару ү шін қ олданады, ал контекстік меню (Т PopupMenu типті обьект) интерфейстің жеке элементтерін басқ ару ү шін қ олданылады.Олардың негізгі қ асиеттері:
Негізгі меню форма тақ ырыбының тө менгі жағ ында орналасады жә не қ осымшаның жалпы командаларынан тұ рады. Delphi-да негізгі меню - Main Menu компонентi болып табылады. Негізгі менюдiң сыртқ ы тү рi жол болып табылады, сондық тан оны жолдық деп те атайды. Контекстi меню тышқ анның оң жақ тағ ы батырмасын басқ анда шығ ады, кейбiр басқ ару элементтерiнiң облысында орын алмастыру кезiнде шығ ады. Контекстi меню тегiнде меню шақ ырғ ан объектiге ә сер ететiн команданы ұ стап тұ рады, сондық тан мұ ндай менюдi локальды (жергілікті) меню деп атайды. Delphi-де контекстi меню PopupMenu компонентiмен беріледі. PopupMenu-дiң мынандай қ асиетi бар: Boolean типтi AutoPopup қ асиеті - тышқ анның оң жақ батырмасын шерткен кезде жанама менюдің шығ уын анық тайды. Егер AutoPopup қ асиетi True мә нге ие болса, онда контекстi меню тышқ анның оң жақ батырмасын басқ анда автоматты тү рде шығ ады. Егер AutoPopup қ асиетi False мә нге ие болса, онда меню автоматты тү рде шық пайды. Мұ ндай жағ дайда менюдi активтендiру ү шiн программа бойынша Popup ә дiсiн қ олдануғ а болады. Popup процедурасы (мґндағ ы х пен у монитор экранының оң жоғ ары жақ бұ рамына қ арағ анда меню координаты) экранғ а кө рсетiлген контекстi менюдi алып шығ ады. Мысалы: PopupMenul. Popup(200, 200); TpopupAlignment типтi Alignment қ асиеті – тышқ ан кө рсеткiшiнiң орналасуына қ арай контекстi менюдiң пайда болатын орнын анық тайды жә не келесі қ асиеттерді қ абылдайды: paLeft-менюдiң сол жақ жоғ арғ ы бұ рышында; paCenter- центрде; paRight-менюдiң оң жақ жоғ арғ ы бұ рышында; Менюды динамикалық тү рде баптау Қ осымша қ ұ рғ ан кезде, меню қ ұ рылуы жә не кү йге келтіруі қ ұ растырушы менюдің кө мегімен жү зеге асырылады. Бұ л жерде қ осымшаны динамикалық тұ рғ ыда орындағ анда, менюді қ ұ руғ а немесе асыруғ а болады. Мысалы, былай болуы мү мкін: Ø Ә ртү рлі типтегі жә не жаң а менюді қ ұ руғ а болады. Ø Жеке пункттерді қ осуғ а жә не қ оспауғ а болады. Ø Меню пунктін кө рінетін немесе кө рінбейтін етуге. Ø Меню пунктін қ осу немесе ө шіру. Ø Пункт атын ө згерту. Ø Пункт белгісін орнату немесе белгісі алып тастау. Ø Басты меню меню формасын басқ а формағ а ө згерту. Ø Екі менюді қ осу Бұ л мү мкіншіліктер пункттің сұ раныстар тү сінігін, менюдің қ ұ рамын, нақ ты дә л ә дістерін шақ ыру кезінде қ амтамасызетіледі. Менюдің пункттерін қ осу ә дістеріне Аdd жә не Insert жатса, оның меню пункттерінің ө шірілуіне Delete ә дісі жатады. Аdd (Item: TMenuItem) процедурасы – соң ындағ ы меню астындағ ы, параметрлерлі анық талатын Item элементін қ осады. Егер меню асты болмаса, онда ол қ айта жасалады. Меню пунктінің қ осылуының мысалы:
Procedure Form1.mnuItemAddClick(Sender: TSender); Var NewItem: TmenuItem; Begin NewItem: =TmenuItem.Create(Self); NewItem.Caption: =’Жаң а элемент; mnuFile.Add(NewItem); end; Осы мысалда жаң а пункт, соң ындағ ы Файл меню астына қ осылады. Қ осылатын пункттің жаң а элемент деген тақ ырыпшасы болады. Жаң а пункт алдын ала Create қ ұ растырушысымен қ ұ рылады. Insert (Index: Integer; Item: TMenuItem) процедурасы, алдынғ ы ә діске қ арағ анда жаң а пункт менюін анық талғ ан жайына қ осады. Index параметрі, массивтегі меню элементтерінің жаң а пункт қ осылатын позициясын анық тайды. Егер Index параметрінің мағ ынасы шектелген диапозоннан шығ ып кететін болса, мысалы, меню астындағ ы элементтер саны модифицияланғ ан меню пунктінен кө п болса, онда шығ арылып тастауы кө рінеді. Мысалы сұ раныс жіберілген позициядағ ы меню пунктінің қ осылуы:
Procedure Form1.mnuItemInsertClick(Sender: TSender); Var NewItem: TmenuItem; Begin NewItem: =TmenuItem.Create(Self); NewItem.Caption: =’Екінші элемент’; mnuFile. Insert (2, NewItem); end; Процедура жаң а меню пунктін меню астындағ ы Файл қ осады. Жаң а пункттің Екінші элемент деген тақ ырыпшасы болады жә не екінші позицияғ а да қ осылады(санау 0-ден басталады). Delete(Index: Integer) процедурасы кө рсетілген меню пунктін ө шіреді. Егер ө шірілген меню пунктінде меню асты болса, онда меню асты да ө шіріледі. Меню пунктінің ө шірілуінің мысалы: Procedure Form1.mnuItemDeleteClick(Sender: TSender); Begin If mnuFile7Items [2].Caption=’ Екінші элемент’; mnuFile. Delete(2); end; Процедура Файл пункт менюін ө шіреді. Ө шірілген пунктте Екінші элемент деген тақ ырыпша болады жә не екінші позицияда орналасады. Керекті атымен пункттінің ө шірілуі алдын – ала тексеріледі. Форма қ ұ рамына бірден кө п басты меню кіреді. Бұ л қ олданылады, мысалы, егер оның біреуінің тақ ырыпшасыағ ылшынтілінде, алекіншісі орыс тілінде болса. Осындай мү мкіншілікті орындау кезінде формағ а екі MainMenu компанентін енгізу керек жә не дә л келетін менюді дайындау керек. Осыдан кейін программаның орындау барысында формағ а менюлердің ә йтеуір біреуін қ осуғ а болады.Басты менюдегіформағ а қ осылу ү шін Menu формасының қ ұ рамы қ олданылады. Екі басты менюдің арасындағ ы қ осылулар мысалы: If Form1.Menu=EnglishMenu then Form1.Menu: =RussianMenu Else Form1.Menu: =EnglishMenu; Менюдің EnglishMenu жә не RussianMenu деген екі аты бар. Кодты, менюдің ауысып қ осылуында, немесе оны дә лме-дә л ө ң деу кезінде қ осуғ а болады. Есің ізге салсақ, Menu форманың бір қ ұ рамы болып табылады, ол басты менюгенемесе белсенді менюге жол ашады. Қ осымшалардың қ ұ рамындағ ы бірнеше ө зара қ атынасты формалар мен менюдің ә ртү рлі формаларының арасында бірігу қ ажеттілігі туындайды. Бұ л кө бінесе басты – MainMenu менюі мен бағ ынғ анформағ а керек.Кө п қ ұ жатты қ осымшаларда басты меню мен таза форманың қ осылуы, таза форманы іске қ осқ анкезде автоматты тү рде орындалады. Ал бір документті қ осымшаларда менюлердің қ осылуы программалық жолмен жү ргізіледі. Екі жолдық менюдің қ осылуында Merge ә дісі қ олданылады. Merge (Menu: TMainMenu) процедурасы: сұ ранысты Menu параметрін, менюді, шақ ырылғ ан ә дісті менюге қ осады. Менюлердің қ осылуы меню жолындағ ы пунктерінің дең гейінде орындалады. Мысалы, бірінші мен екінші меню FileHelp жә не File Edit View болса, онда нә тижелі меню: File Edit View Help жолында кө рсетіледі. Менюлердің қ осылуын автоматты тү рде – AutoMerge қ ұ рамында Boolean типін орната отырып, True бағ ынышты формасын қ ұ рғ анда орындауғ а болады. Басты форма қ осымшасында AutoMerge қ ұ рамы, False қ ұ рамында орнатылуы керек. Кө п қ ұ жатты қ осымшада қ осылулар автоматты тү рде орындалады, ол ү шін AutoMerge менюінің барлық формаларының қ ұ рамы, False мағ ынасында болуы тиіс. Меню пункттерінің қ адағ алануы GroupIndex қ ұ рамындағ ы Byte типіменжә не екі менюдің жекеленген бө ліктерімен қ осылу кезінде анық талады.Егер GroupIndex қ ұ рамының мағ ынасы екі менюге де тең болса, онда екінші пункттегі меню бірінші пункттегі менюді ауыстырады, сол ү шін Merge ә дісі шақ ырылады. Егер осы мағ ыналар тең болмаса, онда біріккен менюдің пункттерінің кіші мағ ыналы, ү лкен мағ ыналы пункттің сол жағ ынан орын тебеді. GroupIndex қ ұ рамының тыныштығ ынан, барлық пункттерідің мағ ынасы нө лге тең болады. Осындай екі менюдің қ осылулары, кө птерезелі қ осымшаларды орындағ анда қ олданылады. Басты терезеден бағ ының қ ылы терезені шақ ырғ анда, мысалы, MicrosoftWord текстік процессорындағ ы терезелік қ ұ жаттарында, меню пункттері басты менюге жә не қ олданушығ а қ осымша мү мкіншіліктерді кө рсеткенде қ осылады. Бағ ының қ ылы терезені жапқ аннан кейін басты менюдегі артық пункттеравтоматты тү рде ө шеді. Қ осылғ ан менюді ажыратуғ а UnMerge ә дісі қ олданылады. UnMerge(Menu: TMainMenu) процедурасы Merge ә дісімен қ ұ рылғ ан екі менюді бө леді. Menu параметрі басты менюі мен бө лінетін менюді кө рсетеді.
Дә ріс №4. Басқ ару элементтерін біріктіру Жоспар: Панель. Айналдыру аймағ ы. Фрейм. Кілттік сө здер: GroupBox, Panel, ScrollBox, Frame Иллюстрациялық материал: слайд Қ осымшаны ө ң деу кезінде ә р тү рлі злементтерді біріктірудің немесе топтаудың қ иыншылық тары жиі туындайды. Топтау, қ осқ ыштарымен жұ мыс жасағ анда немесе саймандар тақ тасын қ ұ рғ анда қ ажет болады. Элементтерді біріктіру арнайы контейнер компоненттерінің кө мегімен орындалады. Контейнер дегеніміз- бетінде басқ а компоненттер орналастыруғ а болатын визуалды компонент. Контейнер осы компоненттерді топтарғ а біріктіріп, олардың иесі болады. Сондай-ақ, иелері ө зінің тұ қ ымдық элементтерінің тү рлеріне жауап береді. Тұ қ ымдық элемент иесіне PARENT қ асиеті арқ ылы сілтенеді. Ә р тү рлі объектілер ү шін Delphi жү йесі мынандай компоненттерден тұ ратын ә мбебап контейнер ұ сынады. · Group Box тобы; · Panel- панель; · Scroll Box- айналдыру аймағ ы; · Frame- фрейм (рамка); Форма, қ осымшаның интерфейсті бө лігін қ ұ растыру контейнері болып табылатынын ескертейік. Форма- ө зінің жатқ ан барлық компонеттердің иесі болып табылады. Топ Топ- функционалды байланысқ ан басқ ару элементтерін визуалды белгілеуге қ олданылады. Топпен жұ мыс жасау ү шін Delphi Group Box компонетін ұ сынады. Ол компонентің сол жақ жоғ арғ ы бұ рышында, ө зіндегі басқ арудың біріктірілген элементтерінен тұ ратын тақ ырыпшадан тұ рады. Панель Панель- басқ арудың басқ а элементтерін орналастыруғ а болатын контейнер. Панельдер, топтаудың виэуалды қ ұ ралы ретінде, сондай-ақ саймандар тақ тасы мен қ алыпкү й жолдарын жасауғ а қ олданылады. Панельдермен жұ мыс жасау ү шін Delphi-де Panel компоненті тағ айындалғ ан. Панельдің қ ыры екі жү зді: ішкі жә не сыртқ ы. Ішкі жү з панельді кө мкереді (обрамляется), ал сыртқ ы- ішкінің айналасында кө рінеді. Ә р жү здің ені TbewlWidth типті BewWidth қ асиетінде пиксельдермен беріледі. TbewlWidth типінің мә ні бү тін сан болып табылады(TbewlWidth=1.. MaxInt). Ү нсіз келісім бойынша жү здің ені 1-ге тең. TpanelBevel типі BevelInner жә не BeverOuter қ асиеттері ішкі жә не сыртқ ы жү здердің тү рлерін сә йкесінше анық тайды. Қ асиеттердің ә рқ айсысы келесі мағ ыналарды қ абылдай алады: · bvNone (жү зі жоқ) · bvLowered (жү зі батырың қ ы) · bvRaised (жү зі кө терің кі) · bvSpace (іс ә рекет белгісіз)
Ү нсіз келісім бойынша BevelInner қ асиеті bvNone мағ ынасына ие, ал BevelOuter қ асиеті bvRaised мағ ынасына ие. Жү здер арасында неі TBorderWidth типі BorderWidth қ асиетінде пиксельмен анық талатын арақ ашық тық болуы мү мкін. Ү нсіз келісім бойынша арақ ашық тық 0-ге тең (арақ ашық тық жоқ).
10.1-кесте. Панельдердің қ асиеттерінің мағ ынасы
Панельдің тақ ырыпшасын орналастыруды басқ ару, келесі мә ндерді қ абылдай алатын TAlignment типті Alignment қ асиетімен орындалады: · taLeftJustify (сол жақ шетпен тү зету); · taCenter (ортамен тү зету)- ү нсіз келісім бойынша; Айналдыру аймағ ы Айналдыру аймағ ы-ақ паратты жылжыту мү мкіншілігі бар терезе болып табылады. Оның ішінде басқ арудың баска элементтері орналасады. Delphi-де жылжыту облысы болып ScrollBox табылады.
|