MA'RUZA. BORLAND C++ BUILDERDA FORMALAR BILAN ISHLASH

Borland компаниясининг охирги махсулотларидан бўлган C++ Builder - иловалар яратишда тезкор мухит хисобланиб, С++ тилида Delphi мухити компоненталари кутубхонасидан фойдаланади. C++ Builder – визуал тарзда объектга мўлжалланган дастурлаш тили  ҳисобланиб, у Windows va Linux муҳитида ишловчи дастурий воситалар яратишда фойдаланилади. C++ Builder –функциялари кутубхонаси Delphi кутубхонасига кўра кенг ва унинг тили синтаксиси мураккаброқ, аммо бу тил ёрдамида содда дастурлар қаторида корпоратив тармоқлар ва Интернет тизимида ишлай оладиган мажмуавий дастурлар ярата олиш имконияти мавжуд. C++ Builder кучли тизим сифатида juda kop vazifalarni bajara oladi va  қуйида ulardan ayrimlarini keltiramiz:

·         турли йўналишдаги тугалланган иловаларни (оддий хисоблашлар, мантиқий вазифалар, гарфикали ва мультимедиали) ярата олади.

·         турли тилларда ёзилган ҳар қандай иловалар учун профессионал тарзда интерфейс яратиш имкониятини беради.

·         локал ва масофада жойлашган маълумотлар омбори билан ишловчи тизимлар яратиш имкониятини бера олади.

·         турли технологияларга асосланган иловалар яратишга хизмат қилади.

·         Microsoft Offise dasturlari faoliyatini boshqaruvchi ilovalar yaratishga yordam beradi.

·         корпоратив тармоқлар ва интернет тизимида ишлай оладиган мажмуавий дастурлар ярата олadi.

      • кросс-платформали иловалар ярата олиши. (Windows va Linux муҳитида компиляция қилинадиган  дастурий воситалар ва уларни яратиш учун махсус CLX компонентлар библеотекасини  мавжудлиги)

 

С++ тилида дастур эълонлар (ўзгарувчилар, доимийликлар, типлар, синфлар, функциялар) ва функцияларни тавсифловчи бўлимлардан ташкил топади. Функциялар ичида хар доим консоль иловар учун асосий бўлган  Main va Windows  uchun WinMain функцияси мавжуд. Хар қандай дастур ишга туширилганда у биригчи бўлиб ишга тушади ва ўз вазифасини, яъни дастурни ишга туширишга зарур бўлган амалларни бажаради.

Дастурлар модулли принцип асосида яратилади ва улар модуллар тўпламидан ташкил топади. Асосий объектлардан бири бўлган формада объектлар-компонентлар жойлаштирилади ва хар бир форма учун алохида модуль яратилади. Реализация бўlими- .сpp, сарлавхалар файли -.h стандарт кенгайтмаларига эга. Дастур ёзиб бўлгандан кейин унинг асосида бажарувчи файл-модуль яратилади ва у бир неча босқичдан иборат бўлади:

Биринчи дастур матнини шакл алмаштирувчи препроцесссор ишга тушади.  У махсус директивалар ёрдамида айрим матнли файлларни бошқа матнли файллар таркибига киритади ёки макросларни ёйилмасини тайёрлаш билан бирга қатор бошқа амалларни бажаради. Препроцессор ўз иш фаолиятини тугатгач, компилятор ишга тушади ва у модуллар матнини машина кoдигa ўтказади ва натижада ҳар бир - .сpp файл учун .obj кенгайтмали файл яратилади. Компилятор ўз вазифасини бажариб бўлгач, компоновка жараёни ўз вазифасини бажаришга тушади ва бунда объеkтли файллар битта бажарувчи модуль -.ехе файлига бирлаштирилади.


Иловани лойиҳалаш жараёнида C++ Builder  автоматик тарзда лойиҳа бош файли, алоҳида модуллар ва сарлавҳа файли кодларини яратади. Лойиҳа бош файли WinMain функциясни қамраб олади. Бошқа модулларда дастурчи ўз кодини киритиб бориб ҳар хил ҳодисаларни таъминлаб беради. Лойиҳа бош файлига асло ўзгаришлар киритилиши мақсадга мувофиқ эмас. Уни кўриш учун C++ Builder  муҳитида Project->Viev Sourse буйруғини бериш кифоя ва у қуйидаги кўринишга эга:

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

//---------------------------------------------------------------------------

USEFORM("Unit1.cpp", Form1);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

        try

        {

                 Application->Initialize();

                 Application->CreateForm(__classid(TForm1), &Form1);

                 Application->Run();

        }

        catch (Exception &exception)

        {

                 Application->ShowException(&exception);

        }

        catch (...)

        {

                 try

                 {

                         throw Exception("");

                 }

                 catch (Exception &exception)

                 {

                         Application->ShowException(&exception);

                 }

        }

        return 0;

}

//---------------------------------------------------------------------------

Лойиҳанинг бош модули ‘#’ белгили сатр билан бошланади ва бу сатрлар препроцессор директивалари бўлиб улардан асосийси #include директиваси хисобланиб, вазифалари бу файлга уларда кўрсатилган файллар матнини қўшиб боришдан иборат. Препроцессор директиваларидан сўнг USERES va USEFORM жумлалари жойлашган бўлиб, уларнинг вазифалари макрос сифатида лойиҳага форма файллари, ресурслар ва бошқа имкониятларни  қўшишдан иборат. Бу ёрдамчи жумлалардан сўнг файлда дастурнинг асосий  функцияси - WinMain жойлашади. Унинг биринчи параметри илова нусхасининг дескрипторидир.  Дескриптор – бу уникал кўрсатгич бўлиб Windowsga bir vaqtda ochilgan oynalar majmuasi bilan ishlash ikoniyatini beradi. Ikkinchi parametr mazkur ilovaning avvalgi nusxasi descriptori hisoblanadi. Uchinchi parameter oxirida nul simvolli satr ko’rsatgichi hisoblanadi va bu dasturni ish rejimlarini boshqarish kabi vazifalarni bajarishga mo’ljallangan. To’rtinchi parametr esa ilova oynasini aniqlaydi.

            Bulardan so’ng figurali qavslarda dastur tanasi joylashadi. Birinchi bajaraladigan operator Application->Initialize() mazkur ilovaning komponentlarini initsializatsiyasini bajaradi. Keyingi operator Application->CreateForm(__classid(TForm1), &Form1) mos formalar ob’ektlarini yaratishadi. Formalar shu ro’yxatda keltirilgan tartibda yaratiladi va birinchi yaratiladigan forma bosh forma hisoblanadi. Keying try blokidagi Application->Run() operator dastur bajarilishini ta’minlaydi. Shundan so’ng dastur dasturchi tomonidan belgilangan hodisalarni bajarilishini ta’minlaydi. Try blokidan so’ng catch bloki joylashadi va u kutilmagan “avariyali” holatlar uchun mo’ljallangan. Standart holda bu blokda  Application->ShowException(&exception) xatoliklarni bartaraf etuvchi funksiya joylashtirilgan bo’ladi. WinMain функцияси tanasining oxirgi operatori return(0) bo’lib ilovaning 0 kodi bilan tugallashini ta’minlaydi.

            Bosh fayl avtomatik tarzda yaratilib va shakllanib boriladi, zaruratsiz holda unga e’tibor berish ham shart emas. Masalan, unga yangi forma qo’shdigan bo’lsak u quydagi ko’rinishga keladi:

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

//---------------------------------------------------------------------------

USEFORM("Unit1.cpp", Form1);

USEFORM("Unit2.cpp", Form2);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

        try

        {

                 Application->Initialize();

                 Application->CreateForm(__classid(TForm1), &Form1);

                 Application->CreateForm(__classid(TForm2), &Form2);

                 Application->Run();

        }

……

       C++ Builder  dasturlash tilida tajribaga ega bo’lgach siz bu faylga albatta o’zgarishlar kirita olasiz.

 

Forma modulining fayl strukturasi.

 

Forma moduli matni bilan tanishib chiqamiz. Har bir modul ikkita fayldan tashkil topadi (Sarlavha va realizatsiya fayllari). Biror formada Label va Button komponenti joylashgan holat uchun fayl matnlarini qarab chiqamiz:

       Sarlavha fayli:

//---------------------------------------------------------------------------

#ifndef Unit1H

#define Unit1H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

// bu erda preprotsorning faylga avtomatik tarzda qo’shilmaydigan direktivalari

// joylashtiriladi

//---------------------------------------------------------------------------

// TForm1  formasi sinfi e’lon qilinadi

class TForm1 : public TForm

{

__published:          // IDE-managed Components

//formada joylashtirilgan komponenentlar

        TButton *Button1;

        TLabel *Label1;

private:       // User declarations

// klassning yopiq bo’limi

// bu yerda  forma sinfiga kiritiladigan ammo boshqa modullarda foydalanishga ruxsat

 // berilmaydigan tiplar, o’zgaruvchilar, funksiyalar e’loni joylashtiriladi.

public:                    // User declarations

// klassning ochiq bo’limi

// bu yerda  forma sinfiga kiritiladigan va boshqa modullarda foydalanishga ruxsat

 // beriladigan tiplar, o’zgaruvchilar, funksiyalar e’loni joylashtiriladi.

        __fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

//bu yerda  forma sinfiga kiritilmaydigan va boshqa bloklar tomonidan faqat qo’shimcha //shartlar qanoatlantirilganda foydalanishga ruxsat beriladigan tiplar, o’zgaruvchilar, //funksiyalar e’loni joylashtiriladi.

 

#endif

 

Realizatsiya fayli:

 

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

 

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

// bu yerda preprotssorning zarur bolgan ammo avtomatik tarzda qo’shilmaydigan qo’shimcha

 // direkivalari (masalan include) joylashtiriladi

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

// bu yerda forma yaratilish jarayonida bajaraladigan operatorlar joylashtiriladi

}

//---------------------------------------------------------------------------

//bu yerda boshqa modullardan faqat qo’shimcha shartlar bajarilganda foydalanishga //ruxsat beriladigan tiplar, o’zgaruvchilar, funksiyalar e’loni joylashtiriladi.

// shuningdek bu yerda sarlavha  faylida e’lon qilingan funksiyalar va e’lon qilinmagan //qo’shimcha funksiyalarni realizatsiyasi keltirishi shart

 

void __fastcall TForm1::FormCreate(TObject *Sender)

{

}

//---------------------------------------------------------------------------

 

C++ Builder мухити

C++ Builder мухити SDI – иловани узида акс эттиради, унинг асосий ойнаси куйидагилардан ташкил топган: асбоблар панели (чапдан) ва компонентлар палитраси (унгда). Бундан ташкари C++ Builder ни юклаш жараёнида хеч кандай суровсиз обектлар инспектори ойнаси (чапда) ва янги илова шакли ойнаси (унгда) хосил булади. Шакл Ойнаса тагида код мухаррири ойнаси жойлашади.


Расм.1. C++ Builder мухити

Шакл ойнаси C++ Builder мухити иловасининг асоси хисобланади. Фойдаланувчи интерфейси иловасини яратиш, шакл ойнасига C++ Builder мухитининг “компонентлар” деб аталувчи элементларини жойлаштиришдан иборат. C++ Builder мухитининг компонентлари куп сахифали блокнот куринишида тайёрланган компонентлар палитрасида жойлашган булади. C++ Builder мухитининг асосий жихати: уз компонентларимизни яратиш ва компонентлар палитрасини ростлашга ёрдам бериш, шунингдек турли лойихалар учун компонентлар палитрасининг турли версияларини яратишдан иборат.

C++ Builder мухити компонентлари.

Компонентлар куриниб турадиган(визуал) ва куринмай турадиган (новизуал)турларга булинади. Куриниб турадиган компонентлар иш бажариш вактида худди лойихалаш вактида кандай булса шундай холича пайдо булади. Бунга тугмалар ва тахрирланувчи майдонлар мисол була олади. Куринмайдиган компонентлар лойихалаш вактида шакл ойнасида пиктограммалар куринишида пайдо булади. Улар иш бажариш вактида хеч качон куринмай турадилар, лекин муайян функцияни бажарадилар (масалан, маълумотларга мурожаат килишни таъминлайди, Windows 95 ва бошкаларнинг стандарт диалогли ойналарини чакиради).

Расм2. Куринувчи ва куринмайдиган компонентларни ишлатишга мисол

Компонентни шакл ойнасига жойлаштириш учун палитрадаги компонентни сичконча манипулятор оркали ажратиб олиб, лойихаланаётган шакл ойнасининг керакли жойига чап тугмани босиб амалга ошириш мумкин. Компонент шакл ойнасида пайдо булади, шундан сунг уни жойини узгартириш, улчамларини ва бошка характеристикаларини узгартириш  мумкин.

C++ Builder мухитининг хар бир компоненти уч турдаги характеристикага эга: хусусиятлар, ходисалар, услублар.

Агар компонентни палитрадан танлаб олиб шакл ойнасига жойлаштирилса, объектлар инспектори ушбу компонент билан бирга кулланилиши мумкин булган хусусият ва ходисаларни автоматик равишда курсатади. Объектлар инспекторининг юкори кисмида сиргалиб тушувчи руйхат булиб, у шакл ойнасида жойлашган керакли объектни танлаш имкониятини беради.


 

Расм.3. Объектлар инспектори.

Компонентлар хусусиятлари

Компоненталар хусусияти унинг ташки куриниши ва узини тутишини аниклаб берувчи атрибут хисобланади. Компонентнинг хусусиятлар колонкасидаги купчилик хусусиятлари хеч кандай суровсиз ростланадиган холатга эга булади (масалан тугманинг баландлиги). Компонентнинг хусусияти хусусиятлар (Properties) сахифасида курсатилади. Объектлар инспектори компонентнинг оммалашган (published) хусусиятларини курсатиб туради. (published) хусусиятлардан ташкари компонентлар купрок умумий (public) факат иш бажариш мобайнида мурожаат килиш мумкин булган хусусиятларга эга булади. Объектлар инспектори лойихалаш вактида хусусиятларни белгилаш учун ишлатилади. Хусусиятлар руйхати объектлар инспекторининг хусусиятлар сахифасидан урин олган булади. Хусусиятларни лойихалаш вактида аниклаш мумкин ёки иловани тахрирлаш вактида компонент хусусиятларининг куринишини узгартириш максадида код ёзиш мумкин.

Лойихалаш жараёнида компонент хусусиятларини аниклашда шакл ойнасидаги компонентни танлаб олиш, объектлар инспекторида хусусиятлар сахифасини очиб олиш ва керакли хусусиятни танлаб уни хусусиятлар мухаррири ёрдамида узгартириш керак булади (бу – матн ёки сонлар киритиш учун оддий майдон, сиргалиб тушадиган руйхат, очиладиган руйхат, диалогли панель ва бошкалар булиши мумкин).

Ходисалар

Объектлар инспекторининг ходисалар (Events) сахифаси компонент кабул киладиган ходисалар руйхатини курсатиб туради (фойдаланувчининг график интерфейсига эга булган операцион тизимлар, хусусан Windows 95 ёки WindowsNT лар учун дастур тузишда илованинг у ёки бу ходисага реакциясини тасвирлаш маъкул курилади, операцион тизимнинг узи эса бирор бир ходиса кутилаётганини аниклаш максадида компьютерга доимий равишда суров юбориш билан шугулланади). Хар бир компонент узининг ходисалар ишлаб чикувчи тупламига эга. C++ Builder мухитида ходисалар ишлаб чикувчи деб номланадиган функциялар ёзиш ва ходисаларни бу функциялар билан боглаш кузда тутилади. У ёки бу ходисанинг ишлаб чикувчисини ярата туриб сиз дастурга агар шу ходиса содир булса, ёзилган функцияни бажаришга топширик берасиз.

Ходисалар ишлаб чикувчини кушиш учун сичкончанинг тугмаси ёрдамида шакл оёнасида ходисалар ишлаб чикувчиси керак булган компонентни ажратиб олиб, объектлар инспекторининг ходисалар сахифасини очиб, C++ Builder ни ходисалар ишлаб чикувчисининг прототипини генерация килиш ва уни код редакторида курсатишга мажбур килиш учун ходиса ёнида курсатилган кийматлар колонкасига сичкончанинг чап тугмаси билан икки марта босамиз. Бунда автоматик равишда буш функциянинг матни генерацияланади ва кодни киритиш керак булган жойда мухаррир очилади. Курсор оператор кавслари{ ... } ичида жойлаштирилади. Шундан сунг ходисанинг келтирилишида бажарилиши керак булган кодни киритиш керак. Ходисалар ишлаб чикувчиси функция номидан кейин кавслар () ичида курсатиладиган параметрларга эга булиши мумкин.



 

Расм.4. Ходисалар ишлаб чикувчисининг прототипи

 

Услублар

Услуб – компонент билан болгик булган функция хисобланади ва у объектнинг кисми сифатида эълон килинади. Ходисалар ишлаб чикувчисини ярата туриб, куйидаги нотациядан фойдаланиш мумкин;->, масалан:

Edit1->Show();

Шуни айтиб утамизки, янги шаклни яратишда унга богланган модуль ва *.h кенгайтмали сарлавха файл албатта генерацияланади, янги модульни яратишда эса модуль шакл билан богланган булиши шарт эмас (масалан, агар унда хисоблаш жараёнлари булса). Шакл ва модулларнинг номларини узгартириш мумкин, уларни яратгандан кейин бошка шакл ва модуллар билан алока воситаси урнатилмасданок дархол узгартириш максадга мувофик.

Лойихалар менеджери.

Илова, шакл ва модулларни акс эттирадиган файл – лойихага бириктирилган булади. Лойихалар менеджери файллар руйхатини ва илованинг модулларини курсатиб туради ва улар уртасида навигацияни (кучиб юриш)амалга оширади. Лойихалар менеджерини View/Project Manager пунктини танлаб чакириш мумкин. Янги яратилган лойиха шартли равишда Project1.cpp номини олади.

Расм.5. Лойихалар менеджери

Лойиха аввал бошда шартли равишда бита шакл ва битта модулнинг бошлангич коди учун файлни узида ушлайди. Бирок купчилик лойихаларда бир нечта шакл ва модуллар булади.Лойихага янги шакл ёки модулни кушиш учун сичкончанинг унг тугмасини босиб ундаги контекстли менюдан New Form пунктини танлаш керак. Худди  шундай модуль ёки шаклни танлаб лойихалар менджерининг контекстли менюсидаги Add тугмасидан фойдаланиб, олдиндан мавжуд булган шакл ва модулларни лойихага кушиш мумкин. Лойихани ишлаш жараёнида исталган вактда шакл ва модулни хотирадан учириб ташлаш мумкин. Бирок шакл доим модуль Билан боглик булганлиги сабабли бирини колдириб иккинчисини учириб булмайди (модуль шакл билан боглик булмаган холат бундан мустасно). Модулни лойихалар менджерининг Remove тугмасидан фойдаланиб учириш мумкин.

Агар лойихалар менеджерининг Options тугмаси танланса, диалогли панель куринишидаги илованинг асосий шаклини танлаш имкониятини берувчи, динамик куринишдаги кандай шакл яратилиши мумкинлигини ва модуль компиляцияси (шу билан бирга Delphi 2.0 мухитида яратилган модуллар хам, C++ Builder уларни уз лойихаларига кирита олади)билан компановканинг параметрлари кандайлигини аникловчи лойиха опцияси очилади.



Расм.6.Лойиха опцяисини унатиш .

C++ Builder мухитининг мухим элементи булиб унинг сичконча унг тугмасини босганда пайдо буладиган ва тез-тез ишлатиладиган буйрукларга тезрок мурожаат килиш имконини таклиф киладиган контекстли менюси хизмат килади.

C++ Builder мухити интерфейснинг исталган элементига мурожаат килиш мумкин булган ва C++ Builder хакидаги маълумотга бой кулланма манбаи хисобланган, олдиндан киритилган контекстга боглик ёрдам тизимига эга.

C++ Builder мухитида иловалар яратиш.

C++ Builder мухитида илова ишлаб чикишдаги биринчи кадам лойиха яратиш хисобланади. Лойиханинг файллари узида компиляция килиниб бажаришга тайёрланганда илованинг кисмига айланадиган, автоматик равишда генерацияланган бошлангич матнни мужассам этади. Янги лойиха яратиш учун менюнинг File/New Application пунктини танлаш керак булади.

 

C++ Builder шартли равишда Project1.cpp номи билан лойиха файлини яратади (шунингдек яна шартли равишда Project1.mak номи билан make-файлини яратади). Лойихага янги шакл кушиш каби узгартиришлар киритишда C++ Builder лойиха файлини янгилайди.


Расм.7. Лойиха файли

Илова ёки лойиха одатда бир нечта шаклга эга булади. Лойихага шакл кушиш натижасида куйидаги кушимча файллар яратилади.

        Шаклни конструкциялаш учун кулланиладиган ойна ресурслари хакида маълумот сакловчи .DFM кенгайтмали шакл файли:

        C++ кодига эга булган, .CPP кенгайтмали модуль файли:

        Шакл синфини тасвирловчи, .Н кенгайтмали сарлавха файли.

Сиз янги шакл кушганингизда лойиха файли янгиланади. Лойихага бир ёки бир нечта шакл кушиш учун менюнинг File/New Form пунктини танланг. Лойихага кушилиши керак булган буш шакл пайдо булади. Шунингдек менюнинг File/New пунктидан фойдаланиб, Forms сахифасидаги объектлар репозиторийсидан мос шаблонни танлаш мумкин.


Расм.8. Шакл шаблонлари

Лойихани шунчаки компиляция килиш учун Compile менюсининг Compile пунктини танлаш керак. Лойихани яратиб, шу лойихани ишга туширувчи файл яратиш учун Run менюсининг Run пунктини танлаш лозим. Лойиха компановкаси инкремент хисобланади (факат узгарган модуллар кайта компиляцияланади).

Агар илованинг ишлаш жараёнида амал бажариш вактида хатолик юзага келса, C++ Builder дастурни бажаришда пауза килади ва операторда урнатилган, хатолик манбаи хисобланган код мухарририни курсор билан биргаликда курсатади. Керак булган тузатишни амалга оширишдан олдин Run контекстли менюсидан Run пунктини танлаб иловани кайта ишга тушириш, иловани ёпиш ва шундан сунг лойихага узгартиришлар киритиш максадга мувофик. Бунда Windows ресурсларини йукотиш эхтимоли камаяди.

Оддий илова яратишга мисол:

Энди тахрирланувчи майдонга матн киритишга ва сичконча ёрдамида тугмага босганда бу матнни руйхатга кушишга ёрдам берувчи оддий илова яратиб курамиз. Лойихани яратиш учун менюнинг File/New Application пунктини танлаймиз ва унинг асосий шакл ойнасини samp1.cpp номи билан, лойиханинг узини эса samp.mak номи билан саклаймиз. Шакл ойнасига компонентлар палитрасининг Standard сахифасидан Button, Edit ва ListBox компонентларини жойлаштирамиз.

Расм.9. Компонентларни шакл ойнасига жойлаштириш.

Шундан сунг шакл ойнасидаги Edit компонентини танлаймиз ва ундаги Text кийматини учириб ташлаймиз. Ундан кейин Button1 учун Caption хусусиятини «кушиш» ахамияти билан урнатамиз .

«Кушиш» тугмаси учун OnClick ходиса ишлаб чикувчисини кушиш учун, бу тугмани шакл ойнасидан танлаб олиш, объектлар инспекторида ходисалар сахифасини очиш ва OnClick ходисасидан унгдаги колонкага сичконча билан икки марта босиш керак. Керакли киритиш сатрида функциянинг номи пайдо булади. C++ Builder ходиса ишлаб чикувчиси прототипини генерация килади ва уни код мухарририда курсатади. Шундан сунг куйидаги функциянинг танаси хисобланган кодни операторли кавслар { ... } ичига киритиш керак булади.

void __fastcall TForm1::Button1Click(TObject *Sender) 
        {
        if (!(Edit1->Text == "")) 
               {
               ListBox1->Items->Add(Edit1->Text); 
               Edit1->Text = "" ; 
               }
        } 

Иловани компиляция килиш учун Run менюсидан Run пунктини танлаймиз. Энди тахрирланувчи майдонга бирор нарса киритиб, сичконча билан «кушиш» тугмасига босибкиритилаётган сатрлар руйхатга кушилаётганига ишонч хосил килиш мумкин.

Расм.10. Тайёр илова манна шу куринишда булади.

Энди иловани «Учириш » ва «Чикиш » тугмаларини кушиб модификация киламиз. Бунинг учун яна иккита тугма кушамиз, уларнинг Caption хусусиятини узгартирамиз ва шу тугмаларга босиш билан боглик булган ходиса ишлаб чикувчисини яратамиз:

Расм.11. Модификацияланган илова

 «Учириш» тугмаси учун:

        void __fastcall TForm1::Button2Click(TObject *Sender) 
        { 
               if (!(ListBox1->ItemIndex == -1)) 
               ListBox1->Items->Delete(ListBox1->ItemIndex);
        }

 «Чикиш» тугмаси учун:

        Close();

Комментарии

Популярные сообщения из этого блога