TWinControl класында пернетақтамен жұмыс істегенде пайда болатын оқиғалар анықталған. Оларға келесі оқиғалар кіреді:
property OnKeyDown:TKeyEvent;
Оқиға пернетақтаның пернесі басылғанда өрбиді. Оқиғаны өңдеу типі TKeyEvent:
type
TKeyEvent = procedure(Sender: TObject; var Key: Word;
Shift: TShiftState) of object;
мұндағы Sender – активті басқару элементіне сілтеме жасайтын параметр; Key – басылған перненің коды;
type
TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight,
ssMiddle, ssDouble);
Shift – пернетақтаның Alt, Ctrl, Shift пернелерінің және тышқанның пернелерінің күйін қадағалайды (көптіктің типі, оның элементтері: ssShift –Shift батырмасы басылды, ssAlt – Alt батырмасы басылды, ssCtrl – Ctrl батырмасы басылды , ssLeft – тышқанның сол жақ батырмасы, ssRight – тышқанның оң жақ батырмасы, ssMiddle – тышқанның ортаңғы батырмасы, ssDouble – тышқанның батырмасымен екі рет шерту).
Мысал 3.2.1 OnKeyDown оқиғасының өңдеуіші Alt+Ctrl+Z пернелерінің қосындысына басқанда Form1 құрауышының пішіннің фонының түсіне clAqua (көгілдір) мәнін береді.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
IF (Shift=[ssAlt,ssCtrl]) AND (Key=ORD(’Z’)) THEN Form1.Color:=clAqua;
end;
Пернелердің кодын VCL Reference анықтама жүйесінің Virtual Key Codes, Key Codes бөлімдерінен көруге болады.
property OnKeyPress:TKeyPressEvent;
Символдық перне басылғанда өрбитін оқиға. Оқиғаны өңдеу типі TKeyPressEvent:
type
TKeyPressEvent = procedure(Sender: TObject;
var Key: Char) of object;
Key параметрі – басылған перненің ANSI-кодын (символ) анықтайды.
property OnKeyUp:TKeyEvent;
Оқиға пернетақтадағы басылған пернені босатқанда өрбиді. Оқиғаны өңдеу типі TKeyEvent (жоғарыдағы OnKeyDown оқиғасын қараңыздар).
Мысал 3.2.2 OnKeyPress оқиғасының өңдеуіші Form1 құрауышы үшін «R» символдық пернесі басылғанда пішіннің фонының түсін қызылға өзгертеді, ал осы пернені босатқанда OnKeyUp оқиғасының өңдеуіші пішіннің фонының түсіне алғашқы мәнін орнатады (clBtnFace).
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
If Key='R' then Form1.Color:=clRed;
end;
{пернеге басқанда пернетақтаның регистрі және тілдік бөлінуі есепке алынады}
procedure TForm1.FormKeyUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
If Key=ORD('R') then Form1.Color:=clBtnFace;
end;
Осымен қатар TwinControl класында терезелік элемент активті болғанда немесе активті болмаған жағдайда өрбитін оқиғалар анықталған:
property OnEnter:TNotifyEvent;
Терезелік элемент енгізу фокусын алғанда өрбитін оқиға. Оқиғаны өңдеу типі TNotifyEvent.
type
TNotifyEvent = procedure(Sender: TObject) of object;
мұндағы Sender оқиға көзі - объектісіне нұсқаудан тұрады.
property OnExit:TNotifyEvent;
Терезелік элемент енгізу фокусын жоғалтқанда өрбиді.
TControl класында басқару элементі тышқан, перне және таймер арқылы қалыптастырылған оқиғаларды қалай қабылдайтынын анықтайтын қасиет бар:
property Enabled: Boolean;
Егер қасиетің мәні TRUE болса, онда – қабылдайды,
FALSE – қабылдамайды.
TScreen класында 2 оқиға анықталған:
property OnActiveControlChange: TNotifyEvent;
Оқиға пішіндегі активті басқару элементі өзгергенде өрбиді.
property OnActiveFormChange: TNotifyEvent;
Оқиға бағдарламада активті элемент өзгергенде өрбиді.
3.3 Тышқан арқылы берілген хабарламаны өңдеу
TControl класында тышқанды басқарғанда өрбитін оқиғалар анықталған.
property OnClick:TNotifyEvent;
Басқару элементін тышқан арқылы таңдағанда өрбитін оқиға (тышқанның көрсеткіші басқару элементінің үстінде орналасқанда тышқанның сол жақ пернесі басылады және босатылады).
property OnDblClick:TNotifyEvent;
Басқару элементіне тышқанның сол жақ пернесімен екі рет шерткенде өрбитін оқиға.
property OnMouseDown:TMouseEvent;
Тышқанның көрсеткіші басқару элементінің үстінде тұрғанда, тышқанның пернесі басылғанда өрбитін оқиға. Оқиғаны өңдеу типі TMouseEvent:
type
TMouseEvent = procedure(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X,Y:Integer) of object;
мұндағы Sender – оқиға болған құрауышқа нұсқайтын параметр;
type
TMouseButton = (mbLeft, mbRight, mbMiddle);
Button параметірінің мәні тышқанның қай батырмасы басылғанын анықтайды (mbLeft – сол жақ, mbRidht – оң жақ , mbMiddle - ортаңғы); Shift – пернетақтаның Alt, Ctrl және Shift пернелерінің және тышқанның пернесінің күйін қадағалайды (жоғарыдағы OnKeyDown оқиғасын қараңыздар); X,Y – Sender құрауышының клиенттік аймағындағы тышқанның көрсеткішінің жергілікті координаталары (пиксельмен беріледі).
property OnMouseMove:TMouseMoveEvent;
Тышқанның көрсеткіші басқару элементінің үстінде орналасқан кезде, оны жылжытқанда өрбитін оқиға. Оқиғаны өңдеу типі TMouseMoveEvent:
type
TMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState; X,Y:Integer) of object;
Параметлері OnMouseDown оқиғасындағы сияқты мағынаны береді.
property OnMouseUp:TMouseEvent;
Тышқанның көрсеткіші басқару элементінің үстінде орналасқан кезде, тышқанның пернесін босатқанда өрбитін оқиға. Оқиғаны өңдеу типі TMouseEvent (жоғарыдағы OnMouseDown оқиғасын қараңыздар).
Мысал 3.3.1 Бұл мысал пішінде төрт панелі бар StatusBar1 (Win32 парағы) қалып – күй жолының болуын талап етеді. . Панельді қосу үшін қалып – күй жолының Panels қасиетінің мәндер өрісінің үш батырмасына шерту арқылы Editing StatusBar1.Panels терезесін шақырыңыздар. Редактірлеу терезесінің басқару панельінің Add New батырмасына төрт рет шертіңіздер. (Мысалды орындамас бұрын әрбір панельдің Width қасиетіне 150 мәнін орнатыңыздар). Қолданушы тышқанның батырмасына басқанда, тышқанды жылжытқанда және тышқанның батырмасын босатқанда пішінде тіктөртбұрыш тартылады. Тышқанның батырмасы босатылғанда тіктөртбұрыш пішіннің канвасында пайда болады. Оның сол жақ жоғарғы және оң жақ төменгі бұрыштары тышқанды басқан және босатқан уақыттағы тышқанның көрсеткішінің орналасуымен анықталады. Қолданушы тышқанды жылжытқанда тіктөртбұрыштың сол жақ жоғарғы (Left, Тор) және оң жақ төменгі (Right, Bottom) бұрыштарының координаталары қалып –күй жолында бейнеленеді. Горизонталь осьі солдан оңға қарай жүреді. Вертикаль ось – жоғарыдан төмен қарай бағытталады. Осьтер тек қана оң мәндерден тұрады.
var
StartX, StartY: Integer; {Пішіннің модульінің интерфейс бөлімінде жариялайды}
{Бұл кодты пішіннің OnMouseDown оқиғасының өңдеуіші ретінде қолданыңыздар: }
procedure TForm1.FormMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
StartX := X;
StartY := Y;
end;
{ Бұл кодты пішіннің OnMouseUp оқиғасының өңдеуіші ретінде қолданыңыздар: }
procedure TForm1.FormMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
Form1.Canvas.Rectangle(StartX, StartY, X, Y);
StatusBar1.Panels[0].Text := '';
StatusBar1.Panels[1].Text := '';
StatusBar1.Panels[2].Text := '';
StatusBar1.Panels[3].Text := '';
end;
{ Бұл кодты пішіннің OnMouseMove оқиғасының өңдеуіші ретінде қолданыңыздар: }
procedure TForm1.FormMouseMove(Sender: TObject;
Shift: TShiftState; X,Y: Integer);
begin
if ssLeft in Shift then { батырманың басылғанын тексеріңіздер }
begin
if Y > StartY then
begin
StatusBar1.Panels[0].Text := 'Top: ' + IntToStr(StartY);
StatusBar1.Panels[2].Text := 'Bottom: ' + IntToStr(Y);
end
else
begin
StatusBar1.Panels[0].Text := 'Top: ' + IntToStr(Y);
StatusBar1.Panels[2].Text := 'Bottom: ' + IntToStr(StartY);
end;
if X > StartX then
begin
StatusBar1.Panels[1].Text := 'Left: ' + IntToStr(StartX);
StatusBar1.Panels[3].Text := 'Right: ' + IntToStr(X);
end
else
begin
StatusBar1.Panels[1].Text := 'Left: ' + IntToStr(X);
StatusBar1.Panels[3].Text := 'Right: ' + IntToStr(StartX);
end;
end;
end;
Достарыңызбен бөлісу: |