Негізгі визуалды компоненттер. VCL кітапханасыны компоненттері. асиеттері, дістері жне оиалары


дістемелік нсаулар


VCL (Visual Component Library)- визуальды компоненттер кітапханасында осымша руда ажет болатын компоненттер жинаталан.

Компоненттерді асиетін згерту екі трлі жолмен жасалады: объектілер инспекторыны (Object Inspector) терезесінде немесе программалау жолымен. Мысалы, Label1 компонентіні Caption асиетін Object Inspector терезесінде згерту.

Ал программалы жолмен згерту шін программа мтінінде келесі трде жазылуы керек:

Label1->Caption= "Багдарлама";

Объектіні немесе компоненттерді дістерін шаыру келесі трде жазылады:

Объектіні аты ->дісті аты;

Memo1->Clear();

Компоненттерге тн оиалар функциялар /void __fastcall/ трінде аныталан, бл функцияларды шаблондары программа мтініне автоматты трде бірден ойылады, бл шаблондарды сол компонентті белгісіне екі рет шерту немесе Object Inspector терезесіндегі Events жапсырмасындаы оиалар арылы шаырып алуа болады. Мысалы, Button1 компонентіні OnClick оиасы:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Label1->Caption= "Багдарлама";

}


4.2- сурет. Button1 компонентіні

OnClick оиасын шаыру.


Форма. C++ Builder ортасында рылатын осымшаны орындалуы кезінде экрана шыатын визуальды бліміні негізін TForm класыны кілі болып табылатын Form компоненті райды. C++ Builder ортасы жктелгенде, рылатын жобаа (Project1) сйкес форма терезесі (Form1) зі автоматты трде пайда болады /4.3-сурет/. Форма терезесі, бл - Windows осымшаларына тн таырыпты зонасы, жйелік мзір батырмасы, басару батырмалары жне таза жмысты обылысы бар, лшемі згеріп отыратын терезе.

Жобаа таы да форма терезелерін осу шін File à New à Form командасы орындалады. Программа руда Form компонентіні келесі асиеттері мен дістері жиі пайдаланылады:

TCaption типтер класына жататын Caption асиеті форманы таырыбын, яни таырыпты зонадаы мтінді жазу шін олданылады;

TComponentName типіне жататын Name асиеті Form компонентіні атын немесе идентификаторын беру шін олданылады, детте ол Form1, Form2 ... болып кете береді, егер олданушы ажет болан жадайда бл атауларды згерте алады жне программада оны сол зі берген атпен шаырып пайдаланады, мысалы, Name асиетіні мні Form1 –ден MainForm- а згертілсе онда оны программада пайдалананда

Form1à Caption:= “Форма терезесі”; деп жазуды орнына MainFormà Caption:= “Форма терезесі”; трінде жазады. Бл Name асиеті C++ Builder ортасындаы олданылатын барлы программалы компоненттерге тн асиет.

Программада Form компонентіні жаа экземпляр-данасын ру шін constructor Create (AOwner: TComponent); конструкторы олданылады, егер жаа дананы ру команда трінде талап етілетін болса оны программа мтінінде келесі трде жазады:

CreateForm(TForm1, Form1);àApplication

бл программаны негізгі терезесін ру болып табылады, ал алан терезелерін руды, мысалы

Form2=TForm2.Create(Application); трінде беруге болады.

Close функциясы форма терезесін жабуды амтамасыз етеді, программадаы жазылуы:

Form1à Close();

Hide функциясыны ызметі - форманы экранда крсетпей жасырып трады, жазылуы:

Form1à Hide();

Show функциясы орындаланда крінбей тран форма, алдыа шыып экранда крсетіліп трады, жазылуы:

Form1à Show();
</rect.area();
</rect.width();
</rect.length();
Форма компонентіні TNotifyEvent класына жататын OnCreate оиасы форма рылан кезде бір-а рет орындалады, сондытан бл функцияа форманы рылуымен бірге орындалатын (мысалы пароль енгізу сияты) операциялар жазылады. OnCreate оиасына сйкес функция Object Inspector терезесіні Events жапсырмасындаы OnCreate жолыны терезесіне екі рет шерту арылы шаырылады:

void __fastcall TForm2::FormCreate(TObject *Sender)

{


}


Мтінмен жмыс жасауа арналан Standart панеліні Label, Memo, Еdit компоненттері. арапайым осымшалар ру шін Standart панеліні компоненттері олданылады.

осымшаларда мтін тріндегі мліметтерді терезелер арылы енгізуде Standart панеліні Label, Еdit, Memo компоненттері олданылады.

Еdit компоненті (немесе енгізу жолаы, немесе бір жолды редактор деп те атайды) мтінді кішкентай терезе тріндегі бір жола енгізуді немесе мтін тріндегі нтижені терезеге шыарып оюды амтамасыз етеді. осымшада Еdit компонентіні терезесінде берілген мтінді, курсорды оа жне сола жылжытатын баыттауыштар кмегімен, символдарды шіретін <Backspace> жне пернелерін пайдаланып жне фрагменттерді бліп алып жндеуге болады. Еdit компонентіні терезесіне енгізілген мтін, оны типі AnsiString болатын Text асиетіні мні болып табылады, яни Еdit терезесінде берілген мліметтер программада тек жолды тип ретінде ана абылданады, ал оны рі арай программада сандар ретінде пайдалану шін трлендіру функциялары олданылады. Терезеге енгізілген мтінді бтін /int/ немесе наты /float/ типтерді біріне айналдыру шін келесі трлендіру функциялары олданылады:


StrToInt (AnsiString s)- жолды типті бтін типке, StrToFloat(AnsiString s) - наты типке трлендіреді.

Еdit терезесіндегі мтінні лкен немесе кіші ріптермен жазылуын немесе регистрлерді ауысып отыруын оны CharCase (типі TEditCharCase) асиеті арылы береді, сйкесінше ол ш трлі мн абылдайды:


  • ecNormal – ррегистр зермейді, сол кйінде трады;

  • ecLowerCase - тменгі регистрді ріптеріне кшеді;

  • ecUpperCase - жоары регистрді бас ріптеріне ауысады.

 

Еdit компонентіні типі Char болатын PasswordChar асиеті осы терезеге пароль енгізу шін олданылады, детте оны мні #0 болып трады да терезеге енгізілген мтінні зі шыады, ал оны жасырып крсетпеу шін PasswordChar асиетіні абылдайтын мнін баса бір символа, мысалы «*» немесе «?» секілді мндерге згерту керек, сонда енгізілген пия мтінні орнына «********» немесе «?????????» тріндегі жолдар шыады.

Программа терезесінде Еdit1, Еdit2, Еdit3 компоненттері арылы берілген бірнеше терезелерді бірінен екіншісіне ENTER пернесі арылы кшіп отыру шін олара басару фокусын беруді (курсорды беретін) амтамасыз ететін SetFocus дісін олдануа болады, ол діс осы компонентті терезесінде трып басылан пернеге жауап беретін OnKeyPress оиа деушісіні денесінде шаырылады. Мысалы, Еdit2 компонентіні терезесінен ENTER пернесі арылы Еdit3 терезесіне кшу шін сол Еdit2–ні OnKeyPress оиа деушісіне келесі кодты жазуа болады:


void __fastcall TForm2::Edit2KeyPress(TObject *Sender,

char &Key)

{

if(Key>='0' || Key<='9') ; // бл 0- 9 цифрларды крсету

if(Key==8) ; // Backspace -шіру пернесіні ішкі коды

if(Key==13) // ENTER перенсіні ішкі коды

Edit3->SetFocus();

}


Ал, форма терезесіндегі барлы терезелік компоненттерде басару фокустарыны зара ауысып отыруын йымдастыру шін Form компонентіні SelectNext (TWinControl* CurControl, bool GoForward, bool CheckTabStop); дісі олданылады. осымшадаы Memo терезесін мтіндік файлдарды ашып оу шін немесе терезедегі мтінді тексттік файла жазып сатау шінде олдануа болады. Ол шін оны LoadFromFile (FileName) дісі- терезедегі мтінді файла жазуды, ал SaveToFile (FileName) дісі-керісінше файлдаы мтінді Memo терезесіне шыаруды амтамасыз етеді. Мысалы:

...

AnsiString FileName = "C:\\WINDOWS\\WIN.INI";

// файлды аты

Form1->Memo1->Lines->LoadFromFile(FileName);

Form1->Memo1->Lines->SaveToFile(ChangeFileExt

(FileName, ".BAK"));

...

Жаттыу жмыстары


шбрышты ауданын, биіктігі мен табаны бойынша есептеуді орындайтын арапайым осымша ру. осымша терезесі келесі трде болуы ажет /4.4-сурет(а,б)/.

4.4-сурет. а) Форма терезесі


4.4-сурет. в) осымша терезесі


Орындалуы:


  1. Fileà New à Application командалары орындалады.

  2. Жаа рылан жобаны сатау шін Filеà Save All командасы орындалады. Жоба рамына кіретін файлдарды бір бумада саталуы ажет.

  3. Форма терезесіне ажет компоненттер /4.4-суреттегідей/ орналастырылып жне оларды келесі асиеттері згертіледі:

 

Компонентті аты асиетіні аты Мні
Form1 Caption шбрышты ауданын есептеу
Memo1 Lines шбрышты ауданын биіктігі мен табаны бойынша есептейтін программа рыыз
Label1 Caption Биіктік
Label2 Caption Табан
Label3 Caption шбрышты ауданы
Edit1 Text
Edit2 Text
Edit3 Text
Button1 Caption Есептеу

«Есептеу» деп аталатын батырмаа екі рет шертіліп, пайда болан терезеге келесі код жазылады:


void __fastcall TForm1::Button1Click(TObject *Sender)

{

int biktik, taban;

float audan;

biktik=StrToInt(Edit1->Text);

taban=StrToInt(Edit2->Text);

audan=float(biktik*taban)/2;

Edit3->Text=FloatToStr(audan);

}


зіндік жмыс тапсымалары


Келесі мазмндаы есептерді шеше алатын осымша рыыз:


  1. Пирамиданы клемін табу.

  2. ш абырасы бойынша шбрышты ауданын есептеу.

  3. Параллелипедті клемін есептеу.

  4. Тізбекті жалпы кедергісін есептеу (параллель осылан).

  5. Трапецияны ауданын есептеу.

  6. Тізбекті жалпы кедергісін есептеу (тізбектей осылан).

  7. Екі абырасы жне арасындаы брышы бойынша шбрышты ауданын есептеу.

  8. Бтін сандармен арифметикалы амалдарды орындай алатын калькулятор программа жасау.

  9. Тригонометриялы функцияларды жне тбір табуды орындай алатын калькулятор жасау.

  10. Цилиндр клемін табу.

 


4 - зертханалы жмыс.