Бексарыұлы Мұратбек delphi визуалды бағдарламалау жүйесі әдістемелік оқу құралы



бет3/6
Дата27.05.2018
өлшемі2,9 Mb.
#40953
1   2   3   4   5   6

if OpenDialog1.Execute then Memo1.     Lines.LoadFromFile('OpenDialog1.FileName');

Файл таңдау нәтижесінде OpenDialog компонентінің FileName қасиеті таңдалған файдың толық адресінің мәніне ие болады., ал ол мәнді біз Memo компонентін жүктеу жайлы функциясына енгізген болатынбыз.

Әрине, бұл жазылған өрнектер тек бір жолға жазылғанда ғана дұрыс болады. Ал егер бағдарлама OpenDialog өрнегін бірнеше рет қолданса, онда оны қайта-қайта жазудан жалығатын боласың. Бұл жағдай үшін Delphi-де «with – біріктіруші оператор» дейтін оператор бар. Ол осындай қайталап жазуға тура келетін кез-келген объектілер үшін қолданылады.

Ол былай жазылады: with Объект do


      begin
...
      end;

Логикалық жақша ішіне объект қасиетін бірден жазып көрсетуге болады, егер жақша ішінде бір ғана оператор болса, онда ол міндетті емес. Файлды жүктеу үзіндісін « біріктіру операторын» пайдаланып, қайта жазайық:


   with OpenDialog1 do
      if Execute then
     Memo1.Lines.LoadFromFile('FileName');

OpenDialog пен SaveDialog компоненттерінің қасиеттері бірдей болғандықтан, мәтінді сақтау да сондай ұқсас. « Сохранить как » батырмасын басудың өңдеуішін құрайық, ол үшін былай жазамыз:


with SaveDialog1 do
      if Execute then
        begin
           Memo1.Lines.SaveToFile('FileName');
    OpenDialog1.FileName:=FileName; // Жөнделген //мәтін бастапқы мәтінді өшірмес үшін
        end;
Соңынан « Сохранить» батырмасы үшін жазайық:

Memo1.Lines.SaveToFile('OpenDialog1.FileName'); //қайдан бастап санады, сонда сақтайды ;


Осындай үзінділермен жұмыс істеу кезінде барлық файлдар ішінен қажетті директориядан ғана таңдауға болатынын байқаймыз.

Сонда, мысалы, мәтіндік файлдарды немесе өзіміз қалаған басқа файлдар типін көрген ыңғайлы. Ал ол үшін сүзгілер, яғни біздің компоненттердің Filter қасиеті қолданылады. Ол объектілер

инспекторында бапталады. Оны таңдау кезінде сүзгілер редакторына көшуіміз мүмкін. Мұнда FilterName бағанына сүзгілер аттарын, ал Filter бағанына – файлдар маскаларының тізімін жазамыз.

Біздің жағдайда файл маскасы мына түрде болады:
*. файл_кеңейтілімі ;
Мұндағы  * – кеңейтілімге жарайтын кез-келген аты бар файл таңдалатынын білдіреді.

Title диалогының қасиеті бізге тақырыпқа қажетті сөзді жазу мүмкіндігін береді. Егер оны бос қалдырсақ, онда тақырыпта стандартты « открыть » немесе « сохранить » жазбалары тұрады. InitalDir қасиеті оны ашқан сәтте өзімізге қажет директорияда тұруға мүмкіндік жасайды. Мұны біз жобалау кезеңінде де, бағдарламалау бойынша да атқара аламыз.


11. Қосымша пішіндермен жұмыс.
Delphi –де де қосымша Пішіндермен жұмыс істеуге мүмкіндік бар. Мұнда біз тұтынушымен сұхбат жүргізуге және қажетті ақпаратты қабылдауға және оны шығаруға мүмкіндік беретін

қосымша пішіндерді оңай құра аламыз. Біз мұнда Delphi –дің негізгі пішініне қосымша бірнеше пішіндерді құрып үйренеміз.

Бағдарламаға жаңа пішін енгізу басты беттегі батырманы (New Form) басу арқылы, соған қоса тиісті командаларды : File -» New -» Form орындау арқылы жүзеге асырылады.

Пішін оның жұмысын сипаттайтын жаңа модульмен бірге құрылады. Оны бағдарламадан жоюға болады: ол үшін батырма бар және мына меню командасы: Project -» Remove from project.... қолданылады. Пішін модульмен бірге құрылатындықтан, көрінген терезеден жойылуға тиісті модульді таңдау керек. Ал егер Unit 1 модулінің өзін жойғымыз келсе не болады, сонда не қалады?



Project -» View Sourse командасын орындайық. Код редакторында (Бас терезенің коды бейнелетін пішіннің емес) жаңа астар пайда болады. Мұнда Бас терезе көрінбейді, бірақ барлық жобаны басқарады және жалпы пішінсіз де жұмыс істей алады. Оған өз кодыңды орналастырып және Паскальдағы сияқты бағдарлама жазуымызға болады.

Барлық жаңа жобалар бірден өзі жасалатындар қатарына енгізіледі, яғни олар бағдарламаның жұмысын бастаған кезден жобаның Бас пішінімен бірге құрылып көбейе береді.



Бағдарламада біз мұнымен айналыспаймыз, алайда бір уақытта бірнеше пішіннің жасалуы бағдарламаның орнын азайтады және қаншама уақыт алады. Сондықтан да қажетті сәтте ғана тиісті пішінді жасауды үйренуді ұсынамын.

Біріншіден, пішіннің өздігінше жасалуын тоқтату керек. Ол үшін Project Options командасын орындаңыз. Көрінген терезеде: Main Form(Бас Пішін), Auto-create (өздігінен жасалатын) және AvaiLable(қол жетімді) түріндегі жоба пішіндері бейнеленеді. Мұнда бізге пішінді өздігінше жасалатын түрден қолжетімді түрге көшіруіміз қажет. Ол: “>” батырмасын (керісінше амал – “<”) басу арқылы орындалады.

Сонымен Form1 Бас пішіні өзі жасалады, ал қосымша Form2 пішінін біз бағдарламада қажетіне қарай өзіміз құрамыз. Егер біз осы айтылғанды жасамаған болсақ, онда экранда жаңа пішін шығару үшін былай деп жазсақ жеткілікті :

Form2.Show; // жай пішін үшін
Form2.ShowModal; // модальды пішін үшін
Егер біз қосымша пішіндерді қолжетімді түрге көшірген болсақ, онда осындай пішінді шақыру алдында, оның бар-жоқтығын былайша тексеру қажет:

if (not Assigned(Form2)) then // Пішіннің бар-//жоқтығын тексеру
       Form2:=Form2.Create(Self);// Пішінді құру
    Form2.Show; // (немесе Form2.ShowModal) //Пішінді //көрсету
Енді жай пішінмен Модалды пішіннің айырмашылығын қарастырайық. Жай пішін экранда орналасқан барлық пішіндердің бірінен біріне еркін көшуге мүмкіндік береді.

Ал модалдық пішін оны шақырған сәтте жобаның пішіндері арасындағы көшуді жабады да, жабылғанша тек сол ашылған пішінмен ғана жұмыс істейсіз.



Оған қарамастан екінші пішінді шақыруға әрекет жасасаңыз, бағдарлама мынадай сауал шығарады:

Ол сауалдың мазмұны мынау: Form1 пішіні Unit 2 модулінде жарияланған Form2 пішінін шақырып тұр, бірақ ол пішін қолданылған модульдер тізімінде жоқ.

Сіз оны қосқыңыз келе ме?

Мұны директива {$R *.dfm} алдындағы модулдің басына мына бағдарлама үзігін uses Unit2;


қосу арқылы шешу керек. Негізінде мұны компиляция алдында «қолмен» қосуға да болар еді. Сонда сауал да болмайды. Бірақ соның қажеті бар ма?

Мұнда «Yes»» деп жауап қайтарып және F9 – ды басамыз.

Алдымен пішінге оны жабу операциясын енгіземіз. Мұны бірнеше тәсілмен істеуге болады. Батырманы алып, оған « Закрыть» деп жазып, сосын OnClick өңдеуішке былай жазамыз:
Form2.Close; // негізінде жай ғана Close;

Бұл оператор оны пішін менюінен шақырған кезде жұмыс істейді, әрине меню (Standard астарындағы MainMenu компоненті) оған енгізілген жағдайда . Бұл туралы алда әңгімелейтін боламыз.

Бізге енді модальды пішінге жататын пішіндердің жабылу тәсілдерін қарастыруымыз керек. Оның сұхбат жасауға арналған терезелерінде сұрақтарға жауап беруді қажет етеді.

Ол үшін пішінге мына : «Иә», «Жоқ» «Болдырмау» және т.б жауаптарға сәйкес батырмаларды орналастыру қажет. Әр батырманың mrYes, mrNo, mrCansel және басқа мәндерге ие ModalResult қасиеті бар. Мұнда таңдалған батырманың ModalResult мәні пішіннің осы қасиетіне беріледі. Бұл қасиет объектілер инспекторынан көруге болатын пішін қасиетінің тізімінде жоқ, бірақ оны бағдарламалық түрде таба аламыз. («Form2» деп жазып нүкте қой, сосын шыққан тізімнен ізде)

ModalResult қасиетінің mrNone мәнінен бөлек мәні бар батырмасын бассақ ( тіпті батырмада өңдеуші болмаса да) ол пішіннің жабылуына әкеледі. Осыдан кейін пішіннің осы қасиетін таңдау арқылы, тұтынушының қойылған сұраққа қандай жауап бергенін анықтауға болады:
procedure Tform1.Button1Click(Sender: Tobject);
begin
Form2.ShowModal;
if Form2.ModalResult=mrYes then // Бұл оператор Form2 //жабылған соң ғана қолжетімді болады
  Form1.Caption:='Тұтынушы оң жауап берді!';
end;

Осы мысалдан көріп отырғанымыздай, бір пішіннен басқа пішіннің қасиеттеріне , сол сияқты олардың компоненттеріне қатынас жасау үшін сол пішіннің аты көрсетілуі қажет екен. Оған қоса біз оның жұмысын сипаттайтын модулде қолданылатын мәліметтерге де қол жеткізе аламыз. Ол үшін де модулдің аты көрсетілуі қажет. Мысалы, Unit2 модуліндегі X айнымалымына қатынас жасау үшін: Unit2.X деп жазамыз.

Көбінесе бағдарламада пішінді жабу сәтінде белгілі бір операциялар орындалуы тиіс. Ол пішіннің OnClose оқиға өңдеуішінде жасалады. Ал енді пішінді жабуды болдырмауды қарастырайық. Осы мақсатта OnCloseQuery оқиға өңдеуішін қолдануға болады. Ол өңдеуіштегі CanClose логикалық айнымалысының қабылдайтын мәніне байланысты. Пішін CanClose:=True; мәнін қабылдағанда ғана жабылады.

Егер біз мынадай код жазсақ:


procedure Tform1.FormCloseQuery(Sender: Tobject; var CanClose: Boolean);
begin
  CanClose:=False;
end;
онда тұтынушы бағдарламаны тіпті де жаба алмайды, тек оны Windows-тың Міндеттер Диспетчерін/Диспетчер задач/ қолданып қана орындай алады.

12. Ішкі бағдарламаларды құру және оларды қолдану
Ішкі бағдарламалар – бұл арнайы операцияларды орындау үшін қызмет ететін процедуралар мен функциялар. Delphi-дің көптеген стандартты ішкі бағдарламалары бар, соған қарамастан кейде мәліметтермен жиі қайталанатын операцияларды орындауға арналған, өзгеріп тұруы мүмкін өзіндік бағдарламалар құруға тура келеді.

Жалпылай айтқанда, бағдарламалаудың « жоғарыдан төмен»деген әдісі бар. Бұл әдіс бойынша есеп ішкі бағдарламалар түрінде өрнектеліп, бірнеше қарапайым есептерге бөлінеді.

Бөлінген есептердің өзі қажетіне қарай бағдарламалаушы алдына қойылған міндет қажетті деңгейге дейін жеңілдетілгенше (барынша қарапайым түрге келгенше ) бөліне береді. Осындай ішкі бағдарламалар процедуралар мен функцияларға жатады.

Бұлардың екеуімен де бірдей нәтижеге жетуге болады. Алайда олардың өзара айырмашылықтары бар. Процедура қажетті операцияларды орындап, тізімдегі өз параметрлеріне нәтижелерін қайтарып береді. Функция да осы айтылғандарды орындап, оған қосымша нәтижені өзіне меншіктелген мәнге қайтарады. Сонымен функция неғұрлым әмбебап объект.

Ішкі бағдарламаларды сипаттау Procedure немесе function түйінді сөздерінен басталып, содан соң жақшаға алынған оның параметрлерінің тізімдері жазылады. Функция жағдайында әрі қарай қос нүкте қойылып, қайтарылған мәннің типі көрсетіледі. Соңында ( ; ) міндетті түрде қойылуы қажет. Ал ішкі бағдарламаның коды түгелімен логикалық жақшаның ішіне жазылады. Функция үшін кодта функция арқылы қайтарылған мән меншіктелуі қажет. Ішкі програмаларды жалпы түрде жазайық:


procedure Процедура_аты(параметрлері);
begin
 Процедура коды;
end;

   function Функция_аты(параметрлері): нәтиже_типі;
   begin
    Функция коды;
    Result:= нәтиже;
   end;

Осылай сипатталған ішкі бағдарламалар негізгі бағдарламаға ол орындалуға шақырылғанға дейін орналастырылуы тиіс. Бұл орындалмаған жағдайда компиляция кезінде « белгісіз идентификатор» деген хабарлама шығады. Ал оны бақылап отыру оңай емес. Бұдан шығатын жол – ол ішкі бағдарламалардың тақырыбын бағдарламаның барлық мәліметтерін сипаттайтын орынға орналастыру.

Мұндағы параметрлер - өзара үтірмен ажыратылған, қос нүктеден соң типі көрсетілген идентификаторлар тізімі.

Егер тізімде түрлі типтегі идентификаторлар бірнешеу болса, онда олар бір-бірінен (; ) арқылы ажыратылып жазылады. Бәрі де жалпы мәліметтерді сипаттаудағыдай. Бұларды формальды параметрлер дейді.

Ішкі бағдарлама шақырылғанда олар үтірден кейінгі сол типтегі параметрге ауысады.

Ішкі бағдарламада параметрлер болмауы да мүмкін, ол кезде олар негізгі бағдарламадағы мәліметтердің өзімен операциялар орындай береді.

Енді жергілікті мәліметтер ұғымын енгізу керек. Бұл мәліметтер ішкі програмаларды шақыру кезінде ғана болатын және пайдаланылатын айнымалылар, тұрақтылар мен ішкі бағдарламалар. Олар осы ішкі бағдарламада сипатталуы тиіс. Оның сипатталу орны – тақырып пен Begin түйінді сөзінің арасы. Жергілікті мәліметтердің аты бас тақырыптағы мәліметтер атымен бірдей болуы мүмкін, ол жағдайда жергілікті айнымалы қолданылады, бірақ одан бас тақырыптағы сол атпен берілген айнымалыға өзгеріс жасалмайды.

Жергілікті процедуралар мен функциялар да тек сол ішкі бағдарламаның ішінде ғана сипатталып, қолданыла алады. Айталық, екі санның қосындысын табу бағдарламасын жазу керек болсын дейік. Ол басқан кезде ішкі бағдарлама орындалатын Пішінге енгізілетін батырмадан (Button компоненті) және операндтарды енгізуге арналған екі енгізу жолынан (Edit компоненттері) тұрады.



Енді процедураны жазайық:

var
  Form1: TForm1;
  A, B, kosyndy: Integer;
procedure kos(A, B: Integer);
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
 A:=StrToInt(Edit1.Text);
 B:=StrToInt(Edit2.Text);
 Kos(A, B);
 Caption:=IntToStr(kosyndy);
end;

procedure kos (A, B: Integer);
begin
 kosyndy:=A+B;
end;
Мұнда процедура оны шақыруды ұйымдастыратын өңдеуіштен кейін орналасты және процедура тақырыбы мәліметтерді сипаттау блогына енгізілді. Бұл бағдарлама сол себептен орындалады. Бірақ оның орындалуы онша нақты емес сияқты.

Енді осы операцияларды функция көмегімен атқарайық:



var
  Form1: TForm1;
  A, B, kosyndy: Integer;
  function kos (A, B: Integer): Integer;
implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 A:=StrToInt(Edit1.Text);
 B:=StrToInt(Edit2.Text);
 kosyndy=kos(A, B);// бұл жерде ненің, қайдан //алынатындығы әлдеқайда түсінікті сияқты
 Caption:=IntToStr(kosyndy);
end;

function kos(A, B: Integer): Integer;
begin
 Result:=A+B;
end;

Делфи-де көлемі өте үлкен мәліметтер құрылымымен, мыс, бірнеше мың (одан да көп) элементтерден тұратын жиымдармен жұмыс істеудің ерекшеліктері бар. Міне осындай көлемдегі мәліметтерді ішкі бағдарламаға беру кезінде жүйе бұған көп уақыт пен ресурс шығындайды.

Сондықтан бұл кезде ішкі бағдарламаға олардың элементтерінің өз мәндері емес, айнымалы не тұрақтының атындағы сілтеме жіберілетін болады.

Ол өзіміз аты бойынша жібергіміз келген параметрлердің алдына var түйінді сөзінен бұрын жазу арқылы жүргізіледі.


function Kos(A, B: Integer; var Arr: array[1..1000000] of Integer): Integer;
Біздің ішкі бағдарлама мен батырманы басу өңдеуішінің сипаттамасына зер салсақ, онда өңдеуіштің аты алдында (ButtonClick) Tform1 тұрғанын көреміз. Сонымен Delphi ButtonClick- ті Form1 обьектісінің әдісі ретінде құрып тұр. Ал оның алдындағы Т әрпі оның тек обьект әдісі ғана емес, обьект класының әдісі екенін көрсетеді. Мұны көп тереңдетпей айтсақ, біздер енді процедуралар мен функцияларды Tform1 класының әдісі ретінде сипаттау арқылы класс обьектілерін олардың аттарын көрсетпей-ақ пайдалануға мүмкіндік аламыз, бұл бізге өте ыңғайлы. Сонымен бізге ішкі бағдарламада Пішінде орналасқан қандай да бір компонентті (мыс, Button1) пайдаланғымыз келсе, онда оны Form1.Button1.Width:=100; деп емес, енді былай жазамыз:

Button1.Width:=100;   //батырма ені

Мұнда оған қоса оның бірге қондырылған ішкі айнымалыларын (мыс, Sender обьектісі сияқты) пайдалануға мүмкіндік туады. Әрбір өңдеуіште бұл обьект шақырылатын ішкі бағдарлама көзін (біздің мысалда: Sender=Button1 қосынды табу көзін) көрсетеді.

Ішкі бағдарламаны класс әдісі ретінде сипаттай отырып, оны біз Delphi орналастырған – Tform1 класын сипаттау ішіне орналастыруымыз қажет. Button1Click процедурасының сипаттауы қайда орналасқанын қараңыз. Ол үшін Button1Click ішкі бағдарламаның ішіне меңзерді қойып, CTRL+SHIFT және меңзерді басқаратын «жоғары» немесе «төмен» батырмаларын бір уақытта басыңыз. Сонда біз ішкі бағдарламаның сипаттауына көшеміз, ал одан кері қайту үшін сол амалды тағы бір рет орындаңыз. Өз ішкі бағдарламаңыздың сипаттауын жаңа жолдың жанына қойсаңыз, онда TForm1 жазылмайтынын байқайсыз.
13. Delphi – дегі ерекше жағдайлар
Delphi – дегі ерекше жағдайлар тұрақты кездесіп тұрады. Ерекше жағдайлар деп нені айтамыз? Ол нәтижесінде қате пайда болатын және соның негізінде бағдарламаның орындалуы үзілетін жағдай. Мыс, нөлге бөлу – ерекше жағдайдың көп кездесетін түрінің бірі.

Мұндай жағдайдың алдын алу үшін, оған неге тексеру ұйымдастырмасқа, мыс, бөлшек бөлімінің нөлге тең болу шартын тексеретін. Әрине олай етуге болады. Бірақ көп жағдайда ерекше жағдайдың пайда болу көзі анық бола бермейді. Міне сондықтан да барлық жағдай үшін оны енгізе алмаймыз.

Бағдарламалаушы ерекше жағдайды бақылау үшін ол мүмкін болатын үзіндінің нұсқасын да, сол сияқты оның болуы мүмкін емес балама нұсқаны да дайындауы қажет. Сонда ерекше жағдайды бақылайтын оператор былай жазылар еді:
try
үзіндінің негізгі операторлары

excert

үзіндінің балама нұсқасы

end
Мұнда бағдарламаның негізгі бөлімін қамтитын оператордың try/excert бөлімі орындала бастайды. Осы бөлімнің қандай да бір операторында ерекше жағдай туа қалса, онда оның қалған операторлары орындалмай қалдырылады да, бөлімнің балама нұсқасы, яғни excert/end бөлігі орындалады. Ал егер бағдарламада ерекше жағдай байқалмаса, онда оның excert/end бөлігі қалдырылып кетеді.

Ерекше жағдайдың пайда болу/болмауына қарамастан, кодтың үзіндісі орындалуы қажет болған кейбір жағдайларда оны бақылап тексерудің тағы бір нұсқасын енгізуге болады:


try
   операторлар
finally
   қорытындылаушы әрекеттер
end;
Мұндағы негізгі операторлар дұрыс орындалуы да немесе ерекше жағдай туғызуы да мүмкін. Ал үзіндінің finally бөлігіндегі қорытындылаушы операторлар қандай жағдайда да орындалады.

14. Жолмен жұмыс
Delphi жүйесі жолдан тиісті ақпаратты ала отырып, оны өзімізге керек түрде бейнелеуге мүмкіндік береді. Бұл жүйеде жолды мынадай пішімдерге түрлендіруге болады. Олар:

  • Бүтін және жылжымалы нүктелі бөлшек түріндегі сандық пішім;

  • Уақыт мерзім, уақыт-мерзім пішімі;

  • Символдарды жоғарғы және төменгі регистрлерге түрлендіру;

  • Жолдарды салыстыру, жолдан іздеу жүргізу және ішкі жолдарға көшіру және т.б.

Delphi тікелей жолдармен жұмыста бір ғана, конкатенация, яғни біріктіру операциясын қолдайды. Бұл операция бір жолды басқа жолға біріктіреді:
var S, S1, S2: String;
begin
 S:=S1+S2;
end;

Мұндағы S – қорытқы жол, ал S1,S2 – жолдар. Жолдың ұзындығы, яғни саны Length(S: String) ішкі функциясы арқылы қайтарылады.

Жолмен толыққанды жұмыс атқару үшін мынадай стандартты процедуралар мен функциялар пайдаланылады.

Жолды сандық пішімге және оны керісінше түрлендіру функциялары;

Есептеулерді жүргізу барысында мәліметтерді енгізу және оның нәтижелерін шығару үшін мына фунциялар қолданылады:

IntToStr(N: Integer): String функциясы – N бүтін санын жолға түрлендіреді.

StrToInt(S: String): Integer функциясы – S жолын бүтін санға түрлендіреді.

FloatToStr(X: Extended): String функциясы – Х жылжымалы нүктелі санын жолға түрлендіреді.

StrToFloat(S: String): Extended функциясы – S жолын жылжымалы нүктелі санға айналдырады.
Мерзім мен уақытты түрлендіру процедуралары мен функциялары

Алдымен солардың ағымдағы уақыт пен мерзім туралы ақпарат беретіндерін қарастырайық. Олар:



Now: TdateTime функциясы – ағымдағы мерзім мен уақытты қайтарады.

Now: TdateTime функциясы – ағымдағы мерзімді қайтарады.

Time: TdateTime функциясы – ағымдағы уақытты қайтарады.
Ал мына функциялар оларды құрайтын (жыл, ай, күн, апта күні, сағат, минут, секунд, миллисекунд) шамалармен жұмыс атқарады:

DayOfWeek(Date: TDateTime): Integer функциясы – ағымдағы апта күнінің нөмірін қайтарады, мыс: 1-жексенбі, 7-сенбі.

DecodeDate(Date: TDateTime; var Year, Month, Day: Word) процедурасы – Date мерзімге бөледі: мұнда,Year – жыл, Month – ай, Day – күн.

DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word) процедурасы – Time уақытқа бөледі: мұнда, Hour - сағат, Min - минут, Sec - секунд, Msec – миллисекунд.

EncodeDate(Year, Month, Day: Word): TdateTime функциясы – Year – жыл, Month – ай, Day – күн мәндерін TdateTime типінің мәндеріне біріктіреді.

EncodeTime(Hour, Min, Sec, MSec: Word): TdateTime функциясы – Hour - сағат, Min - минут, Sec - секунд, Msec – миллисекунд мәндерін TdateTime типінің мәндеріне біріктіреді.
Енді мерзім мен уақытты TDateTime пішімінен жолдық пішімге ауыстыратын функцияларды қарастырайық:

DateTimeToStr(DateTime: TDateTime): String функциясы – мерзім мен уақытты жолға түрлендіреді.
DateToStr(Date: TDateTime): String функциясы – мерзімді жолға түрлендіреді.

TimeToStr(Time: TDateTime): String функциясы – уақытты жолға түрлендіреді.
Мына функциялар қайтарылатын жолдардың параметрлерімен жұмыс атқарады:

AnsiLoverCase(const S: String): String функциясы – төменгі регистрге түрленген S жолын қайтарады.

AnsiUpperCase(const S: String): String функциясы – жоғарғы регистрге түрленген S жолын қайтарады.
Length(const S: String): Integer функциясы – S жолындағы символдар санын қайтарады.

Trim(const S: String): String функциясы – S жолдағы бастапқы және соңғы бос орындар мен басқарушы символдарды жояды

TrimLeft(const S: String): String функциясы - S жолдағы бастапқы бос орындар мен басқарушы символдарды жояды.
TrimRight(const S: String): String  функциясы - S жолдағы соңғы бос орындар мен басқарушы символдарды жояды.

Мына функциялар екі жолды өзара салыстырады:



AnsiCompareStr(const S1, S2: String): Integer функциясы - S1 мен S2 жолдарын символдар регистрін есепке ала отырып салыстырады. Егер S1S1=S2 болса, 0 мәнін, ал S1>S2 болса, >0 мәнін қайтарады.

AnsiCompareText(const S1, S2: String): Integer  функциясы - S1 мен S2 жолдарын символдар регистрін ескермей-ақ салыстырады. Егер S1S1=S2 болса, 0 мәнін, ал S1>S2 болса, >0 мәнін қайтарады.
Ал мына функциялар ағымдағы жолдардан алынып тасталатын немесе қосылатын ішкі жолдарды іздестіреді:

Pos(Substr: String; Str: String): Integer функциясы – Str жолына SubStr-дің алғашқы ену позициясын(индексін) қайтарады. Егер Str жолында SubStr жоқ болса, оған 0 қайтарылады.

Insert(Source: String; var S: String; Index: Integer): Integer функциясы – S жолына нөмірі Index-ке тең символдан басталатын Source жолын қосады.
Delete(var S: String; Index, Count: Integer): Integer функциясы - S жолынан нөмірі Index-ке тең символдан басталатын және Count –қа дейінгі символдардан тұратын ішкі жолды жояды.
Мынау жол бөліктерін көшіретін функция:

Copy(S: String; Index, Count: Integer): Integer  функциясы - S жолына нөмірі Index-ке тең символдан басталатын және Count –қа дейінгі символдардан тұратын ішкі жолды қайтарады.

Бұдан басқа осы функцияны үтірден кейін қажетті цифрлар саны бар бүтін емес сандарды экранға шығаруға пайдалануға болады. Ол үшін, әуелі Real пішімді сандардан жол алайық. Содан соң Pos функциясы арқылы осы жолдағы үтір позициясын тауып, оған қажетті символ санын қосамыз және соны нәтижеге көшіреміз.


Мынау соның дайын функциясы:

function RealToStr(X: Real; Count: Integer): String; //Count - үтірден кейінгі цифр саны
var S: String;
    N: Integer;
begin
  S:=FloatToStr(X); // үтірден кейінгі ұзын цифрлар тізбегі
  N:=Pos(',', S);   //жолдағы үтір позициясы
  N:=N+Count;   // үтірден кейінгі қажетті таңбалар саны //берілген жолдың ұзындығын есептеу
  Result:=Copy(S, 1, N);
end;

II. Бағдарлама құрып үйрену

Бұл бөлімде біз алдыңғы 1- бөлімде оқып танысқан Delphi бағдарламалау тілі бойынша білігімізді осы визуалды ортада пайдалана білуге көмектеседі-ау деген төмендегідей практикалық жұмыстарды орындау арқылы жалғастырамыз.



Ескерту

Delphi ортасында бағдарламалау жұмыстарын қазақ тілінде орындау үшін пішінді ашқан бойда (Form1) ең алдымен Object Inspector терезесінің Properties астарында Font қасиетінің тұсындағы (...) көп нүктеде шертеміз, сонда ашылған Шрифт терезесінде қазақ қарпін (біздің жағдайда: Times New Roman) таңдауымыз керек. Міне осы әрекеттен соң ғана пішіндегі барлық жазбалар қазақ тілінде жазылатын болады, ал ол қаріпті үлкейтіп-кішірейту жұмысы сол Шрифт терезесінде бұрынғыша атқарылады.


Практикалық жұмыстар
1. «Менің бірінші бағдарламам»
Жұмыстың мақсаты – мына әрекеттерді орындайтын бағдарлама құру:

1. Бағдарламаны іске қосқанда төмендегі терезе көрінеді.




1-сурет.
2. Бағдарламадан шығу үшін тышқанмен «Жабу» батырмасын шерту қажет.

Бағдарламаны жүзеге асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге Label белгісі мен Button батырмасын орнату.

3. Мына кестеде жазылған әрекеттерді орындау:

1 - кесте.

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Form1

Properties

Caption(жазу)

Пішінге «Жоба1» атын орнату

Color(Түс)

clmoneyGreen түсін таңдау

Label1


(Standard астары)


Properties


Caption


«Менің алғашқы бағдарла-мам» жазу мәтінін енгізу

AutoSize

(Автотаңдау)



Қасиеттің мәніне: True енгізу

Font - Color

clYellow түсін таңдау

Button1

(Standard астары)



Properties

Caption

Батырмаға «Жабу» атын орнату

Events

OnClick

Close;

4.Жобаны сақтаңыз, оны іске қосып, жұмыс істеуін тексеріңіз.

2. Консольдық қолданба құру

Жұмыстың мақсаты: Консольдық бағдарлама құру.

1.Бас мәзірден File > New > Other (Файл> Жаңа > Басқа) командасын орындап, шыққан сұхбат терезедегі New астарынан Console Application (Консольдық қолданба) белгісін таңдау.





2-сурет

2.OK батырмасын басқан соң экран енді мына түрде көрінеді:





3-сурет

3.Мәтін Delphi арқылы автоматты түрде генерацияланды. Оны жасалатын қолданбаның нобайы деуге болады. Бұл мәтінде негізінде ештеңе өзгертпеуге де болады – ол дайын бағдарламаға сәйкес келеді. Дегенмен, кейбір өзгерістер енгізейік.




4-сурет


5-сурет

3. «Сәлемдесу»


Жұмыстың мақсаты - мына әрекеттерді орындайтын бағдарлама құру:

1.Бағдарлама іске қосылғаннан кейін тышқанмен «Сәлемдесу» батырмасын басқанда «Алғашқы жетістігім» хабарламасын шығару.





6-сурет.

2. Бағдарламадан шығу үшін тышқанмен «Жабу» батырмасын шерту керек.


Бағдарламаны орындау жоспарының сипаттамасы.

1.Жаңа жоба ашу.

2.Пішінге: Label белгісі мен екі Button батырмаларын орналастыру.

3.Мына кестеде жазылған әрекеттерді орындау:



2-кесте

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Form1

Properties

Caption

Пішінге «Жоба 2» атын орнату

Label1

Properties

Caption

Жазбаға «Алғашқы жетістігім» мәтінін енгізу

Button1

Properties

Caption

Батырмаға«Сәлемдесу» атын орнату

Events

OnClick

Label1.Caption:='Алғашқы жетістігім'

Button2

Properties

Caption

Батырмаға«Жабу» атын орнату

Events

OnClick

Close;

4.Жобаны сақтаңыз, сосын оны іске қосып, орындалуын тексеріңіз.
Өздігінше орындауға арналған тапсырма.

1. Шығарылатын «Алғашқы жетістігім» сөзінің қаріпін стандарттан түрі, түсі және өлшемі бойынша өзгеше етіп жазу.



Көмек: Object Inspector-да Font қасиетінің оң жағында екі рет шерту.

2. «Шығу» батырмасының түрін тартымдылау түрге ауыстыру.



Көмек: Батырманы ауыстыру үшін, әуелі бастапқыны өшіріңіз, ал басқа BitBtn-ды компоненттер палитрасының Additional астарынан табасыз. Содан кейін оның түрін Kind қасиетінің көмегімен өзгертіңіз.

3. «Сәлемдесу» батырмасын басқаннан соң экранда «Бұл жұмысымыздың соңы болмасын!» деген хабарлама шығатын етіңіз.



Көмек: Button1 батырмасының OnClick оқиғасына әсері кезіндегі Label1 белгісінің Caption қасиетінің мәнін өзгертіңіз.
Бағдарламаның листингі:

unit Unitl; interface uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;

TForm1 = class(TForm) Labell: TLabel; Buttonl: TButton; BitBtnl: TBitBtn;

procedure ButtonlClick(Sender: TObject);

private


{Private declarations }

public


{Public declarations } end;

var


Forml: TForml;

implementation

{$R *.DFM)

procedure TForml.ButtonlClick(Sender: TObject);

begin

Label1.Caption:= 'Бұл жұмысымыздың соңы болмасын!';



end;

end.


4. Пішіннің тақырыбын өзгерту
Жұмыстың мақсаты – Мына әректтерді орындайтын бағдарлама құру: 1. Бағдарламаны іске қосқанда мәтіндік өріске мәтін шығару.



7-сурет
2. «Терезе тақырыбын өзгерту» батырмасын тышқанмен шерткенде, терезенің тақырыбы өзгеруі тиіс.


8-сурет
3. Терезенің тақырыбын Enter пернесін басу арқылы өзгерту.

4. Бағдарламадан шығу үшін тышқанмен тақырып жолындағы жабу батырмасын шерту қажет.


Бағдарламаны іске асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге Label белгісі, Button батырмасы, Edit мәтіндік өрісі компоненттерін орналастыру.

3. Мына кестеде көрсетілген әрекеттерді орындау:



3-кесте

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Forml

Properties

Caption

Пішінге «Жоба 3» атын орнату

Labell (Standard астары)

Properties

Caption

Мәтіндік өріске «Жаңа тақырып енгізіңіз:» мәтінін енгізу

Editl (Standard астары)

Properties

Text

Text қасиетінің мәнін тазарту

Buttonl (Standard астары)

Properties

Caption

Батырмаға «Терезе тақыры-бын өзгерту» атын орнату

Default

Ашылған тізімнен True мәнін таңдау

Events

OnClick

Form1.Caption := Edit1.Text;

4. Жобаны сақтаңыз, оны іске қосып, орындалуын тексеріп көріңіз.
Өздігінше орындауға арналған тапсырма.

Мына әрекеттерді орындайтын бағдарлама құру:



1. Бағдарламаны іске қосқанда: евро мен доллардың ағымдағы курстарын енгізуге арналған екі жол; ақшаның сомасын теңгемен енгізуге арналған жол; евро және доллармен ақшаның эквивалентін шығаруға арналған екі жол бейнеленуі қажет.



9-сурет
2. Евро мен доллардың ағымдағы курсын енгізіңіз.

3. Ақша сомасын теңгемен енгізіңіз.

4. «Эквивалентті есептеңіз» батырмасын тышқанмен шерткенде, ақша сомасы евро және доллармен шығуы тиіс.

5. Евро мен доллар үшін жаңа ағымдағы курсты енгізіңіз.

6. Жаңа ақша сомасын теңгемен енгізіңіз.

7. «Эквивалентті есептеңіз» батырмасын тышқанмен шерткенде, жаңа ақша сомасы евро және доллармен шығуы тиіс.

8. Бағдарламадан шығу үшін тышқанмен тақырып жолындағы жабу батырмасын шерту қажет.

5. «Қозғалмалы батырма»


Жұмыстың мақсаты – мына әрекеттерді орындайтын бағдарлама құру:

1. Батырманы тышқанмен шерткенде, ол батырма не тоқтауы не қозғалуы тиіс.




10-сурет.
2. Бағдарламадан шығу үшін тышқанмен тақырып жолындағы жабу батырмасын шерту қажет.
Бағдарламаны іске асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге мына компоненттерді: Button батырмасын, Timer таймерін орналастыру. Мұнда батырма таймерді іске қосады және ажыратады, ал таймер батырманы қозғалтады.

3. Мына кестеде көрсетілген әрекеттерді орындау:



4 - кесте

Белгі-ленген нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Forml

Properties

Caption

Пішінге «Қозғалмалы батырма» атын орнату

Timerl

Properties

Enabled

Enabled қасиетіне Enabled = false мәнін орнату

Enabled қасиеті таймердің қосылып не қосылмай тұрғанын анықтайды (әдетте ол қосулы болады).



Interval

Interval = 100

Interval қасиеті OnTimer оқиғасының пайда болу аралығын миллисекундпен анықтайды(әдетте ол интервал 1 секундқа тең).






Events

OnTimer

Button1.Left := Button1.Left - 5; if Button1.Left < 10

then Button1.Left := 100;



Buttonl

Properties

Caption

Батырмаға «ОК» атын орнату

Default

Ашылған тізімнен True мәнін таңдау

Events

OnClick

Timer1.Enabled := not Timer1.Enabled;

4. Жобаны сақтаңыз, оны іске қосып орындалуын тексеріп көріңіз.

6. «Альбом»


Жұмыстың мақсаты – Мына әрекеттерді орындайтын бағдарлама құру:

1. Бағдарламаны іске қосқанда терезеде сурет бейнеленеді.






Достарыңызбен бөлісу:
1   2   3   4   5   6




©www.engime.org 2024
әкімшілігінің қараңыз

    Басты бет