Hodisalar - Microsoft Word umk d2 sirtqi docx

79
hodisalarni yuzaga keltirishi va qayta ishlashi imkoniyatlariga ega. Eng umumiy
hodisalar guruhlariga qo'yidagilar kiritish mumkun.
Boshqaruv elementlarini tanlash
Sichqoncha ko'rsatkichini harakatlantirish (ko'chirish)
Klaviatura tugmasini bosish
Boshqaruv elementi tomonidan qiymat kiritish fokusini olish va yo'qotish
Ob'ektlarni drag - and - drop usulida ko'chirish
Shuni eslatib o'tish kerakki hodisalar ham xossa hisoblanadi va u ma'lum
tegishli bo'ladi. Aksaryat hodisalar xabar beruvchi xususiyatga ega va quo'yida
e'loni ko'rsatilgan TNotifyEvef turiga tegishlidir:
Type TNotifyEvef = procedure (Sender:Tobject) of object ;
E'londan ko'rinib to'ribdiki, xabar beruvchi xodisa manbaini (Seuder
parametiri ) ko'rsatadi va boshqa hech ma'lumotga ega emas . Boshqa xodisalar
nisbatan murakkab va ular qo'yidagi paramitirlarini,
masalan sichqpncha
ko'rsatkichini ko'chirishini, uning koordinatalarini berishni talab qiladi.
OnClick xodisasi (TNotifyEvef turida )boshqaruv elimentini tanlaganda ro'y
beradi, uni yana bosish xodisasi deb ataladi. Odatda bu xodisa sichqoncha tugmasi
bilan kompanentaga borganda ro'y beradi. Ilova yaratishda OnClick juda keng
ishlatiladi. Misol uchun label1 yozuvini tanlagandagi hodisani ishlash.
procedure TForma1->Label1Click(Sender: Tobject);
{
Label1-> Caption = TimeToStr(Time);
}
Sichqoncha bilan label1 yozuvida bosganda uning joriy vaqt akslanadi.
OnClick xodisasi boshqa xollarda ham yuzaga kelishi mumken.
Masalan
Button kompanentasida kiritish fokus turgan holda
yoki
tugmasi bosilsa CheckBox kompanentasi uchun
tugmasi bosiladi.
OnMouseDown hodisasi sichqoncha tugmasini bosganda ro'y beradi.
OnMouseUp hodisasi sichqoncha tugmasi qo'yib yuborganda ro'y beradi.
Sichqoncha tugmasi bosilganda qo'yidagi hodisalar ketma - ketligi ro'y beradi:
OnMouseDown -> OnClick (chap tugma uchun) -> OnMouseUp
Agar komponenta sohasiga sichqoncha tugmasini ikkilangan bosishi
amalga oshirilsa, OnDblClick hodisasi ro'y beradi . Bu holdagi hodisalar ketma -
ketligi qo'yidagicha bo'ladi :
OnMouseDown -> OnClick -> OnMouseUp -> OnDblClick -> OnMouseDown
->OnMouseUp
C++ Builder yuqorida qayd qilingan holatlarda qo'lda yuzaga keltirishga
imkon beradi. Masalan : Button2->Click operatori Button2 tugmasi bosilishini
immitatsiya qiladi.
80
OnMouseMove
hodisasi
vizual
komponenta
ustida
sichqoncha
ko'rsatgichini harakat qilishi davomida uzluksiz ravishda yuzaga kelib turadi. Bu
hodisaning turi quyidagicha :
Type
TMouseEvent=procedure(Sender:TObject;
Shift
:TShiftState;
x,y:integer) of Object ;
Bu yerda Sender - sichqoncha ko'rsatgichi qaysi boshqaruv elementi ustida
ekanligi , X va Y sichqoncha ko'rsatgichining Sender boshqaruv elementi
koordinata tizimidagi koordinatalarini ko'rsatadi. Shift parametri
,
va tugmalarining holatini bildiradi. Bu parametr quyidagi qiymatlarning
kombinatsiyasini olishi mumkin :
SsShift - tugmasi bosilgan
SsAlt - < Alt > tugmasi bosilgan
SsCtrl - < Ctrl > tugmasi bosilgan
SsLeft - sichqonchaning chap tugmasi bosilgan
SsMiddle - sichqonchaning o'rta tugmasi bosilgan
SsDouble - ikkilangan bosish amalga oshirilgan
Masalan, harakat davomida < Shift > va < Alt > tugmalari bosilgan bo'lsa
Shift parametri [SsShift, SsAlt ] qiymati qabul qiladi. Hech qaysi tugma bosilmagan
bo'lsa Shift parametri [ ] (bo'sh to'plam ) qiymatini qabul qiladi.
Masalan. Sichqoncha ko'rsatgichining koordinatalarini chop qilish
Procedure TForm1:FormMouseMove( );
{
Form1->Caption = “Sichqoncha ko'rsatgichi koordinatalari :” + IntToStr(x)
+ “va ” + IntToStr(y) ) ;
}
Sichqoncha
ko'rsatgichini
forma
ichida
xarakatlantirish
uning
koordinatalari forma sarloxasida ko'rsatib turiladi .
OnKeyPress va OnKeyDown hodisalari klaviatura tugmasini bosganda
yuzaga keladi.
OnKeyUp hodisasi klaviatura tugmasini qo'yib yuborganda yuzaga keladi.
Klaviatura tugmasini bosganda hodisalar quyidagi ketma - ketlikda ro'y beradi:
OnKeyDown, OnKeyPress, OnKeyUp.
Klaviaturani bosib turganda uzluksiz ravishda onKeyDown hodisasi , tugma
quyib yuborilgandan keyin OnKeyUp hodisasi ro'y beradi.
OnKeyPress hodisasi TKeyPressEvent turida bo'lib, u quyidagi e'longa ega:
Type TKeyPressEvent = procedure (Sender : TObject ; char Key) of Object ;
Bu yerda key parametri bosilgan tugmasi mos keluvchi belgining ASCII kodi.
81
OnKeyPress hodisasini qayta ishlashga misol
Procedure TForm1->EditKeyPress( Sender : TObject ; char Key);
{
if (key=='!') key=#0;
}
Bu yerda Edit1 taxriridagi matnni qayta ishlashda foydalanuvchiga '!'
belgisini ishlatishni man qiladi.
OnKeyDown va OnKeyUp hodisalari ASCII - kodlarga ega bo'lmagan
klaviatura boshqaruv tugmalarini qayta ishlash uchun aniqlangan.
Bu hodisalar TKeyEvent turida:
Type TKeyEvent=procedure(Sender : TObject ; word Key ; Shift:TShiftState)
of Object ;
Bu
hodisalar , , va boshqa tugmalar holatini tahlil
qilishda ishlatiladi . OnKeyPress hodisasidan farqli ravishda Key parametri Char
turida emas , Balki word turida shu sababli tugmasa mos keluvchi tugmani
aniqlash uchun Chr( ) funksiyasini ishlatish mumkin .
Boshqaruv va alfavit-raqam tugmalari bosilgan holatini qayta ishlash.
Procedure TForm1->Edit2KeyDown(Sender:TObject ; var Key:Word ;
Shift:TShiftState);
{
if (Shift==[SsCtrl]) &&(chr(Key)=='c')
MessageDlg('''Ctrl-C'' tugmalari bosildi ' , mtconfirmation,
[mbOk],0 );
}
Agar Edit2 komponentasi qiymat kiritish formulasida bo'lsa , < Ctrl> va
tugmalari birgalikda bosilsa Confirm dialog darchasi ' Ctrl - C tugmalari bosildi '
xabari bilan ekranda paydo bo'ladi.
Ayrim tugmalar o'ziga xosliklarga ega , masalan tugmasi bosilganda
OnKeyPress va OnKeyUp hodisalari yuz bermaydi.
OnEnter hodisasi boshqaruv elementlari fokus olgansda yuz beradi(
sichqoncha yoki tugmasi yordamida)
OnExit hodisasi darcha boshqaruv elementi fokusni yuqotganda yuz beradi.
Nazariy savollar:
Komponenta tushunchasi xaqida nimalarni bilasiz?
Komponenta xususiyatlari bilan qanday ishlanadi?
Standart komponentalari palitrasi haqida ma’lumot bering.
Additional komponentalari palitrasi haqida ma’lumot bering.
Win32 komponentalari palitrasi haqida ma’lumot bering.