• Behavior guruhi
  • Drag drop guruhi
  • Focus guruhi
  • Layout guruhi
  • Mouse guruhi
  • Property Changed guruhi
  • Standart komponentasining xususiyatlari va hodisalari.
  • Tiplarni dinamik tarzda aniqlash. Reja: Tiplarni dinamik tarzda aniqlash




    Download 0,81 Mb.
    bet113/143
    Sana20.07.2024
    Hajmi0,81 Mb.
    #268096
    1   ...   109   110   111   112   113   114   115   116   ...   143
    Bog'liq
    Tiplarni dinamik tarzda-fayllar.org

    Appearance 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:



        1. 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";


        1. qadam. Label1 obʻyektining xususiyatini o‘rnatish dastur fragmenti sifatida keltiramiz.

          this->label1->Text = L"Birinchi son:";




        2. qadam. Label2 obʻyektining xususiyatini o‘rnatish dastur fragmenti sifatida keltiramiz.

          this->label2->Text = L"Ikkinchi son:";




        3. qadam. Label3 obʻyektining xususiyatini o‘rnatish dastur fragmenti sifatida keltiramiz.

          this->label3->Text = L"Natija:";




        4. qadam. numericUpDown1 obʻyektining xususiyatini o‘rnatish dastur fragmenti sifatida keltiramiz.

          this->numericUpDown1->TextAlign = System::Windows::Forms::HorizontalAlignment::Right;




        5. qadam. numericUpDown2 obʻyektining xususiyatini o‘rnatish dastur fragmenti sifatida keltiramiz.

          this->numericUpDown2->TextAlign = System::Windows::Forms::HorizontalAlignment::Right;




        6. 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...";


        7. qadam. label4 obʻyektining xususiyatini o‘rnatish dastur fragmenti sifatida keltiramiz.

          this->label4->Text = L"Arifmetik amal";




        8. 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.

    Download 0,81 Mb.
    1   ...   109   110   111   112   113   114   115   116   ...   143




    Download 0,81 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Tiplarni dinamik tarzda aniqlash. Reja: Tiplarni dinamik tarzda aniqlash

    Download 0,81 Mb.