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 ; var Key:word ; 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);
Begin
if (Shift=[SsCtrl])and(chr(Key)='c')then
MessageDlg('''Ctrl-C'' tugmalari bosildi ' , mtconfirmation, [mbOk],0 );
End;
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 .
Boshqaruv elementi fokus olgandagi yoki fokusni yuqotgandagi hodisalarni qayta - ishlash proceduralari:
Procedure TForm1.Edit1.Enter(Sender:TObject);
Begin
Label5.Caption:=(Sender as TControl).Name +'aktivlashdi');
End;
Procedure TForm1.Edit1.Exit(Sender:TObject);
Begin
Label5.Caption:=TEdit(Sender).Name + ' aktiv emas');
End;
Label5 yozuvi sarlohasida Edit1 tahririning aktivligi yoki aktiv emasligi aniqlanadi . Bu yerda Name xossasiga murojaat ikki xil usulda amalga oshirilgan . Birinchi protsedurada Sender parametri oshkormas ravishda TControl turiga olib kelingan bo'lsa ,ikkinchi protsedurada Sender oshkor ravishda TEdit turiga keltirilgan .
Drag - and - Drop ( ko'chirish va qoldirish ) texnalogiyasi foydalanuvchiga turli ob'ektlar ko'chirish imkoniyatini beradi , masalan , bitta ruyhat elementlarini ikkinchisiga ko'chirish . Bunda ikkita boshqaruv elementi ishlatiladi : Manba va qabul qiluvchi
Manba ko'ruvchi obektni o'z ichga olsa, qabul qiluvchiga esa ko'chiriluvchi obektni oluvchi boshqauv elementlari hisoblanadi. Obektlarni ko'chirish bilan qo'yidagi hodisalar bog'langan:
OnStartDrag hodisasi manba tomonidan obektni ko'chirish boshlanganda yuzaga keltiriladi. Hodisani qayta -ishlovchisiga qo'yidagilar beriladi: obekt - manba Sourse (Tobject turida) va ko'chirish amali adresati - DragObjecr (TDragObject turida).
OnDragOver (TDragOverEvenf turida) hodisasi qabul qiluvchi tomonidan ko'chirilayotgan
obekt uning ustida bo'lganda yuzaga keltiriladi. Hodisa qayta ishlovchisiga qo'yidagi parametrlar
uzatiladi: Sender - obekt manba Sender - obekt qabul qiluvchi sichqoncha ko'rsatkichini X va Y
koordinatalari State- ko'chirish holati va ko'chirish amalini tasdiqlovchi Boolean turidagi Accept turidagi . State parametri ko'chiriluvchi obekt qabul qiluvchi sohasiga kirdimi, bu sohada u harakatlanmoqdami, uni bari etgin yoki yo'qligini bildiradi. Uzatilgan parametrlar taxlili Qabul qiluvchi ko'chirish amalini qabul qilish yoki inkor qilish (Accert=False) imkonini beradi.
OnDragdrop (TDragOverEvenf turida) hodisasi qabul qiluvchi tomonidan obekt unga
joylashtirilganda ro'y beradi. Hodisa qayta - ishlovchisiga qo'yidagi ma'lumotlar jo'natiladi; Sourse - joylashuvchi obekt, Sender - Qabul qiluvchi obekt, X va Y - sichqancha ko'rsatkich ikoordinatalari.
OnEndDrag hodisasi manba tomonidan ko'chirish amali tugaganda hosil qilinadi. Hodisa qayta - ishlovchisiga Target - Qabul qilgan obekt, Sender ko'chirilgan obekt va unuig yangi X , Y koordinatalari.
Eslatib utish kerakki, OnDragDrop va OnDragOver hodisalari uchun Sender manba,
OnEndDrag hodisasi uchun Sender - ko'chiriluvchi obekt.
Ko'chirishni amalga oshirish uchun ko'rsatilgan hodisalarning qayta - ishlovchisini ( prosedurasini) yoish kerak. Odayda OnDragDrap va OnDragOver hodisalarini qayta ishlash etarli.
Ko'chiriluvchi obektning DragMode xossasiga dmAvtomatic qiymatini berush zarur . Bunda kuchirish amali avtomatik ravishda amalga oshadi, aks xolda pragrammaviy yo'l bilan Begin Drag metodini chaqirish kerak bo'ladi.
Misol Lavil1 yozuvini formula chegarasida kuchirishi .
// Label1 . yozuvi=DragMode xossasiga dmAvtomatic qiymatini berish kerak .
Procedure TForm1. FormDragOver(SenderSourse: Tobject:X,Y: Integer; State: TDargState: Var Accept:Boolean);
Begin
If Sourse=Lable1 then Accept :=then else Accept:=False;
end;
Procedure TForm1.FormDragDrop(Sender, Sourse:Tobject ; X,Y:Integer);
Begin
Label1.Left:=X ; Label1.top:=Y;
end;
Qo'yidagi misolda kompanentaning tanlangan elementlarini ko'chirishga misol keltirilgan.
Misol. Ro'yxat elementlarini bir ro'yhatdan ikkinchisiga ko'chirish
// ListBox1 ro'yhati= DragMode hossasining qiymati dnAutomatic berish kerak.
Procedure TForm1.ListBox2DragOver(Sender, Sourse: Tobject; X,Y:Integer; State:TDragState; Var Accept:Boolean);
Begin
if Sourse=ListBox1 the Accept:=True else Accept:=False;
end;