Appearance guruhi - Tiplarni dinamik tarzda aniqlash. Reja: Tiplarni dinamik tarzda aniqlash

|
Tiplarni dinamik tarzda aniqlash. Reja: Tiplarni dinamik tarzda aniqlash
|
bet | 113/143 | Sana | 20.07.2024 | Hajmi | 0,81 Mb. | | #268096 |
Bog'liq Tiplarni dinamik tarzda-fayllar.orgAppearance guruhi
|
Komponentaning ichki hodisalari uchun ishlatiladi
va maʻlum bir algoritm yozish
|
3
|
Behavior guruhi
|
Komponenta holatlari uchun hodisalarni
faollashtirish
|
4
|
Data guruhi
|
Ichki va tashqi maʻlumotlar bilan ishlash
hodisalarini faollashtirish
|
5
|
Drag drop guruhi
|
Komponentaning harakatlanish hodisalarini
faollashtirish
|
6
|
Focus guruhi
|
Komponentada fokuslarni boshqarish hodisalarini
faollashtirish
|
7
|
Key guruhi
|
Komponentaning mos tugmalar bilash ishlash
hodisalarini faollashtirish
|
8
|
Layout guruhi
|
Komponentada atrofidagilar bilan ishlash tartibini
nazora qilish hodisalarini faollashtirish
|
9
|
Mouse guruhi
|
Komponentada sichqoncha bilan bo‘ladigan
hodisalarini faollashtirish
|
10
|
Property Changed
guruhi
|
Komponentaning xususiyatlari o‘zgarganda
bajariladigan hodisalarini faollashtirish
|
Bu usullar va hodisalarning odatda hammasi ham vizual ishlaish imkoni yo‘q. Shuning uchun agar komponentaning biror funksiya On bilan boshlansa bilingki bu usul, ed, ing bilan tugagan funksiyalari bo‘lsa, bular ko‘proq hodisalar hisoblanadi. Guruhlar komponenta tipiga moslashgan holda doimiy o‘zgarib turadi va tipga mos hodisalarini aniqlab beradi. Komponenta hodisalari funksiya sifatida yaratiladi va dasturchi unga kerakli o‘zining algoritmini yozadi. Komponenta hodisalarini qo‘shish vizual amalga oshiriladi va asosiy formaga uning dastur fragmentlari yozib ketiladi. Ammo dasturchi o‘z fknutsiyaning algoritmini yozishi kerak. Buni loyiha boshqaruv oynasi orqali ko‘rish mumkin (10.6-rasmga qarang)
10.6-rasm. Komponentalarning hodisalari.
Oynaning InitializeComponent funksiyasida ham komponentalarning hodisalari ko‘shilganini ko‘rish mumkin.
Shuningdek, baʻzi komponentalar faol va faol bo‘lmagan holatlarda bo‘lishi mumkin. Bu huddi windows oynalaridagi buyruqlarning foydalanishiga o‘xshash ishlatiladi. Komponentalarni o‘z joyida ishaltishni ham bilish kerak va ularni qachon ishlaish kerakligini bilash ham muhim.
Standart komponentasining xususiyatlari va hodisalari. Standart komponentalarga Toolbox oynasidagi [Common Controls] Tab dagi komponentalar kiradi. Ularni tarkibini o‘zgartirish mumkin, yaʻni yangilarini qo‘shish va keraksizlarini o‘chirib tashlash mumkin. Shuningdek, agar maxsus ishlab chiqilgan yangi komponentalar guruhi bo‘lsa ulardan ham foydalanish mumkin. Standart komponentalarni quyidagi guruhlarga bo‘linadi va shu asosida ularning hususiyatlari va hodisalari 95% bir xil bo‘ladi.
10.7-rasm. Standart komponentalar ko‘rinishi.
Bu komponentalarni oynaga joylashtirish uchun sichqonchaning chap bitta bosiladi va oynaga keltirib chap tomoni yana bir marta bosiladi va oynada tanlangan komponentaning nusxasi paydo bo‘ladi. Bu nusxani obʻyekt deb aytamiz. Chunki eslab ko‘ring, sinfning nusxasi bu obʻyekt deb aytiladi. Obʻyektning ustiga sichqonchaning o‘ng tugmasini bossangiz, u bilan bajarish mumkin bo‘lgan amallarni ko‘rasiz. Agar obʻyektdan nusxa olsangiz uning super sinfining, yaʻni shu obʻyekt tipidagi boshqa bir obʻyekt yaratiladi. Ikkita bir xil tipdagi obʻyektlarning xususiyatlari va hodisalariga alohida – alohida ishlov beriladi.
Standart komponentalarni xususiyat va hodisalarini ko‘rib chiqish uchun arifmetik amallarni bajaruvchi dastur yaratish masalasini olamiz.
Mantiqiy jihatdan sonlarni kiritish uchun 2 ta NumericUpDown, matnli yozuvlar uchun 4 ta Label, hisoblash uchun bitta Button, amallar uchun bitta CheckBox komponentlarini olamiz va oynaga quyidagi 10.8-rasmdagidek qilib joylashtiramiz.
10.8-rasm. Standart komponentalarni xususiyat va hodisalaridan
foydalanish.
Bu masalani loyiha sifatida amalga oshirish uchun quyidagi qadamlar bajariladi:
qadam. Forma xususiyatlarini o‘rnatish: BackColor xususiyatiga oq rang; font xususiyatiga 14 o‘lchamli yozuv; Icon ga maxsus ikinka; MaximizeBox xususiyatiga false qiymat; MinimizeBox xususiyatiga false qiymat; Size xususiyatiga yangi o‘lchamlar; StartPosition – CenterScreen holati; Text xususiyatiga “Easy Calculator” matnni yoziladi;
Buni qanday ajratishsh mumkin, yaʻni o‘zgargan xususiyatlarni, qiymatining matni yog‘on qora ranga kirganlari o‘zgartirilgan hisoblanadi. Bu o‘zgarishlarni dastur fragment ko‘rinida keltiish ham mumkin. Bu dastur fragmentini qo‘lda yozish kerak emas, ammo tushunarli bo‘lishi uchun keltiramiz. Buni InitializeComponent funksiyasi ichida kerakli izohlar bilan keltirilgan bo‘ladi.
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(351, 225);
this->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, static_cast(204)));
this->HelpButton = true;
this->Icon = (cli::safe_cast(resources-
>GetObject(L"$this.Icon"))); this->MaximizeBox = false; this->MinimizeBox = false;
this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
this->Text = L"Easy Calculator";
|
qadam. Label1 obʻyektining xususiyatini o‘rnatish dastur fragmenti sifatida keltiramiz.
this->label1->Text = L"Birinchi son:";
|
qadam. Label2 obʻyektining xususiyatini o‘rnatish dastur fragmenti sifatida keltiramiz.
this->label2->Text = L"Ikkinchi son:";
|
qadam. Label3 obʻyektining xususiyatini o‘rnatish dastur fragmenti sifatida keltiramiz.
this->label3->Text = L"Natija:";
|
qadam. numericUpDown1 obʻyektining xususiyatini o‘rnatish dastur fragmenti sifatida keltiramiz.
this->numericUpDown1->TextAlign = System::Windows::Forms::HorizontalAlignment::Right;
|
qadam. numericUpDown2 obʻyektining xususiyatini o‘rnatish dastur fragmenti sifatida keltiramiz.
this->numericUpDown2->TextAlign = System::Windows::Forms::HorizontalAlignment::Right;
|
qadam. comboBox1 obʻyektining xususiyatlarini o‘rnatish dastur fragmenti sifatida keltiramiz.
this->comboBox1->Items->AddRange(gcnew cli::array< System::Object^ >(5) {L"[+] (qoʻshish)", L"[-] (ayirish)", L"[*] (koʻpaytirish)",
L"[/] (butun boʻlish)", L"[%] (qoldiq boʻlish)"});
this->comboBox1->Text = L"tanlang...";
|
qadam. label4 obʻyektining xususiyatini o‘rnatish dastur fragmenti sifatida keltiramiz.
this->label4->Text = L"Arifmetik amal";
|
qadam. button1 obʻyektining xususiyati va hodisani o‘rnatish dastur fragmenti sifatida keltiramiz.
this->button1->Text = L"Hisoblash";
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
|
button1_Click funksiyasiga quyidagi algoritmni yozamiz.
int one = Convert::ToInt16(Math::Round(numericUpDown1->Value, 0)); int two = Convert::ToInt16(numericUpDown2->Value);
int result = 0;
label3->Text = "Natija:";
switch(comboBox1->SelectedIndex){
case 0: result = one + two; break; case 1: result = one - two; break; case 2: result = one * two; break; case 3: result = one / two; break; case 4: result = one % two; break;
default: result = 0;
break;
}
label3->Text += result.ToString();
|
Algoritmga izoh brish shart emas, chunki ko‘p kamchiliklari mavjud, masalan, bo‘lish arifmetik amalida. Ammo baʻzi xulosalarni chiqarish mumkin.
[numericUpDown1->Value] obʻyektning tanlangan haqiqiy tipdagi qiymatini qaytaruvchi xususiyat, [Convert::ToInt16] – ixtiyoriy tipni butun tipga almashtirib beradi, [label3->Text] – obʻyektning matn xususiyatini o‘zgartirishi mumkin, [comboBox1->SelectedIndex] – tanlagichning tanlangan indeksini qaytaradi, [label3->Text += result.ToString();] – obʻyektning matninga matn qo‘shish va tipni satrli tipga o‘tkazish ko‘rsatilgan.
Dastur fragmentida 3 ta belgi [::] – cinfning usullariga murojaat qilish, [->]
– obʻyektning xususiyatiga murojaat qilish, [.] obʻyektning qiymati ustida bajarilishi kerak bo‘lgan amal. Visual C++ da juda ko‘p usul, va funksiyalarni ishlatish tamoyllari bor, ularni faqat kompilyatorning imkoniyatiga qarab ajratish mumkin.
Standart komponentalarning baʻzi xususiyatlari va hodisalari, ular uchun baʻzi usullarni ishlatiyu ko‘rdik. Bularni chuqurroq o‘rganish uchun ko‘proq amaliy ishlarni bajarish kerak.
|
| |