Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Then begin 2 page





6. Негізгі пішіннің терезесіне Memo, Edit, Label құрауыштарын және“ OK ” және “ Close ” екі батырмасын орналастырыңыздар. Edit енгізу жолындағы мәтін “ OK ” батырмасына басқанда өзгеріссіз Label тамғасына және Memo көпжолды редактірінекөшетіндей бағдарлама құрыңыздар.

[имя строки ввода].SetFocus операторының көмегімен терезенің экранда пайда болған кезінде (пішіннің оқиғасын қолданыңыздар) және “ OK ” батырмасына басқанда енгізу жолы үшін енгізу фокусын орнатыңыздар.

Пішіннің оқиғалары:

Пішін құрылғанда және оның Visible қасиетінің мәні True болғанда, келесі оқиғалар тіркелген ретімен орындалады:

1. OnCreate – пішінді бастапқы құрғанда орындалады.

2. OnShow – пішін көрінер алдында орындалады.

3. OnActivate – пішін белсенді болғанда өрбиді.

4. OnPaint пішін экранда салынар алдында өрбиді (пішін белсенді болғанда немесе көрінетін болғанда).

OnDestroy оқиғасы – OnCreate қарама - қарсы, пішінді жойғанда орындалады.

7. №5 – ші тапсырманың бағдарламасын - айнымалылардың мәндері енгізу жолдары арқылы енгізілетіндей етіп өзгертіңіз. Пішінге келесі әрекетке көмекші кеңес беретіндей тамғаны орналастырыңыз.
Ұсыныс: Пішінге 4 құрауышты орналастырыңыз – Button (OK, OK, Close, Результат), 1 – Edit (айнымалылардың мәндерін енгізу үшін), 2 тамға Label - көмек кеңесті және нәтижені шығару үшін. Visible қасиетін және SetFocus әдісін қолданыңыздар.

3.2 Пернетақта арқылы берілген хабарламаны өңдеу

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 пернелерінің және тышқанның пернелерінің күйін қадағалайды (көптіктің типі, оның элементтері: ssShiftShift батырмасы басылды, ssAltAlt батырмасы басылды, ssCtrlCtrl батырмасы басылды, 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;

Зертханалық жұмыс №8 “ TForm объектісі

1. Жаңа жоба құрыңыздар. Пішінге тақырып беріңіздер "Лабораторная работа №8, Фамилия Имя". Жеке каталогқа жобаны сақтаңыздар.

2. Пішіннің өлшемін 500 де 400 пиксельге және орнын экранның центрі бойынша орнатыңыз.

3. Пішінге өзіңіздің фирмалық иконыңызды орнатыңыз. Осы иконканы қосымшаға да орналастырыңыздар. (Қосымшаны көріңіздер).

4. Пішінге "Моя формочка" деген көмекші кеңесті орнатыңыздар. Көмекші кеңестің түсіне қошқыл жасыл түс беріңіздер. (clLime).

5. Тышқанның көрсеткішін пішіннің үстімен жылжыту кезінде, ол өз түсін бұрыштардағы мәндерге байланысты баяу өзгерту керек: сол жақтағы жоғарғы бұрыштың түсі - қара, сол жақтағы төменгі бұрыштың түсі - көгілдір, оң жақтағы жоғарғы - қызыл, оң жақ төменгі - ақ. Ctrl-Alt-C басу арқылы осы режимді қосуға/өшіруге болады.

6. Тышқанның екі рет шертілгенде немесе Alt-X батырмаларының комбинациясына немесе F10 батырмасына басқанда пішін жабылады (рұқсат сұрату арқылы).

7. Бағыттары көрсетілген пернелерге басқанда пішін жылжиды (экранның шекарасында).

8. Тышқанның оң жақ батырмасына басқанда пішін жан – жағынан 5 пиксельге кішірейеді. Тышқанның оң жақ батырмасы мен Shift пернесіне басқанда пішін жан – жағынан 5 пиксельге үлкейеді.

Өздіктеріңнен.

1. Пішіннің өлшемі өзгергенде шертпенің дыбысы шығады, ал өлшемнің өзі экранның төменгі жағындағы минимизация терезесінде көрсетіледі.

2. Тышқанның ортаңғы батырмасына немесе екі шеткі батырмаларына басқанда пішін тышқанның көрсеткішінің нұсқағышына байланысты центрленеді.

Қосымша.

1. Beep(0) процедурасы қысқа дыбыстық дабылды шақырады.

2. RGB(r,g,b) функциясы r,g,b (от 0 до 255) параметрінің мәніне байланысты қызыл, жасыл және көк түстердің реттік нөмірін қайтарады.

3. Application объектісі бағдарламаның маңызды қасиеттері мен әдістерін инкапсуляция жасайды Application объектісінің кейбір қасиеттері:

HintColor Оперативті көмекші кеңестің таңбашасының түсі.
HintHidePause Көмекші кеңестің таңбашасы пайда болып және жоғалғанға дейін миллисекунд тұратын үзіліс.
Icon Минимизацияланған бағдарлама батырмасының пиктограммасы.
Title Минимизацияланған бағдарлама батырмасындағы мәтін.

4. Screen объектісі ДК экранының жұмысын жеңілдететін маңызды қасиеттер мен әдістерден тұрады. Screen объектісінің кейбір қасиеттері:

Fonts Барлық экрандық қаріптердің тізімі.
Height, Width Экранның ұзындығы мен ені.
IconFont Минимизацияланған бағдарлама батырмасының мәтінінің қаріпі.
PixelsPerInch Пиксельден дюмге өтетін экранның рұқсат беретін қабілеті.

3.4 Басқару элементтерінің тасуын қамтамасыз ететін сипаттамалар (Drag & Drop тетігі)

Экранда бейнеленетін басқару элементтері құрауыштар сияқты ерекше қасиеттерге ие, оларды экран бойынша жылжытуға болады және оларды басқа басқару элементтеріне түсіруге болады. Тасу (Drag & Drop) сәйкес басқару элементін тышқанмен керекті орынға сүйреу арқылы жүзеге асады. Тышқанның сол жақ батырмасын босатқанда құрауыштың сол жақ жоғарғы бұрышы тышқанның көрсеткіші нұсқаған нүктеге орналасады.

Басқару элементтерін тасуға тағайындалған TControl класының негізгі сипаттамаларын қарастырайық.

Қасиеті (Properties):

property DragCursor: TCursor;

Type

TCursor = -32768..32767;

Басқару элементін тасыған уақыттағы тышқанның көрсеткішінің түрін анықтайды.

property DragMode: TDragMode;

Type

TDragMode = (dmManual, dmAutomatic);

Басқару элементін тасудың режимін орнатады: егер dmAutomatic (Автоматты түрде) мәнін қабылдаса, онда басқару элементін тікелей тышқанның көмегімен тасуға болады, егер dmManual (Қолмен) мәні тағайындалса, онда тікелей тышқанның көмегімен тасу мүмкін емес.

Оқиғалар (Events):

property OnDragDrop: TDragDropEvent;

Басқару элементіне басқа тасылатын басқару элементі түсірілгенде өрбитін оқиға. Оқиғаның өңдеуіші TDragDropEvent типінен тұрады:

Type

TDragDropEvent = procedure (Sender, Source: TObject;
X, Y: Integer) of object;

мұндағы Sender тасылатын басқару элементі түсірілген объект; Source – тасылатын басқару элементі; X, Y – Source басқару элементін түсірген сәттегі тышқанның көрсеткішінің координаталары (Sender клиенттік аймағының координаталар жүйесіндегі). Оқиға шынымен Source басқару элементін Sender объектісіне түсірген кезде ғана өрбиді.

property OnDragOver: TDragOverEvent;

Sender басқару элементінің үстіне басқа тасылған Source басқару элементі орналастырылғанда өрбитін оқиға. Оқиғаның өңдеуіші TDragOverEvent типінен тұрады:

Type

TDragOverEvent = procedure (Sender, Source: TObject; X,Y: Integer;
State: TDragState; var Accept: Boolean) of object;

Sender, Source, X, Y параметрлері OnDragDrop оқиғасындағы сияқты мағына алады; State – тасу режимінің күйін анықтайды (dsDragEnter – тасылатын объект басқару элементіне түседі, ол арқылы оны жылжытуға болады; dsDragLeave – тасымалданатын элемент осы басқару элементін тастап кетеді; dsDragMove – тасылатын элемент басқару элементінің бойымен жылжиды); Accept – егер Sender объектісі тасымалданған элементті қабылдайтын болса, онда оқиғаның өңдеуіші True мәнін, ал кері жағдайда False мәнін беретін параметр.

property OnEndDrag: TEndDragEvent;

Ағымды басқару элементін тасу аяқталғанда өрбитін оқиға. Оқиғаның өңдеуіші TEndDragEvent типінен тұрады:

Type

TEndDragEvent = procedure (Sender, Target: TObject;
X, Y: Integer) of object;

мұндағы Sender тасылатын басқару элементі; Target – үстінде тасылған басқару элементі орналасқан объект; X, Y – тасу аяқталған кездегі тышқанның көрсеткішінің координаталары. Оқиға кез – келген тасуды аяқтағанда және Target Sender басқару элементін қабылдағанда, қабылдамағанда өрбиді. Соңғы жағдайда тасылатын басқару элементі өз орынында қалады.

property OnStartDrag: TStartDragEvent;

Ағымды басқару элементі тасылғанда өрбитін оқиға. Оқиғаның өңдеуіші TStartDragEvent типінен тұрады:

Type

TStartDragEvent = procedure (Sender: TObject;
var DragObject: TDragObject) of object;

мұндағы Sender – тасылатын басқару элементі; DragObject – тасу кезінде басқару элементінің кескінін қалыптастыратын арнайы объектіге сілтемеден тұрады. Үнсіздікпен nil – ге тең болады, яғни құрауыштың өзі тасылатын болады.

Бұл оқиғалардың барлығы қорғалған, бірақ ұрпақтар класында олар жинақталған болып жарияланады, сондықтан объект инспектрінде пайда болады. Оқиғалар қажетті түрде жазатын әдістерге нұсқағыш болып табылады, талап еткен жағдайда сәйкес оқиғаны өңдеп береді. Бұл әдістің дайындамасын қалыптастыру үшін инспектор объектісінен сәйкес оқиғаны тышқанның көмегімен активтеу керек.

TControl класында сүйреу режимін іске қосатын әдіс анықталған:

procedure BeginDrag(Immediate: Boolean;
Threshold: Integer = -1);

BeginDrag әдісі бағдарламаның кодында басқару элементінің DragMode қасиетінің мәніне dmManual орнатылғанда шақырылады. Егер DragMode – dmAutomatic, онда әдіс автоматты түрде шақырылады.

Егер параметр Immediate - TRUE, онда тышқанның көрсеткіші DragCursor қасиетінде берілген түрді қабылдайды және жылжыту тез арада басталады. Егер Immediate – FALSE, онда тышқанның көрсеткішінің түрі өзгермейді, және қолданушы тышқанның көрсеткішін Threshold параметрінде көрсетілген пиксель санына жылжытқанша сүйреу басталмайды. Егер әдісті шақырғанда Threshold параметрі түсірілсе, онда BeginDrag Mouse ауқымды айнымалысының DragThreshold қасиетінің мәнін қолданады.

Immediate – қа FALSE орнататын болсақ, онда басқару элементі тасу амалын бастамай – ақ тышқанның шертуін қабылдайды.

Мысал 3.4.1 Басқару элементін тасуды қамтамасыз ететін бағдарлама.

Басқару элементін тасуды жүзеге асыратын бағдарлама жазайық. Ол үшін пішінге GroupBox тақырыбы бар панель мен Button батырмасын орналастырайық. Батырма мен оған орналасқан панельді пішіннің бойымен жылжытайық.

Батырманы жылжыту үшін оның DragMode қасиетіне dmAutomatic мәнін беру керек, ал пішін мен панель үшін OnDragDrop және OnDragOver оқиғаларының өңдеуішін жазу керек. Батырмаға OnStartDrag және OnEndDrag оқиғаларының қолданылғанын көрсету үшін батырмалардың аттарын өзгертетін оқиғалардың өңдеуішін жазу керек.

Тапсырманың шешімін келесі түрде ұйымдастыруға болады:







Date: 2015-07-01; view: 687; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.055 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию