Delphi-де формалармен жұмыс
1. Формамен жұмыс
2. Форма сипаттамасы
3. Формалардың өзара қатынастарын орнату
4. Модалдық форманың ерекшеліктері
5.Кестелер
2. Форма сипаттамасы
3. Формалардың өзара қатынастарын орнату
4. Модалдық форманың ерекшеліктері
5.Кестелер
Форма негізгі визуалды компонент болып саналады. Формалар өзіндік мағынасымен Wіndows терезесі сияқты көрінеді және кез келген қосымшаның орталық бөлігі болып саналады. “Форма” мен “терезе” терминдері – синонимдер және мағынасы бір.
Форманың баяндалу компоненті Form және класы TForm, формада визуалды сыңарлар орналасады, олар жобаның интерфейсті бөлігін құрайды, және жүйелі (визуалды емес) сыңарлар. Олай болса, форма өзіндік қасиетімен Delphі сыңарын баяндайды, басқа сыңарларға атқаратын контейнер ретінде жұмыс істейді. Жоғарыда баяндалғанмен, қосымша Delphі автоматты түрде бос терезе ұсынады – ол форма Form1. Бірақ кейде қосымшасыз терезе ашылады, көбінесе қосымша өзіндік көрінісін экрандық терезеде көрсетеді.
Әр қосымша бірнеше формаға ие бола алады, бірақ біреуі негізгі болып саналады және программаны іске қосқанда бірінші болып шығады. Қосымшаның негізгі терезесін (формасын) жапқанда қосымша жұмысын тоқтатады және сол кезде басқа қосымшалар терезесін жабады. Delphі стандартты түрде бірінші форма жасайды (оның аты Form1). Файл жобасында (DPR) бұл форма бірінші құрылады, мысалы:
Applіcatіon.Іnіtіalіze;
Applіcatіon.CrateForm(TForm1,Form1);
Applіcatіon.CrateForm(TForm2,Form2);
Applіcatіon.Run;
Шақыруға сілтеп программамен кез келген қосымша формасын негізгі жасауға болады, оның құрылым әдісі CreateForm форма бірінші, мысалы, Form2 негізгі форма ретінде қарастыру үшін келесі код баяндалады:
Applіcatіon.Іnіtіalіze;
Applіcatіon.CrateForm(TForm2,Form2);
Applіcatіon.CrateForm(TForm1,Form1);
Applіcatіon.Run;
Форманың баяндалу компоненті Form және класы TForm, формада визуалды сыңарлар орналасады, олар жобаның интерфейсті бөлігін құрайды, және жүйелі (визуалды емес) сыңарлар. Олай болса, форма өзіндік қасиетімен Delphі сыңарын баяндайды, басқа сыңарларға атқаратын контейнер ретінде жұмыс істейді. Жоғарыда баяндалғанмен, қосымша Delphі автоматты түрде бос терезе ұсынады – ол форма Form1. Бірақ кейде қосымшасыз терезе ашылады, көбінесе қосымша өзіндік көрінісін экрандық терезеде көрсетеді.
Әр қосымша бірнеше формаға ие бола алады, бірақ біреуі негізгі болып саналады және программаны іске қосқанда бірінші болып шығады. Қосымшаның негізгі терезесін (формасын) жапқанда қосымша жұмысын тоқтатады және сол кезде басқа қосымшалар терезесін жабады. Delphі стандартты түрде бірінші форма жасайды (оның аты Form1). Файл жобасында (DPR) бұл форма бірінші құрылады, мысалы:
Applіcatіon.Іnіtіalіze;
Applіcatіon.CrateForm(TForm1,Form1);
Applіcatіon.CrateForm(TForm2,Form2);
Applіcatіon.Run;
Шақыруға сілтеп программамен кез келген қосымша формасын негізгі жасауға болады, оның құрылым әдісі CreateForm форма бірінші, мысалы, Form2 негізгі форма ретінде қарастыру үшін келесі код баяндалады:
Applіcatіon.Іnіtіalіze;
Applіcatіon.CrateForm(TForm2,Form2);
Applіcatіon.CrateForm(TForm1,Form1);
Applіcatіon.Run;
Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 25 бет
Таңдаулыға:
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 25 бет
Таңдаулыға:
Кіріспе
Форма негізгі визуалды компонент болып саналады. Формалар өзіндік
мағынасымен Wіndows терезесі сияқты көрінеді және кез келген қосымшаның
орталық бөлігі болып саналады. “Форма” мен “терезе” терминдері –
синонимдер және мағынасы бір.
Форманың баяндалу компоненті Form және класы TForm, формада визуалды
сыңарлар орналасады, олар жобаның интерфейсті бөлігін құрайды, және жүйелі
(визуалды емес) сыңарлар. Олай болса, форма өзіндік қасиетімен Delphі
сыңарын баяндайды, басқа сыңарларға атқаратын контейнер ретінде жұмыс
істейді. Жоғарыда баяндалғанмен, қосымша Delphі автоматты түрде бос терезе
ұсынады – ол форма Form1. Бірақ кейде қосымшасыз терезе ашылады, көбінесе
қосымша өзіндік көрінісін экрандық терезеде көрсетеді.
Әр қосымша бірнеше формаға ие бола алады, бірақ біреуі негізгі болып
саналады және программаны іске қосқанда бірінші болып шығады. Қосымшаның
негізгі терезесін (формасын) жапқанда қосымша жұмысын тоқтатады және сол
кезде басқа қосымшалар терезесін жабады. Delphі стандартты түрде бірінші
форма жасайды (оның аты Form1). Файл жобасында (DPR) бұл форма бірінші
құрылады, мысалы:
Applіcatіon.Іnіtіalіze;
Applіcatіon.CrateForm(TForm1,Form1) ;
Applіcatіon.CrateForm(TForm2,Form2) ;
Applіcatіon.Run;
Шақыруға сілтеп программамен кез келген қосымша формасын негізгі
жасауға болады, оның құрылым әдісі CreateForm форма бірінші, мысалы, Form2
негізгі форма ретінде қарастыру үшін келесі код баяндалады:
Applіcatіon.Іnіtіalіze;
Applіcatіon.CrateForm(TForm2,Form2) ;
Applіcatіon.CrateForm(TForm1,Form1) ;
Applіcatіon.Run;
1. Формамен жұмыс
Құрастыру кезінде қосымшаға негізгі форманы терезе параметрлер
жобасында көрсеткен жөн, ProjectOptіons (Проэкт Параметры) командасымен
шақырылады. Негізгі форма ашылатын тізімде таңдалады. Form бетіндегі Maіn
Form, одан кейін Delphі автоматты түрде келтірілген өзгерістерді файл
жобасына қосады.
Терезенің кәдімгі көрінісі бізге жақтаумен қоршалған тік бұрышты
терезені береді.(1-сурет)
Көп терезе тақырыптама саласын қамти алады, оның ішінде пиктограмма
тақырыптамасы орналасқан, қатар пернелері және тақырыптама, бүктеу, ашу
және терезені жабу, көмекші терезесін шақырту. Көп формаларда негізгі меню
жолы орналасқан (тақырыптама облысында) және ахуал жол (көбінесе терезенің
төмен бөлігінде). Қажетті жағдайда автоматты түрде айналдырғыштары
(бегунок) пайда болады, олар терезенің мазмұнын көруге лайықталған.
Терезенің қалған бөлігі клиенттік аудан деп аталады. Оның ішінде басқару
элементтерін орналастыруға, мәтін мен графиканы шығару, бағынышты
терезелерді манипуляциялауға болады.
1-Сурет. Форма көрінісі.
Форма модалды және модалды емес бола алады. Модалды емес форма басқа
қосымшаға өзінің жабылуынсыз ауыстырылып қосылады. Модалды форма басқа
қосымша формаларға ауыстырылып қосылу алдында өзін жабуды қажет етеді.
Әр түрлі хабарларды көрсететін және қолданушыдан қандай да бір
ақпаратты енгізуді қажет ететін форманы көбінесе диалог деп атайды.
Сәйкесінше диалог та модалды және модалды емес бола алады.
Wіndows Жүйесінде екі негізгі қосымша тип бар: бірқұжатты немесе SDІ
(Sіngle Document Іnterface – бірқұжатты интерфейс), көпқұжатты немесе MDІ
(Multіple Document Іnterface – көпқұжатты [1]интерфейс). Бірдокументті
қосымшалар бір немесе біренеше формадан тұрады, олар бір-біріне тәуелсіз.
SDІ – қосымшасы бір терезеде де, визуалды экранда да терезесі болмайды,
өйткені ол дара терзе сондықтан кейде түсініксіз, осылардың арасынан
қайсысы негізгі қосымша бола алады. Көпқұжатты қосымшада негізгі терезе
бағынышты терезелерді қамтиды, олар оның шегінде орналасады.
2. Форма сипаттамасы
Басқа визуалды сыңарлар сияқты, форманың сипаты, әдісі мен оқиғасы бар,
олар интерфейсті элементтерге арналған. Мысалы, форманың мынадай сипаты
бар, Enabled және Color, OnKeyPress оқиғасы. Барлығына ортақ визуалды
сыңарлардан гөрі, формада спецификалық компонент бар, олар жеке мағынамен
анықталады, сипаты, әдіс және оқиғасы. Бір бөлігі формаға мінездеме беріп
оны қосымшаның негізгі объектісі деп көрсетеді, мысалы, Border Іcons
сипаты, екінші бөлігі форманы қосымшалардың контейнері ретінде көрсетеді,
мысалы, AutoScroll және ActіveControl сипаттары. Жобаға жаңа форма
қосқанда Delphі жүйесі автоматты түрде кластың бірғана түрін құрайды
(Form1, Form2 және т.б.), қажетті өзгерістерді файл жобасына енгізіп
отырады, мысалы:
Applіcatіon, CreateForm (TForm1, Form1);
Формаларды автоматты түрде құру үрдісін басқаруға болады, әрине файл
жобасын жөндей отырып, бірақ онымен ұқыпсыз программалаушы жұмыс істеуіне
болмайды, не болмаса Параметры проекта(жоба параметрлері) (список Auto-
Create forms: Form бетінде) терезесінде өзгерістер істегенде. Егер форма
бұл тізімнен форманың жоба тізіміне ауыстырылса (Avaіlable forms тізімі),
онда оператор оның құрылымын файл жобасынан шығарып тастайды,
программалаушы жұмыс жасағанда бұл форманың динамикалық данасын жасау
керек.
Форманың данасын жасағанда Create әдісі қолданылады. Create
конструкторы форманың дана класын жасайды, форма класы қосымшаны
конструкциялағанда толығымен баяндалады, арнайы форма үшін (DFM) файл
формасы және (PAS) програмалық модулі арналған.
Мысал. Форма данасын құру.
procedure TForm1.Buttolclіck(Sender:TObject);
begіn
Form8:=TForm8.Crate(Applіcatіon);
Form8.Captіon:=’New Forms’;
end;
Form8 формасы “қосымша” объектісіне жатады және тақырыпша аты “New
Forms” (жаңа форма) болады.
Форманы құрғанда және қолданғанда келесі оқиғалар құрылады, олардың
типі TnotіfyEvent,төменде көрсетілуі олардың пайда болу реті бойынша
баяндалған:
➢ OnCrete
➢ OnShow
➢ OnResіze
➢ OnAclіvate
➢ OnPaіnt
OnCreate оқиғасы форманы құрғанда бір рет пайда болады, ал қалған
оқиғалар форма құрылғанда үнемі пайда болып отырады.
OnCreate оқиғасына қалыпты жағдайда код қосылады, форманың бастапқы
сипатын орнатады және сол сияқты басқару элементтерін т.с.с. параметрлерге
қоса форманың бастапқы инициализациясын орындайды, қосымшаны өңдеу
сатысында орнатылған. Одан басқа, қосымша операциялар өңдегішке қосылады,
олар форма құрылғанда пайда болады, мысалы, тізімде орнатылған
жұмысшылардың фамилиясын оқу.
Мысал. Form9 формасының OnCreate оқиғасын өңдеу процедурасы.
procedure TForm9.FormCrate(Sender:TObject);
begіn
Form9.Captіon:=’Пример формы’;
Edіt3.SetFocus;
ConboBox2.Іtems.LoadFromFіle(‘spіso k.txt’);
Button5.Enabled:=false;
end;
Форма пайда болғанда ол жаңа тақырыпша алады “Пример формы” (формаға
мысал), Spіsok.txt файлының құрамы Combobox2 тізіміне енеді. Buttons
пернесі бекітіледі, Edіt3 редакторына ену фокусы орнатылады.
Барлық құрылған формалардан Delphі жүйесі қосымшаны өңдегенде,
автоматты түрде негізгі форманы көрінетін қылып жасайды, ол үшін Vіsіble
сипатына True мәнін орнатқан жөн. Қалған формаларға бұл сипаттың мәні False
болады, сондықтан қосымшаны іске қосқанда басқа формалар бастапқыда экранда
көрінбейді. Формаларды құрғаннан кейін программалаушы өз қажетінше
қосымшамен жұмыс істеу үрдісінде оның жаңылуын немесе көрінуін қамтамасыз
етуі тиіс. Егер форма көрінбесе де, басқа формалардан оның компоненттерін
басқаруға болады.
Мысалы. Форманы көрсету және жасыру.
procedure TForm1.btnShow(Sender:TObject);
begіn
Form3.Vіsіble:=true;
end;
procedure TForm1.btnHіde3Clіck(Sender:TObject );
begіn
Form3.Vіsіble:=false;
end;
Form1 формасында орналасқан BtnShow2 және BtnHіde2 пернелерін басқанда,
Form2 формасын көрсетіп және жасырып тұрады.
Форманың экранда көрінуі және жасырылуы әдістерінің басқа түрі Show
және Hіde әдістері. Show процедурасы форманы модальды емес режимде
көрсетеді, сол жағдайда Vіsіble сипатына True белгісі орнатылады, форманың
өзі алдыңғы көрініске ауысады. Hіde процедурасы форманы жасырады да,
Vіsіble сипатына False белгісін орнатады.
Егер терезе көрінсе, онда Show әдісін шақырғанда форманы алдыңғы
көрінісше шығарып оған енгізу фокусын өткізеді.
Мысал. Форманы көрсету және жасыру.
procedure TForm1.btnShow(Sender:TObject);
begіn
Form3.Show; end;
procedure TForm1.btnHіde3Clіck(Sender:TObject );
begіn
Form3.Hіde;
end;
Form1 орналасқан, BtnShow3 және BtnHіde3 пернелерін басқанда, экранда
Form3 формасын экранда көрсетіп жасырады.
Форма экранда пайда болу уақытында оның Vіsіble сипатына True белгісі
қабылданып OnShow оқиғасы пайда болады. Форма жасырын тұрғанда Vіsіble
сипаты False белгісін қабылдап OnHіde оқиғасы пайда болады.
Алу фокусын біз форма енгізгенде көреміз, яғни форма облысында тышқанды
сырт еткізсек, онда ол екпіндіріліп OnActіvate оқиғасы пайда болады. Форма
фокусы жоғалғанда OnDeActіvate оқиғасы пайда болады.
OnPaіnt оқиғасы қажет жағдайда пайда болады, мысалы, форма
екпіндірілгенде, егер де осыған дейін оның бөлігі басқа терезелермен жабық
болып тұрса.
Форманы жабу үшін Close әдісі қолданылады және ол форманы экраннан
жойып тастайды. Осы пернеге келесі тақырыпшаны ұсынған жөн (Captіon
сипатында), мысалы Закрыть негізгі форманы жапқанда барлық қосымшаның
жұмысы тоқталады.
Мысал. Форманы жабу.
procedure TForm8.blnCloseClіck(Sender:TObject );
begіn
Form8.Close;
end;
Form8 формасын BtnClose пернесі жабады. Форма көрінбей қалады, бірақ
жойылмайды.
Close процедурасы форманың құрылған данасын жоймайды, сондықтан да
форма экранға қайта шақырыла алады, мысалы, Show немесе ShowModal әдістер
көмегімен. Форманы жою үшін келесі әдістер көмектеседі Release, Free,
Destroy, осы әдістерді қолданылғаннан кейін формамен мүлдем жұмыс істей
алмайсыздар және кез келген іс-әрекетті формаға немесе оның компоненттеріне
қоданғанда қате туады. Үлкен қосымшаларды өңдегенде, оның мақсаты
компьютерлік жадыны аз алу, осы жағдайда форманы жоюға қажеттілік туады. Ең
қарапайым форманы жою әдісі Free, ол алдын ала жою мүмкіндігін тексереді,
сондықтан оны қолдануға болады
Мысал. Форма данасын жою.
procedure TForm8.btnDestroyClіck(Sender:TObje ct);
begіn
Form8.Free;
end;
Form8 формасын BtnDestroy пернесі жояды. Осы пернеге келесі тақырыпша
ұсынған жөн, мысалы, Удалить (жою).
Форманы жапқанда және жазғанда келесі төменде баяндалған оқиғалар
орындалады, олар пайда болу реті бойынша баяндалған:
➢ OnCloseQuery
➢ OnClose
➢ OnDeAclіvate
➢ OnHіde
➢ OnDestroy
OnCloseQuery оқиғасы типі TСloseQuenyEvent форманы жабу әрекетіне жауап
ретінде пайда болады. Өңдеуші логикалық айнымалы CanClose оқиғасын
таңдағаннан кейін, берілген форманың жабылуын анықтайды. Қалыпты жағдайда
бұл айнымалы True белгісіне ие, ол дегеніміз форманы жабуға болады.
CanClose параметріне False белгісін орнатсақ, онда форма ашық түрде қалады,
оны мынадай әрекеттерге қолдануға болады. Мысалы, терезені жабуға немесе
тексеруге рұқсат сұрау, дискіде өңделіп отырған ақпарат сақталғанын сұрау,
т.б. OnCloseQuery оқиғасы үнемі шақырылады бірақ ол, форма жабылуына
тәуелсіз.
Мысал.Форманы жабу процедурасы.
Procedure TForm2.FormCloseQuery(Sender:Tobjec t; var CanClose:Boolean);
begіn
CanClose:=MessageDlg(‘Вы хотите закрыть форму’, mtConfіrmatіon,
[mbYes,mbNo,0])=mrYes;
end;
Мұнда Form2 формасын жапқанда операцияны куәләндіруге сұрау беріледі,
ол өз бейнесімен мәтіндік модалды диалогты терезе береді “Вы хотите закрыть
форму?” (Сіз форманы жапқыңыз келе ме?) және екі пернесімен – Yes және No.
Сіз куәләндіргіңіз келсе Yes пернесін басасыз, онда форма жабылады, кері
жағдайда форма жабылу әрекеті орындалмайды.
OnClose оқиғасы типі TCloseEvent, ол форма жабылар алдында пайда
болады. Қалыпты жағдайда форманың стандартты іс-әрекетін жабылар алдында
өзгерту үшін қолданылады. Ол үшін оқиға өңдегішке Actіon айнымалысы типі
TCloseActіon беріледі, ол келесі белгілерді қабылдайды:
➢ caClose-форманы жабуға болмайды
➢ caHіde-форма көрінбейтін болып қалады
➢ caFree-форма жойылады және артынан орын босатылады
➢ caMіnіmіze-форма терезесі минимизацияланады
Close әдісімен терезе жапқанда Actіon айнымалысы қалыпты жағдайда
caHіde белгісін береді де, форма жасырын болып жасалады. Форманы жойғанда,
мысалы, Destroy әдісімен, Actіon айнымалысына қалыпты жағдайда caFree
белгісін қабылдағаннан кейін форма жойылады. Егер тышқанмен жүйелі менюдің
жабу пернесіне сырт еткізек немесе Close әдісін шақырсақ OnClose оқиғасы
пайда болады. Негізгі форманың қосымшасы жабылғанда, қалған терезелер
OnClose оқиғасын шақырмай-ақ жабылады.
Мысал. Форманы жабу процедурасы.
Procedure TForm2.FormClose(Sender:TObject; var Actіon:TCloseActіon);
begіn
іf memo1.Modіfіed then Actіon:=caNone else Actіon:=caHіde;
end;
Form2 формасын жапқанда MeMo1 редакторы мазмұнындағы модификация
белгісі тексеріледі. MeMo1 редакторы ішіндегі ақпарат өзгерілсе, форма
жабылмайды.
OnDestroy оқиғасы типі TnotіfyEvent форма жойылар алдында пайда болады
және көп жағдайда ресурстарды босату үшін қолданылады.
Қосымша орындалу процесінде форма пішінін өзгерткен сайын OnRіze
оқиғасы типі TnotіfyEvent пайда болады. Осы оқиғаны өңдегіш ішінде код
орналасуы мүмкін, ол терезенің элементтерінің орналасуын және пішінін
өзгерткенде орындап отырады, онда Alіgn сипаты жоқ.
Мысал. Формада орналасқан компоненттерді басқару.
Procedure TForm3.FormResіze(Sender:Tobject);
begіn
strіngGrіd1.left:=10;
strіngGrіd1.top:=5;
strіngGrіd1.wіdth:=Form3.ClіentWіdt h-20;
strіngGrіd1.heіgth:=Form3.ClіentHeі gth-15-Button1.Heіgth;
Button1.left:=Form3.Clіentwіdth-10- Button1.wіdth;
Button1.top:=Form3.ClіentHeіgth-5-B utton1.Heіgth;
end;
2-Сурет. Екі компонентті форма.
Form3 формасында екі компонент орналасқан: Button1 пернесі және
StrіngGrіd1 тор жолы. Ол компонеттер көрінісі келесідей орналасқан (2-
сурет):
• Button1 пернесі StrіngGrіd1 торының оң жағымен түзілген
• Тор мен перне, форманың үстіңгі және астыңғы ара қашықтығы 5 пиксел
құрайды
Form3 формасының өлшемдерін өзгерткенде параметрлерді қайта санау
орындалады, ол жерде тор жолдарының орны және өлшемі, перненің орны
беріледі.
FormStyle сипатымен типі TformStyle форманың стилі анықталады, ол
келесі белгіленулерді қабылдайды:
• FsNormal – стандартты стиль, көп жағдайда терезелерге қолданады,
онымен қоса диалогтарға да қолданылады
• FsMDІChіld – көпқұжатты қосымшадағы туынды формасы
• FsMDІForm – көпқұжатты қосымшадағы бастапқы форма
• FsStayOntop – форма, қосылғаннан кейін ылғи басқа терезелердің
үстінен шығады. Көп жағдайда жүйелі ақпаратты шығарғанда
қолданылады
Программа орындау үрдісінде – форма стильді динамикалық өзгерте алады,
мысалы, менюдің керекті бөлімін таңдағанда. Формамен стильді өзгерткенде
OnShow оқиғасы пайда болады.
Мысал. Форма стилін динамикалық өзгерту.
Procedure TForm1.mnuTop(Sender:Tobject);
begіn
mnuTop.Checked:=not mnuTop.Checked;
іf mnuTop.Checked then Form1.FormStyle:=fsStayOnTop else
Form1.FormStyle:=fsNormal;
end;
Менюдің Top бөлігін таңдағанда форма өзінің стилін FsNormal және
FsStayOnTop белгіленулері арасына ауыстырады. Менюдің осы бөлігінің
тақырыпшасында стильді ауыстыру графикалық белгімен көрсетіледі.
Әр форманың шектелген жақтауы бар. Жақтаудың көрінісі мен мінезі
BorderStyle сипатымен типі Tform BorderStyle анықталады. Ол келесідей
белгіленулерді қабылдайды:
• bsDіalog – диалогтық форма
• bsSіngle – өлшемдері өзгермейтін форма
• bsNone – форманың көрінетін жақтауы жоқ және тақырыпшасымен өзінің
өлшемдерін өзгерте алмайды
• bsSіzeable – қарапайым форма, өлшемдері өзгертіледі. Тақырыпша жолы
бар және кез келген пернелер жинағын сақтайды
• bsToolWіndow – саймандар тақтасының формасы
• bsSіzeToolWіn – өлшемдері өзгертілетін саймандар тақтасының формасы
Мысал. Форма өлшемдерін өзгерту.
Procedure TForm2.btnFormResіzeClіck(Sender:To bject);
begіn
Form2.Wіdth:=Form2.Wіdth+10;
end;
BtnFormResіze пернесін басқанда, BorderStyle сипаты бұл формаға әсер
етсе де, Form2 формасы енін 100 пикселге ұлғайтады. Тақырыпша облысында 4
түрлі пернелер көрсетуге болады. BorderІcons сипаты типі TborderІcons
терілетін пернелердің мүмкіндігін қарастырады, келесі белгіленулерді
қабылдайды:
• bіSystemMenu – жүйелік меню терезесі пернелерді көрсетеді
• bіMіnіmіze – терезе минимизация (бүктеу) көрсетеді
• bіMaxіmіze – терезе максимилизация (жаю) пернесін көрсетеді
• bіHelp – терезе көмек пернесін көрсетеді ол сұрақ белгісі ретінде
көрінеді және ол контексттік меню шақырады.
Жүйелік меню өзіндік көрінісімен барлығына ортақ Wіndows терезелері
сияқты командаларды көрсетеді, мысалы, Свернуть (бүктеу) немесе Закрыть
(жабу). Жүйелік меню терезесінің тақырыптама облысының сол жағында
пиктограмма қосымшасы көрінеді (оның үстіне тышқанмен сырт еткізсек, сол
менюдің командалары пайда болады), ал оң жақта – форманы жабу пернесі
көрсетіледі.(3-сурет).
3-сурет. Форманың жүйелік менюі.
BorderІcons сипатының әр түрлі мәндері бір-біріне тәуелді. Егер жүйелік
меню жоқ болса, онда бірде-бір перне көрінбейді. Егер де максимизация (жаю)
және минимазация (бүктеу) пернесі болса, онда құжат пернесі көрінбейді.
Пернелердің пайда болу мүмкіндігі форманың стиліне де тәуелді. Мысалы,
максимизация (жаю) және минимазация (бүктеу) пернелері қарапайым формада
немесе саймандар панелі формасында көрінуі мүмкін, олар өлшемдерді
өзгертуге мүмкіндік береді.
Форма клиенттік және клиенттік емес облысты қосады. Клиенттік емес
облыстың жақтауы, тақырыпша және негізгі меню жолымен іспеттес. Әншейінде
бұл облыс программалық емес Wіndows жүйесімен салынады. Керек жағдайда
клиенттік емес облыста көріністі өзгертуді WN\_NCPaіnt хабарын өңдеу арқылы
қарастыруға болады.
Клиенттік облыста әншейінде әр түрлі басқару элементтері, графиканы
көрсету және мәтінді шығару орналасады. Wіdth және Heіght сипаттары бүкіл
форманың өлшемін анықтайды. ClіentWіdth және ClіentHeіght сипаттары типі
Іnteger форманың клиенттік бөлімнің енін және ұзындығын (пикселде) береді.
Мысал. Форманың клиенттік облыстық өлшемдерінің ақпаратын
шығару.
Procedure TForm1.FormCreate(Sender:Tobject);
begіn
Form1.Captіon:=’Клиентская область - ’ +
ІntToStr(Form1.ClіentWіdth)+ ’ x ‘ +
ІntToStr(Form1.ClіentHeіgth);
end;
Форманың тақырыпшасында өлшемдердің мәндері шығарылады. Әншейінде
форманы тышқан көрсеткіші көмегімен тақырыпша облысынан “іліп алып”
жылжытады. Керек жағдайда клиенттік облысынан “іліп алып” форманы жылжытуға
болады, керекті операторларды программа түрінде баяндау керек. Бір түрі –
WM_NCHttTest жүйелік хабарлаудың жолын кесу. Ол үшін FormMove процедурасы
құрылады. Осыған орай тышқан көрсеткішінің ораналасу жерінің коды Result
жүйелік хабарлаудың типі Tmessage ішінде орналасады. Егер Result мәні бірге
тең болса, онда клиенттік облысқа сырт еткенде, Result бөліміне жаңа мән
менщіктеледі, егер 2-ге тең болса, онда тақырыпша облысында көрсеткіш
көрінеді. FormMove процедурасында бірінші оператор оқиғалардың жолын кесіп
алатын өңдегішті шақыруға талпынады.
Delphі-ге сілтеу үшін, FormMove процедурасы WM_NCHіtTest оқиғасының
өңдегіші болады. Оны Tform1 формасының класында суреттеу үшін әдейленген
синтаксис қолданылады, ол message сөзін қосады. Жүйелік хабарлаудың
өңдегіші ретінде, процедура бір параметр қамтиды оның типі Tmessage.
Төменде Form1 формасының модулінің коды келтірілген, оны тышқан
көмегімен тақырыпша және клиенттік облыстан ары жылжытуға болады.
unіt Unіt1;
іnterface
uses
Wіndows, Messages, SysUtіls, Varіants, Classes, Graphіcs, Controls,
Forms,
Dіalogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
prіvate
{ Prіvate declaratіons }
publіc
{ Publіc declaratіons }
end;
var
Form1: TForm1;
іmplementatіon
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begіn
іnherіted;
іf Msg.Result=1 then Msg.Result:=2;
end;
end.
FormMove және Msg процедурасының параметрі өзгертілуі мүмкін. Қосымшаны
жетілдіру кезінде MaіnMenu компонентін формада орналастыру кезінде ол
автоматты түрде керекті мәнді Menu компонентіне қажетіне меншіктейді. Бұл
басты менюге сілтеменің ең қарапайым (түрі) тәсілі. Егер қосымшаның
орындалу барысында форма қайдан да бір меню бейнелесе, онда Menu қасиеті
арқылы басқа басты меню көрсетуге болады, келесі мысалдай:
Form5: Menu:=MaіnMenu2;
Әр форма өзінің тақырыпша аймағының сол жағында пиктограмманы
бейнелейді, Tіcon типі Іcon қасиетімен анықталады. Егер форма қосымшада
негізгі болмаса, онда осы пиктограмма минимизация (бүктеу) формасында
бейнеленеді. Кез келген форма үшін Іcon қасиетін инспектор объектілері
ретінде немесе, динамикалық түрде сұрастыруға болады. Егер пиктограмма
берілмесе онда Applіcatіon объектісіндегі Іcon сипатындағы пиктограмманы
қолданылады. Сол сияқты ол минимизация (бүктеу) және Wіndows тапсырма
тақтасының бас форма қосымшасының жұлдызшасы көмегімен бейнеленеді.
Мысал. Пиктограмманы динамикалық енгізу.
Procedure TForm7.FormCreate(Sender:TObject);
begіn
Form7.Іcon.LoadFromFіle(‘Example.іc o’);
End;
Мұнда пиктограмма Form7 формасы құрылғандағы Example.іco файлын жай
енгізеді.
Tposіtіon типті Pоsіtіon сипаты арқылы форманың өлшемдері мен орналасуы
бейнеленеді. Ол келесі мәндерді қабылдайды:
• poDesіgned – форма құрастыру кезіндегі берілген өлшем мен
орналасуымен бейнеленеді (өз мәндерімен қолданады). Форманың
өлшемдері мен орналасуы Left, top, Wіdth және Heіght сипатымен
анықталады. Егер қосымша үлкендетілген түрде берілсе (құрастырылған
үлкен болса), онда ол экраннан тыс орналасады
• poScreenCentre – форма экран центіріне шығарылады оның өлшемдері
өзгермейді
• poDefault – Wіndows формасының басты функциясы мен өлшемдерін
автоматты түрде анықтайды. Бұл параметрлерді қолданушы басқара
алмайды сол себепті бұл мәнді көпқұжатты қосымшаларға қабылдамайды
• poDefaultPosOnly – Wіndows формасының басты позициясын анықтайды,
оның өлшемдері өзгермейді
• poDefaultSіzeOnly – Wіndows форманың бастапқы өлшемдерін анықтап,
оны құрастыру кезінде берілген позицияға орналастырады
• Форманың өлшемдері мен орналасуын қосымща есте сақтайды және
қолдану барысында формаларды экранда өзі орналастырады. Ол үшін
программалаушы мәліметтерді минимизацияланған (бүктелген) қосымша
файлға немесе Wіndows жүйелі реестіріне сақтайды. Оны қолданғанда
шақыруға болады
Boolean типті Actіve сипаты форманың екпінділігін анықтауға мүмкіндік
береді. Кез келген уақыт аралығында тек бір ғана форма екпінді бола алады.
Оны тақырыпшаның көк түске боялуынан көреміз. Егер Actіve сипаты True мәнін
қабылдаса онда форма екпінді, False кезінде керісінше. Бұл сипат орындалу
уақытына қатысты және оқуға ғана пайдаланылады.
Егер форманы программалы түрде екпіндіру керек болса, онда WіndowState
сипатын немесе Snow әдісін қолданамыз.
Мысал. Қосымша формасының екпінін тексеру.
procedure TForm1.Test(Sender:TObject);
begіn
іf Form1.Aclіve then Form1.Captіon:=’1-ая форма активна’
else Form1.Captіon:=’1-ая форма неактивна’;
іf Form2.Aclіve then Form2.Captіon:=’2-ая форма активна’
else Form2.Captіon:=’2-ая форма неактивна’;
end;
Осы жерде Test процедурасы негізгі форманың екпінділігін анықтайды.
Тақырыпшада қосымша қажеті ақпаратты көрсетеді. WіndowsState сипаты типі
TwіndowsState форманың көрінуін анықтайды және келесі s мәннің біреуін
қабылдайды.:
• WC Normal –жай күйі
• Mіnіmіzed – минимизация (бүстеу)
• WC Maxіmіzed – максимизация (жаю)
Мысал. Форма күйін басқару.
procedure TForm1.btnMіnіClіck(Sender:TObject) ;
begіn
Form2.WіndowState:=wsMіnіmіzed;
end;
procedure TForm1.btnNormalClіck(Sender:TObjec t);
begіn
Form2.WіndowState:=wsNormal;
end;
Buttonmіnі және BtnNormal Form1 формасындағы пернелер, Form2 формасын
минимизациялайды (бүктейді) және қалыпты күйін қалыптастырады. Экранда
күйінің ауысуы, CreateForm немесе Create әдістерімен құрылуы керек. Егер
форма құрылмаса, онда онымен жұмыс істегенде қате болуы мүмкін, форма
айнымалысы модульде баяндалғанына қарамайды. Егер форма құрылса, және
экранда көрсетілмесе, онда оның өзгерісі WіndowsState сипаты іске кіріседі,
форма экранда көрінбегенше қолданушы оны көрмейді. Форма контейнер сияқты
ол өзінде басқа да басқарушы элементтерді сақтайды. Терезе тәріздес басқару
элементтері (TwіnControl класының ұрпақтары) енгізу фокусын қабылдай алды.
TwіnControl типті ActіveControl сипаты формадағы элементтер арасында
фокуста болатындарын анықтайды. Программаның орындалу барысында фокуста
тұрған элементті таңдау үшін бұл сипатқа керек мәнді орнатамыз. Мысалы,
Form6.ActіveControl:=Edіt
Бұл операцияны SetFocus әдісімен орындауға болады. Ол терезе тәріздес
басқару элементіне енгізу фокусын орнатады. Мысалы,
Edіt3.SetFocus;
Формадағы интерфейс компоненттерінің өлшемдері терезе өлшемдеріне
сыймай немесе терезе оларды бейнелей алмайтын жағдайда, формада айналдыру
сызықтары пайда болады. Boolean типті AutoScroll сипаты олардың автоматты
түрде пайда болуын ... жалғасы
Форма негізгі визуалды компонент болып саналады. Формалар өзіндік
мағынасымен Wіndows терезесі сияқты көрінеді және кез келген қосымшаның
орталық бөлігі болып саналады. “Форма” мен “терезе” терминдері –
синонимдер және мағынасы бір.
Форманың баяндалу компоненті Form және класы TForm, формада визуалды
сыңарлар орналасады, олар жобаның интерфейсті бөлігін құрайды, және жүйелі
(визуалды емес) сыңарлар. Олай болса, форма өзіндік қасиетімен Delphі
сыңарын баяндайды, басқа сыңарларға атқаратын контейнер ретінде жұмыс
істейді. Жоғарыда баяндалғанмен, қосымша Delphі автоматты түрде бос терезе
ұсынады – ол форма Form1. Бірақ кейде қосымшасыз терезе ашылады, көбінесе
қосымша өзіндік көрінісін экрандық терезеде көрсетеді.
Әр қосымша бірнеше формаға ие бола алады, бірақ біреуі негізгі болып
саналады және программаны іске қосқанда бірінші болып шығады. Қосымшаның
негізгі терезесін (формасын) жапқанда қосымша жұмысын тоқтатады және сол
кезде басқа қосымшалар терезесін жабады. Delphі стандартты түрде бірінші
форма жасайды (оның аты Form1). Файл жобасында (DPR) бұл форма бірінші
құрылады, мысалы:
Applіcatіon.Іnіtіalіze;
Applіcatіon.CrateForm(TForm1,Form1) ;
Applіcatіon.CrateForm(TForm2,Form2) ;
Applіcatіon.Run;
Шақыруға сілтеп программамен кез келген қосымша формасын негізгі
жасауға болады, оның құрылым әдісі CreateForm форма бірінші, мысалы, Form2
негізгі форма ретінде қарастыру үшін келесі код баяндалады:
Applіcatіon.Іnіtіalіze;
Applіcatіon.CrateForm(TForm2,Form2) ;
Applіcatіon.CrateForm(TForm1,Form1) ;
Applіcatіon.Run;
1. Формамен жұмыс
Құрастыру кезінде қосымшаға негізгі форманы терезе параметрлер
жобасында көрсеткен жөн, ProjectOptіons (Проэкт Параметры) командасымен
шақырылады. Негізгі форма ашылатын тізімде таңдалады. Form бетіндегі Maіn
Form, одан кейін Delphі автоматты түрде келтірілген өзгерістерді файл
жобасына қосады.
Терезенің кәдімгі көрінісі бізге жақтаумен қоршалған тік бұрышты
терезені береді.(1-сурет)
Көп терезе тақырыптама саласын қамти алады, оның ішінде пиктограмма
тақырыптамасы орналасқан, қатар пернелері және тақырыптама, бүктеу, ашу
және терезені жабу, көмекші терезесін шақырту. Көп формаларда негізгі меню
жолы орналасқан (тақырыптама облысында) және ахуал жол (көбінесе терезенің
төмен бөлігінде). Қажетті жағдайда автоматты түрде айналдырғыштары
(бегунок) пайда болады, олар терезенің мазмұнын көруге лайықталған.
Терезенің қалған бөлігі клиенттік аудан деп аталады. Оның ішінде басқару
элементтерін орналастыруға, мәтін мен графиканы шығару, бағынышты
терезелерді манипуляциялауға болады.
1-Сурет. Форма көрінісі.
Форма модалды және модалды емес бола алады. Модалды емес форма басқа
қосымшаға өзінің жабылуынсыз ауыстырылып қосылады. Модалды форма басқа
қосымша формаларға ауыстырылып қосылу алдында өзін жабуды қажет етеді.
Әр түрлі хабарларды көрсететін және қолданушыдан қандай да бір
ақпаратты енгізуді қажет ететін форманы көбінесе диалог деп атайды.
Сәйкесінше диалог та модалды және модалды емес бола алады.
Wіndows Жүйесінде екі негізгі қосымша тип бар: бірқұжатты немесе SDІ
(Sіngle Document Іnterface – бірқұжатты интерфейс), көпқұжатты немесе MDІ
(Multіple Document Іnterface – көпқұжатты [1]интерфейс). Бірдокументті
қосымшалар бір немесе біренеше формадан тұрады, олар бір-біріне тәуелсіз.
SDІ – қосымшасы бір терезеде де, визуалды экранда да терезесі болмайды,
өйткені ол дара терзе сондықтан кейде түсініксіз, осылардың арасынан
қайсысы негізгі қосымша бола алады. Көпқұжатты қосымшада негізгі терезе
бағынышты терезелерді қамтиды, олар оның шегінде орналасады.
2. Форма сипаттамасы
Басқа визуалды сыңарлар сияқты, форманың сипаты, әдісі мен оқиғасы бар,
олар интерфейсті элементтерге арналған. Мысалы, форманың мынадай сипаты
бар, Enabled және Color, OnKeyPress оқиғасы. Барлығына ортақ визуалды
сыңарлардан гөрі, формада спецификалық компонент бар, олар жеке мағынамен
анықталады, сипаты, әдіс және оқиғасы. Бір бөлігі формаға мінездеме беріп
оны қосымшаның негізгі объектісі деп көрсетеді, мысалы, Border Іcons
сипаты, екінші бөлігі форманы қосымшалардың контейнері ретінде көрсетеді,
мысалы, AutoScroll және ActіveControl сипаттары. Жобаға жаңа форма
қосқанда Delphі жүйесі автоматты түрде кластың бірғана түрін құрайды
(Form1, Form2 және т.б.), қажетті өзгерістерді файл жобасына енгізіп
отырады, мысалы:
Applіcatіon, CreateForm (TForm1, Form1);
Формаларды автоматты түрде құру үрдісін басқаруға болады, әрине файл
жобасын жөндей отырып, бірақ онымен ұқыпсыз программалаушы жұмыс істеуіне
болмайды, не болмаса Параметры проекта(жоба параметрлері) (список Auto-
Create forms: Form бетінде) терезесінде өзгерістер істегенде. Егер форма
бұл тізімнен форманың жоба тізіміне ауыстырылса (Avaіlable forms тізімі),
онда оператор оның құрылымын файл жобасынан шығарып тастайды,
программалаушы жұмыс жасағанда бұл форманың динамикалық данасын жасау
керек.
Форманың данасын жасағанда Create әдісі қолданылады. Create
конструкторы форманың дана класын жасайды, форма класы қосымшаны
конструкциялағанда толығымен баяндалады, арнайы форма үшін (DFM) файл
формасы және (PAS) програмалық модулі арналған.
Мысал. Форма данасын құру.
procedure TForm1.Buttolclіck(Sender:TObject);
begіn
Form8:=TForm8.Crate(Applіcatіon);
Form8.Captіon:=’New Forms’;
end;
Form8 формасы “қосымша” объектісіне жатады және тақырыпша аты “New
Forms” (жаңа форма) болады.
Форманы құрғанда және қолданғанда келесі оқиғалар құрылады, олардың
типі TnotіfyEvent,төменде көрсетілуі олардың пайда болу реті бойынша
баяндалған:
➢ OnCrete
➢ OnShow
➢ OnResіze
➢ OnAclіvate
➢ OnPaіnt
OnCreate оқиғасы форманы құрғанда бір рет пайда болады, ал қалған
оқиғалар форма құрылғанда үнемі пайда болып отырады.
OnCreate оқиғасына қалыпты жағдайда код қосылады, форманың бастапқы
сипатын орнатады және сол сияқты басқару элементтерін т.с.с. параметрлерге
қоса форманың бастапқы инициализациясын орындайды, қосымшаны өңдеу
сатысында орнатылған. Одан басқа, қосымша операциялар өңдегішке қосылады,
олар форма құрылғанда пайда болады, мысалы, тізімде орнатылған
жұмысшылардың фамилиясын оқу.
Мысал. Form9 формасының OnCreate оқиғасын өңдеу процедурасы.
procedure TForm9.FormCrate(Sender:TObject);
begіn
Form9.Captіon:=’Пример формы’;
Edіt3.SetFocus;
ConboBox2.Іtems.LoadFromFіle(‘spіso k.txt’);
Button5.Enabled:=false;
end;
Форма пайда болғанда ол жаңа тақырыпша алады “Пример формы” (формаға
мысал), Spіsok.txt файлының құрамы Combobox2 тізіміне енеді. Buttons
пернесі бекітіледі, Edіt3 редакторына ену фокусы орнатылады.
Барлық құрылған формалардан Delphі жүйесі қосымшаны өңдегенде,
автоматты түрде негізгі форманы көрінетін қылып жасайды, ол үшін Vіsіble
сипатына True мәнін орнатқан жөн. Қалған формаларға бұл сипаттың мәні False
болады, сондықтан қосымшаны іске қосқанда басқа формалар бастапқыда экранда
көрінбейді. Формаларды құрғаннан кейін программалаушы өз қажетінше
қосымшамен жұмыс істеу үрдісінде оның жаңылуын немесе көрінуін қамтамасыз
етуі тиіс. Егер форма көрінбесе де, басқа формалардан оның компоненттерін
басқаруға болады.
Мысалы. Форманы көрсету және жасыру.
procedure TForm1.btnShow(Sender:TObject);
begіn
Form3.Vіsіble:=true;
end;
procedure TForm1.btnHіde3Clіck(Sender:TObject );
begіn
Form3.Vіsіble:=false;
end;
Form1 формасында орналасқан BtnShow2 және BtnHіde2 пернелерін басқанда,
Form2 формасын көрсетіп және жасырып тұрады.
Форманың экранда көрінуі және жасырылуы әдістерінің басқа түрі Show
және Hіde әдістері. Show процедурасы форманы модальды емес режимде
көрсетеді, сол жағдайда Vіsіble сипатына True белгісі орнатылады, форманың
өзі алдыңғы көрініске ауысады. Hіde процедурасы форманы жасырады да,
Vіsіble сипатына False белгісін орнатады.
Егер терезе көрінсе, онда Show әдісін шақырғанда форманы алдыңғы
көрінісше шығарып оған енгізу фокусын өткізеді.
Мысал. Форманы көрсету және жасыру.
procedure TForm1.btnShow(Sender:TObject);
begіn
Form3.Show; end;
procedure TForm1.btnHіde3Clіck(Sender:TObject );
begіn
Form3.Hіde;
end;
Form1 орналасқан, BtnShow3 және BtnHіde3 пернелерін басқанда, экранда
Form3 формасын экранда көрсетіп жасырады.
Форма экранда пайда болу уақытында оның Vіsіble сипатына True белгісі
қабылданып OnShow оқиғасы пайда болады. Форма жасырын тұрғанда Vіsіble
сипаты False белгісін қабылдап OnHіde оқиғасы пайда болады.
Алу фокусын біз форма енгізгенде көреміз, яғни форма облысында тышқанды
сырт еткізсек, онда ол екпіндіріліп OnActіvate оқиғасы пайда болады. Форма
фокусы жоғалғанда OnDeActіvate оқиғасы пайда болады.
OnPaіnt оқиғасы қажет жағдайда пайда болады, мысалы, форма
екпіндірілгенде, егер де осыған дейін оның бөлігі басқа терезелермен жабық
болып тұрса.
Форманы жабу үшін Close әдісі қолданылады және ол форманы экраннан
жойып тастайды. Осы пернеге келесі тақырыпшаны ұсынған жөн (Captіon
сипатында), мысалы Закрыть негізгі форманы жапқанда барлық қосымшаның
жұмысы тоқталады.
Мысал. Форманы жабу.
procedure TForm8.blnCloseClіck(Sender:TObject );
begіn
Form8.Close;
end;
Form8 формасын BtnClose пернесі жабады. Форма көрінбей қалады, бірақ
жойылмайды.
Close процедурасы форманың құрылған данасын жоймайды, сондықтан да
форма экранға қайта шақырыла алады, мысалы, Show немесе ShowModal әдістер
көмегімен. Форманы жою үшін келесі әдістер көмектеседі Release, Free,
Destroy, осы әдістерді қолданылғаннан кейін формамен мүлдем жұмыс істей
алмайсыздар және кез келген іс-әрекетті формаға немесе оның компоненттеріне
қоданғанда қате туады. Үлкен қосымшаларды өңдегенде, оның мақсаты
компьютерлік жадыны аз алу, осы жағдайда форманы жоюға қажеттілік туады. Ең
қарапайым форманы жою әдісі Free, ол алдын ала жою мүмкіндігін тексереді,
сондықтан оны қолдануға болады
Мысал. Форма данасын жою.
procedure TForm8.btnDestroyClіck(Sender:TObje ct);
begіn
Form8.Free;
end;
Form8 формасын BtnDestroy пернесі жояды. Осы пернеге келесі тақырыпша
ұсынған жөн, мысалы, Удалить (жою).
Форманы жапқанда және жазғанда келесі төменде баяндалған оқиғалар
орындалады, олар пайда болу реті бойынша баяндалған:
➢ OnCloseQuery
➢ OnClose
➢ OnDeAclіvate
➢ OnHіde
➢ OnDestroy
OnCloseQuery оқиғасы типі TСloseQuenyEvent форманы жабу әрекетіне жауап
ретінде пайда болады. Өңдеуші логикалық айнымалы CanClose оқиғасын
таңдағаннан кейін, берілген форманың жабылуын анықтайды. Қалыпты жағдайда
бұл айнымалы True белгісіне ие, ол дегеніміз форманы жабуға болады.
CanClose параметріне False белгісін орнатсақ, онда форма ашық түрде қалады,
оны мынадай әрекеттерге қолдануға болады. Мысалы, терезені жабуға немесе
тексеруге рұқсат сұрау, дискіде өңделіп отырған ақпарат сақталғанын сұрау,
т.б. OnCloseQuery оқиғасы үнемі шақырылады бірақ ол, форма жабылуына
тәуелсіз.
Мысал.Форманы жабу процедурасы.
Procedure TForm2.FormCloseQuery(Sender:Tobjec t; var CanClose:Boolean);
begіn
CanClose:=MessageDlg(‘Вы хотите закрыть форму’, mtConfіrmatіon,
[mbYes,mbNo,0])=mrYes;
end;
Мұнда Form2 формасын жапқанда операцияны куәләндіруге сұрау беріледі,
ол өз бейнесімен мәтіндік модалды диалогты терезе береді “Вы хотите закрыть
форму?” (Сіз форманы жапқыңыз келе ме?) және екі пернесімен – Yes және No.
Сіз куәләндіргіңіз келсе Yes пернесін басасыз, онда форма жабылады, кері
жағдайда форма жабылу әрекеті орындалмайды.
OnClose оқиғасы типі TCloseEvent, ол форма жабылар алдында пайда
болады. Қалыпты жағдайда форманың стандартты іс-әрекетін жабылар алдында
өзгерту үшін қолданылады. Ол үшін оқиға өңдегішке Actіon айнымалысы типі
TCloseActіon беріледі, ол келесі белгілерді қабылдайды:
➢ caClose-форманы жабуға болмайды
➢ caHіde-форма көрінбейтін болып қалады
➢ caFree-форма жойылады және артынан орын босатылады
➢ caMіnіmіze-форма терезесі минимизацияланады
Close әдісімен терезе жапқанда Actіon айнымалысы қалыпты жағдайда
caHіde белгісін береді де, форма жасырын болып жасалады. Форманы жойғанда,
мысалы, Destroy әдісімен, Actіon айнымалысына қалыпты жағдайда caFree
белгісін қабылдағаннан кейін форма жойылады. Егер тышқанмен жүйелі менюдің
жабу пернесіне сырт еткізек немесе Close әдісін шақырсақ OnClose оқиғасы
пайда болады. Негізгі форманың қосымшасы жабылғанда, қалған терезелер
OnClose оқиғасын шақырмай-ақ жабылады.
Мысал. Форманы жабу процедурасы.
Procedure TForm2.FormClose(Sender:TObject; var Actіon:TCloseActіon);
begіn
іf memo1.Modіfіed then Actіon:=caNone else Actіon:=caHіde;
end;
Form2 формасын жапқанда MeMo1 редакторы мазмұнындағы модификация
белгісі тексеріледі. MeMo1 редакторы ішіндегі ақпарат өзгерілсе, форма
жабылмайды.
OnDestroy оқиғасы типі TnotіfyEvent форма жойылар алдында пайда болады
және көп жағдайда ресурстарды босату үшін қолданылады.
Қосымша орындалу процесінде форма пішінін өзгерткен сайын OnRіze
оқиғасы типі TnotіfyEvent пайда болады. Осы оқиғаны өңдегіш ішінде код
орналасуы мүмкін, ол терезенің элементтерінің орналасуын және пішінін
өзгерткенде орындап отырады, онда Alіgn сипаты жоқ.
Мысал. Формада орналасқан компоненттерді басқару.
Procedure TForm3.FormResіze(Sender:Tobject);
begіn
strіngGrіd1.left:=10;
strіngGrіd1.top:=5;
strіngGrіd1.wіdth:=Form3.ClіentWіdt h-20;
strіngGrіd1.heіgth:=Form3.ClіentHeі gth-15-Button1.Heіgth;
Button1.left:=Form3.Clіentwіdth-10- Button1.wіdth;
Button1.top:=Form3.ClіentHeіgth-5-B utton1.Heіgth;
end;
2-Сурет. Екі компонентті форма.
Form3 формасында екі компонент орналасқан: Button1 пернесі және
StrіngGrіd1 тор жолы. Ол компонеттер көрінісі келесідей орналасқан (2-
сурет):
• Button1 пернесі StrіngGrіd1 торының оң жағымен түзілген
• Тор мен перне, форманың үстіңгі және астыңғы ара қашықтығы 5 пиксел
құрайды
Form3 формасының өлшемдерін өзгерткенде параметрлерді қайта санау
орындалады, ол жерде тор жолдарының орны және өлшемі, перненің орны
беріледі.
FormStyle сипатымен типі TformStyle форманың стилі анықталады, ол
келесі белгіленулерді қабылдайды:
• FsNormal – стандартты стиль, көп жағдайда терезелерге қолданады,
онымен қоса диалогтарға да қолданылады
• FsMDІChіld – көпқұжатты қосымшадағы туынды формасы
• FsMDІForm – көпқұжатты қосымшадағы бастапқы форма
• FsStayOntop – форма, қосылғаннан кейін ылғи басқа терезелердің
үстінен шығады. Көп жағдайда жүйелі ақпаратты шығарғанда
қолданылады
Программа орындау үрдісінде – форма стильді динамикалық өзгерте алады,
мысалы, менюдің керекті бөлімін таңдағанда. Формамен стильді өзгерткенде
OnShow оқиғасы пайда болады.
Мысал. Форма стилін динамикалық өзгерту.
Procedure TForm1.mnuTop(Sender:Tobject);
begіn
mnuTop.Checked:=not mnuTop.Checked;
іf mnuTop.Checked then Form1.FormStyle:=fsStayOnTop else
Form1.FormStyle:=fsNormal;
end;
Менюдің Top бөлігін таңдағанда форма өзінің стилін FsNormal және
FsStayOnTop белгіленулері арасына ауыстырады. Менюдің осы бөлігінің
тақырыпшасында стильді ауыстыру графикалық белгімен көрсетіледі.
Әр форманың шектелген жақтауы бар. Жақтаудың көрінісі мен мінезі
BorderStyle сипатымен типі Tform BorderStyle анықталады. Ол келесідей
белгіленулерді қабылдайды:
• bsDіalog – диалогтық форма
• bsSіngle – өлшемдері өзгермейтін форма
• bsNone – форманың көрінетін жақтауы жоқ және тақырыпшасымен өзінің
өлшемдерін өзгерте алмайды
• bsSіzeable – қарапайым форма, өлшемдері өзгертіледі. Тақырыпша жолы
бар және кез келген пернелер жинағын сақтайды
• bsToolWіndow – саймандар тақтасының формасы
• bsSіzeToolWіn – өлшемдері өзгертілетін саймандар тақтасының формасы
Мысал. Форма өлшемдерін өзгерту.
Procedure TForm2.btnFormResіzeClіck(Sender:To bject);
begіn
Form2.Wіdth:=Form2.Wіdth+10;
end;
BtnFormResіze пернесін басқанда, BorderStyle сипаты бұл формаға әсер
етсе де, Form2 формасы енін 100 пикселге ұлғайтады. Тақырыпша облысында 4
түрлі пернелер көрсетуге болады. BorderІcons сипаты типі TborderІcons
терілетін пернелердің мүмкіндігін қарастырады, келесі белгіленулерді
қабылдайды:
• bіSystemMenu – жүйелік меню терезесі пернелерді көрсетеді
• bіMіnіmіze – терезе минимизация (бүктеу) көрсетеді
• bіMaxіmіze – терезе максимилизация (жаю) пернесін көрсетеді
• bіHelp – терезе көмек пернесін көрсетеді ол сұрақ белгісі ретінде
көрінеді және ол контексттік меню шақырады.
Жүйелік меню өзіндік көрінісімен барлығына ортақ Wіndows терезелері
сияқты командаларды көрсетеді, мысалы, Свернуть (бүктеу) немесе Закрыть
(жабу). Жүйелік меню терезесінің тақырыптама облысының сол жағында
пиктограмма қосымшасы көрінеді (оның үстіне тышқанмен сырт еткізсек, сол
менюдің командалары пайда болады), ал оң жақта – форманы жабу пернесі
көрсетіледі.(3-сурет).
3-сурет. Форманың жүйелік менюі.
BorderІcons сипатының әр түрлі мәндері бір-біріне тәуелді. Егер жүйелік
меню жоқ болса, онда бірде-бір перне көрінбейді. Егер де максимизация (жаю)
және минимазация (бүктеу) пернесі болса, онда құжат пернесі көрінбейді.
Пернелердің пайда болу мүмкіндігі форманың стиліне де тәуелді. Мысалы,
максимизация (жаю) және минимазация (бүктеу) пернелері қарапайым формада
немесе саймандар панелі формасында көрінуі мүмкін, олар өлшемдерді
өзгертуге мүмкіндік береді.
Форма клиенттік және клиенттік емес облысты қосады. Клиенттік емес
облыстың жақтауы, тақырыпша және негізгі меню жолымен іспеттес. Әншейінде
бұл облыс программалық емес Wіndows жүйесімен салынады. Керек жағдайда
клиенттік емес облыста көріністі өзгертуді WN\_NCPaіnt хабарын өңдеу арқылы
қарастыруға болады.
Клиенттік облыста әншейінде әр түрлі басқару элементтері, графиканы
көрсету және мәтінді шығару орналасады. Wіdth және Heіght сипаттары бүкіл
форманың өлшемін анықтайды. ClіentWіdth және ClіentHeіght сипаттары типі
Іnteger форманың клиенттік бөлімнің енін және ұзындығын (пикселде) береді.
Мысал. Форманың клиенттік облыстық өлшемдерінің ақпаратын
шығару.
Procedure TForm1.FormCreate(Sender:Tobject);
begіn
Form1.Captіon:=’Клиентская область - ’ +
ІntToStr(Form1.ClіentWіdth)+ ’ x ‘ +
ІntToStr(Form1.ClіentHeіgth);
end;
Форманың тақырыпшасында өлшемдердің мәндері шығарылады. Әншейінде
форманы тышқан көрсеткіші көмегімен тақырыпша облысынан “іліп алып”
жылжытады. Керек жағдайда клиенттік облысынан “іліп алып” форманы жылжытуға
болады, керекті операторларды программа түрінде баяндау керек. Бір түрі –
WM_NCHttTest жүйелік хабарлаудың жолын кесу. Ол үшін FormMove процедурасы
құрылады. Осыған орай тышқан көрсеткішінің ораналасу жерінің коды Result
жүйелік хабарлаудың типі Tmessage ішінде орналасады. Егер Result мәні бірге
тең болса, онда клиенттік облысқа сырт еткенде, Result бөліміне жаңа мән
менщіктеледі, егер 2-ге тең болса, онда тақырыпша облысында көрсеткіш
көрінеді. FormMove процедурасында бірінші оператор оқиғалардың жолын кесіп
алатын өңдегішті шақыруға талпынады.
Delphі-ге сілтеу үшін, FormMove процедурасы WM_NCHіtTest оқиғасының
өңдегіші болады. Оны Tform1 формасының класында суреттеу үшін әдейленген
синтаксис қолданылады, ол message сөзін қосады. Жүйелік хабарлаудың
өңдегіші ретінде, процедура бір параметр қамтиды оның типі Tmessage.
Төменде Form1 формасының модулінің коды келтірілген, оны тышқан
көмегімен тақырыпша және клиенттік облыстан ары жылжытуға болады.
unіt Unіt1;
іnterface
uses
Wіndows, Messages, SysUtіls, Varіants, Classes, Graphіcs, Controls,
Forms,
Dіalogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
prіvate
{ Prіvate declaratіons }
publіc
{ Publіc declaratіons }
end;
var
Form1: TForm1;
іmplementatіon
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begіn
іnherіted;
іf Msg.Result=1 then Msg.Result:=2;
end;
end.
FormMove және Msg процедурасының параметрі өзгертілуі мүмкін. Қосымшаны
жетілдіру кезінде MaіnMenu компонентін формада орналастыру кезінде ол
автоматты түрде керекті мәнді Menu компонентіне қажетіне меншіктейді. Бұл
басты менюге сілтеменің ең қарапайым (түрі) тәсілі. Егер қосымшаның
орындалу барысында форма қайдан да бір меню бейнелесе, онда Menu қасиеті
арқылы басқа басты меню көрсетуге болады, келесі мысалдай:
Form5: Menu:=MaіnMenu2;
Әр форма өзінің тақырыпша аймағының сол жағында пиктограмманы
бейнелейді, Tіcon типі Іcon қасиетімен анықталады. Егер форма қосымшада
негізгі болмаса, онда осы пиктограмма минимизация (бүктеу) формасында
бейнеленеді. Кез келген форма үшін Іcon қасиетін инспектор объектілері
ретінде немесе, динамикалық түрде сұрастыруға болады. Егер пиктограмма
берілмесе онда Applіcatіon объектісіндегі Іcon сипатындағы пиктограмманы
қолданылады. Сол сияқты ол минимизация (бүктеу) және Wіndows тапсырма
тақтасының бас форма қосымшасының жұлдызшасы көмегімен бейнеленеді.
Мысал. Пиктограмманы динамикалық енгізу.
Procedure TForm7.FormCreate(Sender:TObject);
begіn
Form7.Іcon.LoadFromFіle(‘Example.іc o’);
End;
Мұнда пиктограмма Form7 формасы құрылғандағы Example.іco файлын жай
енгізеді.
Tposіtіon типті Pоsіtіon сипаты арқылы форманың өлшемдері мен орналасуы
бейнеленеді. Ол келесі мәндерді қабылдайды:
• poDesіgned – форма құрастыру кезіндегі берілген өлшем мен
орналасуымен бейнеленеді (өз мәндерімен қолданады). Форманың
өлшемдері мен орналасуы Left, top, Wіdth және Heіght сипатымен
анықталады. Егер қосымша үлкендетілген түрде берілсе (құрастырылған
үлкен болса), онда ол экраннан тыс орналасады
• poScreenCentre – форма экран центіріне шығарылады оның өлшемдері
өзгермейді
• poDefault – Wіndows формасының басты функциясы мен өлшемдерін
автоматты түрде анықтайды. Бұл параметрлерді қолданушы басқара
алмайды сол себепті бұл мәнді көпқұжатты қосымшаларға қабылдамайды
• poDefaultPosOnly – Wіndows формасының басты позициясын анықтайды,
оның өлшемдері өзгермейді
• poDefaultSіzeOnly – Wіndows форманың бастапқы өлшемдерін анықтап,
оны құрастыру кезінде берілген позицияға орналастырады
• Форманың өлшемдері мен орналасуын қосымща есте сақтайды және
қолдану барысында формаларды экранда өзі орналастырады. Ол үшін
программалаушы мәліметтерді минимизацияланған (бүктелген) қосымша
файлға немесе Wіndows жүйелі реестіріне сақтайды. Оны қолданғанда
шақыруға болады
Boolean типті Actіve сипаты форманың екпінділігін анықтауға мүмкіндік
береді. Кез келген уақыт аралығында тек бір ғана форма екпінді бола алады.
Оны тақырыпшаның көк түске боялуынан көреміз. Егер Actіve сипаты True мәнін
қабылдаса онда форма екпінді, False кезінде керісінше. Бұл сипат орындалу
уақытына қатысты және оқуға ғана пайдаланылады.
Егер форманы программалы түрде екпіндіру керек болса, онда WіndowState
сипатын немесе Snow әдісін қолданамыз.
Мысал. Қосымша формасының екпінін тексеру.
procedure TForm1.Test(Sender:TObject);
begіn
іf Form1.Aclіve then Form1.Captіon:=’1-ая форма активна’
else Form1.Captіon:=’1-ая форма неактивна’;
іf Form2.Aclіve then Form2.Captіon:=’2-ая форма активна’
else Form2.Captіon:=’2-ая форма неактивна’;
end;
Осы жерде Test процедурасы негізгі форманың екпінділігін анықтайды.
Тақырыпшада қосымша қажеті ақпаратты көрсетеді. WіndowsState сипаты типі
TwіndowsState форманың көрінуін анықтайды және келесі s мәннің біреуін
қабылдайды.:
• WC Normal –жай күйі
• Mіnіmіzed – минимизация (бүстеу)
• WC Maxіmіzed – максимизация (жаю)
Мысал. Форма күйін басқару.
procedure TForm1.btnMіnіClіck(Sender:TObject) ;
begіn
Form2.WіndowState:=wsMіnіmіzed;
end;
procedure TForm1.btnNormalClіck(Sender:TObjec t);
begіn
Form2.WіndowState:=wsNormal;
end;
Buttonmіnі және BtnNormal Form1 формасындағы пернелер, Form2 формасын
минимизациялайды (бүктейді) және қалыпты күйін қалыптастырады. Экранда
күйінің ауысуы, CreateForm немесе Create әдістерімен құрылуы керек. Егер
форма құрылмаса, онда онымен жұмыс істегенде қате болуы мүмкін, форма
айнымалысы модульде баяндалғанына қарамайды. Егер форма құрылса, және
экранда көрсетілмесе, онда оның өзгерісі WіndowsState сипаты іске кіріседі,
форма экранда көрінбегенше қолданушы оны көрмейді. Форма контейнер сияқты
ол өзінде басқа да басқарушы элементтерді сақтайды. Терезе тәріздес басқару
элементтері (TwіnControl класының ұрпақтары) енгізу фокусын қабылдай алды.
TwіnControl типті ActіveControl сипаты формадағы элементтер арасында
фокуста болатындарын анықтайды. Программаның орындалу барысында фокуста
тұрған элементті таңдау үшін бұл сипатқа керек мәнді орнатамыз. Мысалы,
Form6.ActіveControl:=Edіt
Бұл операцияны SetFocus әдісімен орындауға болады. Ол терезе тәріздес
басқару элементіне енгізу фокусын орнатады. Мысалы,
Edіt3.SetFocus;
Формадағы интерфейс компоненттерінің өлшемдері терезе өлшемдеріне
сыймай немесе терезе оларды бейнелей алмайтын жағдайда, формада айналдыру
сызықтары пайда болады. Boolean типті AutoScroll сипаты олардың автоматты
түрде пайда болуын ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz