ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.04.2024
Просмотров: 89
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
4. Delphi оқиғалары.
Бұрыннан білетініміздей, Windows операциялық жүйесі көпміндетті, яғни бір уақытта бірнеше әрекетті қатар орындай алады. Біз бағдарлама терезесінде батырманы шерткенде, Windows жүйесі нақ осы бағдарламада бір оқиға болғандығын анықтап, оған хабарлама жолдайды. Ал біздің бағдарлама оған тиісінше жауап әрекет жасауы керек. Ол үшін біз бағдарламалаушы ретінде осы оқиғаны орындату кодын жазамыз. Сонда Windows үшін бағдарлама құрылымы әрқайсысы белгілі бір нақты оқиғаны өңдеуге жауапты және сол оқиға болған кезде ғана шақырылатын кіші бағдарламалар жиынтығынан тұрады екен.
Ал Delphi бізді Windows – тан хабарлама алу қажеттілігінен құтқарып, ол қызметті бір өзі атқарады. Мұнда әр компоненттің өзінше әсер ете алатын біршама көп оқиғалар жиынтығы бар. Бағдарламалаушы бағдарламада қай оқиғаны өңдеу қажеттігін өзі анықтайды.
Енді осының алдында құрылған жобаны ашайық. Edit1 компонентін шертейік. Ол обьектілер инспекторында көрінеді. Сонда Инспектордан екі астарды көресіз: Properties(Қасиеттер) және Events(Оқиғалар). Events астарына ауысайық.
Қажетті оқиғаның өңдеуші бағдарламасын құру үшін, ол бойынша маусты екі рет шертеміз. Ал егер қалып кеткен тізімді ашатын болсақ, онда осы компонентке жарамды дайын өңдеуіштер бар болып шығады. Сонымен бір өңдеуіш бірнеше компоненттің оқиғаларын өңдеуге шақыруы мүмкін.
Алдыңғы бағдарламаны Пішіндегі мәтін бірден енгізілу бойына көрінетіндей етіп өзгертейік. Edit1 – ге мән енгізген кезде ондағы Text қасиеті өзгеріп, онда жаңа әріп пайда болады. Ол үшін onchange(change- ағ. өзгеру) оқиғасын пайдаланайық. Сонда:
-
onchange бойынша екі рет шертейік, сол кезде біз жаңа құрған өңдеуіштің ішінде тұрамыз. -
Label1 – дің Caption қасиетіне Edit1 – дің Text қасиетінің мәнін меншіктейік: Label1.Caption:=Edit1.Text; немесе оны алдыңғы бағдарламадан көшіріп, осыған жазайық.
Бағдарламаны іске қосайық. Барлығы жұмыс істеп тұрғанын көреміз.
Енді onclick оқиғасын қарастырайық. Бұл оқиға енгізу жолын бұрын енгізілген символдардан тазарту үшін қолданылады. Мұнда өзіңіз байқағаныңыздай, Delphi-де жол – бірлік тырнақшаға( ' ) алынып жазылуы қажет.
Ал жолдағы символдар тазару үшін өңдеуіштің Text қасиетіне бос жол меншіктелуі керек, яғни оның арасында бос орын да болмауы қажет. Сонда ол былай жазылады:
Edit1.Text:= '';
Бұл мақсатта Edit компонентінің осыған арналған
Clear (ағ.тазалау) әдісін қолдануға болады, ол мынау: Edit1.Clear;
Бұл жерде біз бағдарламаны пайдаланушының жағдайын ескеруіміз керек. Біздің дайындаған бағдарламаны пайдаланып, ол мәтінді енгізерде бірдеңені өзгерткісі келіп, оны мауспен шерткенде, онда сол жердегінің барлығы өшіріледі.
Мұндай кезде Edit – тің onEnter оқиғасын қолданған жөн. Сол кезде сіз енген бойда, компонент мән енгізуге дайын тұрады немесе ол үшін арнайы батырманы және оның onclick оқиғасын пайдаланған қолайлы.
Сонымен әр компоненттің өз оқиғалар жиынтығы болатыны белгілі. Біз солардың
-
Onchange -
Onclick -
onEnter деген түрлерімен таныстық.
Әрбір бейнелік компонентте болатын мына маңызды оқиғалар төмендегі жағдайларда пайда болады:
-
onExit – компонент енгізу фокусын жоғалтқан сәтте; -
ondblclick – компонентті мауспен екі рет шерткен сәтте; -
onkeydown – пернетақта пернесін, ол төменгі қалыпта тұрғанда басқан сәтте; -
onkeyup – пернетақта пернесін, ол жоғарғы қалыпта тұрғанда босатқан сәтте; -
onkeypress – пернетақта пернесін басқан сәтте; -
onmousdown – маус батырмасын, ол төменгі қалыпта тұрғанда басқан сәтте; -
onmouseup – маус батырмасын, ол жоғарғы қалыпта тұрғанда босатқан сәтте; -
onMouseMove – маус нұсқағышын компонент үстінде жылжытқан сәтте.
Кезкелген бағдарламамен жұмыс жасарда, оның ең маңызды компоненті – Пішіннің басты оқиғасы – onCreate ескерілуі қажет. Оқиға пішіннің экранда көрінуінен бұрын пайда болады. Бұл оқиға, мыс, Пішіннің экрандағы өлшемдері мен орнын баптауға болатындай етіп бағдарлама элементтерінің тиісті қасиеттерін беру үшін қолданылады. Егер сіз көрінбейтін бағдарлама құрғыңыз келсе, онда пішіннің ені(Width) мен биіктігін(Height) нөлге(0) теңеуге болады. Бірақ оны жобалау кезінде жасасақ, онда экран көрінбей жұмыс істеуге кедергі болады. Сондықтан оны onCreate оқиғасы бойынша:
Form1.Width:=0;
Form1.Height:=0; орындайды.
Енді Пішіннің тақырыбын да көрсетпеуге болады, ол үшін обьектілер инспекторында BorderStyle параметрін None – ге тең етіп алса болғаны. Сол кезде пішін тіпті көрінбейді, оның есептер тақтасында тек белгісі ғана шығып тұрады.
-
Delphi тілі. Айнымалылар, тұрақтылар және
олардың типтері.
Delphi тіліндегі барлық мәліметтер оны қолданғанға дейін сипатталуы тиіс. Компилятор солай болғанда ғана мәліметтердің бағдарламада сипатталуына сәйкес қолданылғандығын бақылап, қатенің алдын алады. Delphi тілінде кезкелген шама тұрақты немесе айнымалы мәнге ие. Оның аты(идентификаторы) латын әріптерінің тізбегінен, цифрлар мен астын сызу таңбасынан тұрады, олар тек цифрдан басталмауы тиіс. Мұнда символдар регистрінің ролі болмайды.
Бағдарламада мәліметтерді сипаттау орны логикалық блок – begin/end – тен тыс орналасады. Модульде implementation түйінді сөзінің алдында сипаттау блогы жазылады:
var
Form1: TForm1;
Міне осы жерде, келесі жолдан бастап айнымалы мен тұрақтыларды жариялаған қолайлы. Айнымалылар былай сипатталады:
Var айнымалы_аты: айнымалы_типі;
Мұнда var – түйінді сөз. Атау ретінде кезкелген бұдан бұрын сипатталмаған және тілдің түйінді немесе қосалқы сөздері болып табылмайтын идентификаторды алуға болады.
Бір типті бірнеше айнымалыларды сипаттау қажет болғанда, оны былай жазады:
Var A,B,C: Integer;
Егер бірнеше сипаттауды бірінен соң бірін жазғанда, бір ғана var түйінді сөзін қолдануға болады:
var A,B: integer;
C,D: String;
Тұрақты шамаларды, басқаша константа деп атайды. Бағдарламада, әдетте, сандар мен жолдарды тікелей де пайдалануға болады: 3.1415 немесе ‘Бұл ПИ санының мәні'. Алайда тұрақтыларды идентификаторға меншіктеген ыңғайлы, ол үшін const түйінді сөзі қолданылып, былай жазылады:
Const pi=3.1415;
BelgiPi:String=’Бұл Пи санының мәні’;
Айтпақшы, Pi тұрақтысы Delphi – де берілген, сондықтан оны қолданғанда 3.1415 санын тұрақтыға меншіктесе болғаны.
Енді Delphi – де қолданылатын мәліметтер типін қарастырайық. Оларға – жолдар мен сандар жатады. Жол деп бірлік тырнақшаға алынып жазылған символдар тізбегін айтады. Мыс, 'бұл мәтіндік жол' деген сияқты. Егер мәтінде тырнақша белгісі болған жағдайда, онда оны екі мәрте жазу қажет, мыс: ‘бұл’’- бірлік тырнақша белгісі’.
Жол бос болуы да мүмкін, онда ол былай белгіленеді: ‘’.
Жол, көп таралған жолдық тип – String –пен сипатталады. Осы типті жол көлемі 2Гб-қа дейінгі символдардан тұра алады. Жолды шекті мөлшермен шектеу қажет болғанда, онда символдар санын String-тен кейін тік жақшаға алып жазады, мыс: String[50].
Жеке символдар типі Char түрінде сипатталып, бірлік тырнақшаға алынып жазылады: ‘ү’ . Ал мынадай экранда бейнелеуге болмайтын, мыс, жол соңын білдіретін символды(#13), жолды тасымалдау символын(#10), олардың алдында # таңбасы бар сандық коды(ANSI) түрінде жазады, мыс: #0. Delphi-де нөл – терминделген жолға жатады. Мұндай жолдардағы символдар есебі нөлден басталып, коды нөл болатын (#0) символымен аяқталады. Бұл жолдардың типі – Pchar.
Сандар бүтін және бөлшек сандар болып бөлінеді. Мына кестеде бүтін сандардың стандартты типтері мен олардың тиісінше қабылдай алатын мәндерінің аралығы көрсетілген:
Integer | -2147483648 .. +2147483647 |
Cardinal | 0 .. 4294967295 |
Shortint | -128 .. +127 |
Smallint | -32768 .. +32767 |
Int64 | -263 .. +263-1 |
Byte | 0 .. +255 |
Word | 0 .. +65535 |
Бүтін сандар типінің бағдарламада қолдануға ыңғайлысы – ол Integer. Ал оның басқа типтері мәліметтер компьютер жадынан барынша аз орын алуы үшін қолданылады. Бөлшек садардың ондық нүктемен ажыратылған бөлшек бөлігі бар. Оларды соңында сол жақ бөлігін 10-ның неше дәрежесіне көбейту керектігін көрсететін саны бар е(немесе Е) символымен жазуға болады.
Төменгі кестеде бөлшек сандардың стандартты типтері мен олардың қабылдай алатын мәндерінің аралығы берілген:
Real | 5*10-324 .. 1.7*10308 |
Real48 | 2.9*10-39 .. 1.7*1038 |
Singl | 1.5*10-45 .. 3.4*1038 |
Double | 5*10-324 .. 1.7*10308 |
Extended | 3.6*10-4951 .. 1.1*104932-1 |
Comp | -263 .. +263-1 |
Currency | 922337203685477.5807 |
Бағдарламада қолдануға барынша ыңғайлы тип – Real. Оған шамалас типке Double жатады, бірақ оның алда өзгеруі де мүмкін. Currency(финанстық) типінен басқа бөлшек сандар жуықтап есептеледі.
Мәліметтердің ендігі бір типіне логикалық Boolean типі жатады. Ол True(ақиқат) және False(жалған) деген екі мәнді ғана қабылдайды. Мұнда True > False болады.
Енді жоғарыда айтылған компоненттерді, олардың қасиеттері мен оқиғаларын пайдаланып, өз айнымалыларын енгізу арқылы есептеу жүргізетіндей бағдарлама құрастыруға болады. Мұнда есептелген мәнді экранға қалай шығарамыз, соны қарастырайық. Ол үшін бұл мәнді қандай да бір Text не Caption қасиеті бар компонентке орналастыру қажет. Оған мысал ретінде Label мен Edit компоненттерін, тіпті Caption қасиеті арқылы ақпаратты шығаруға болатын Пішінді де қолдануға болар еді. Былай жазылған мына бағдарлама:
var A, B, C: Integer ;
begin
A := 5 ;
B := 10 ;
C := A+B ;
Label1.Caption := C ;
end ;
қате шақырар еді, өйткені мұндағы Text және Caption қасиеттері String типті, ал айнымалылар – Integer типті болып тұр. Мұндай бағдарлама есептеу жүргізе алмайды. Бұдан шығатын жол бар, ол үшін С айнымалысының мәнін жолдық мәнге түрлендіру қажет. Delphi-дің мұны орындайтын IntToStr ішкі функциясы бар. Сонда қате шақырған бағдарлама мына түрде жазылар еді:
Label1.Capton:=IntToStr(C);
Бірақ бұл бағдарлама 15 санын ғана көрсетеді.
Енді Edit компонентін пайдаланып көрейік. Енгізілген сандар осы компоненттердің Text қасиеттерінде жатады. Пішінге Edit-тің екі, бір Label компонентін және батырманы басқанда есептеу жүргізетін Button батырмасын орналастырайық. Edit1 және Edit2 компоненттеріне қосындыны табу үшін сандар енгізейік. Сонда ол бағдарлама былай жазылады:
var A, B, C: Integer;
begin
A := Edit1.Text;
B := Edit2.Text;
C := A+B;
Label1.Caption := IntToStr(C);
end ;
Бұл да жоғарыдағы сияқты, қате шақырады, себебі мұнда да А мен В айнымалылары сандық Integer типті болса, ал Text қасиеті – String типті. Осы қатені жөндеуге StrToInt функциясы көмектесе алады, өйткені ол мәтінді бүтін санға түрлендіреді. Сонда А мен В айнымалысына мән меншіктеу операторлары былай жазылады:
A:=StrToInt(Edit1.Text);
B:=StrToInt(Edit2.Text);
Мұнда біз А,В,С айнымалыларын түсінуге оңай болу үшін пайдаландық. Осы бағдарлама операторларын бір жолға былай жазған өте ыңғайлы:
Label1.Caption:=IntToStr(StrToInt(Edit1.Text)+StrToInt(Edit2.Text));
Осыған ұқсас Real типті жылжымалы үтірлі нақты сандарды жолдық айнымалыға(FloatToStr) және оны кері түрлендіретін (StrToFloat) функциялары бар. Көбінесе Delphi-де Real типті есептеулер нәтижесінде үтірден соң ұзын «құйрық» болады. Мұны қалай шектеуге болатынын «Жолдық айнымалымен жұмыс» тақырыбында қарастырамыз.
6. Мәліметтердің өздік және құрылымдық типтері.
Мәліметтердің сандар мен жолдардан басқа күрделірек қосымша типтерін пайдаланбай жақсы бағдарлама құру мүмкін емес. Delphi-де бағдарламалаушы өз мақсатына жету үшін мәліметтердің өздік (өзі қалаған) типін құра алады.
Бағдарламаға мәліметтердің жаңа типін енгізу үшін Type түйінді сөзін қолданатын оператор енгізіледі:
Type типтің_атауы = типтің_сипатталуы
Мәліметтердің саналатын типі-бұл мәндер аралығы жай ғана реттелген идентификаторлардан тұратын тип. Бұл типті мәндерді сандармен емес, сөзбен сипаттау неғұрлым көрнекілеу болатын мәліметтер типін сипаттауға қолданған тиімді болады. Ол идентификаторларға кіретін әр атау тұрақты болып саналады да, бір-бірінен үтірмен бөлініп, жалпы атау тізімі жай жақшаға алынып жазылады. Мыс, Қазақстанның кейбір футбол командаларын сипаттайтын типті былай жазып көрсетуге болады: