51
компонентін орнатып, одан кейін осы компонентте тышқанды екі рет шерту амалын
орындаса болғаны.
Меню редакторы (7.1 сурет) пайдаланушыға графикалық режимде меню
командаларының аттарын енгізуге мүмкіндік береді. Бұл жағдайда автоматты түрде
менюдің әрбір командасы үшін TMenuItem типтес объекттер құрылады. Енгізілген
командалар аттары бір мезгілде Объекттер инспекторының Caption қасиетінде көрсетіледі.
Форма терезесі де TMainMenu менюінің меню редактрорында анықталатын барлық
элементтерін көрсетіп тұрады.
7.1 сурет. Меню редакторы және объекттер инспекторы
Менюді құрған кезде формаға қойылатын компоненттер автоматты түрде объекттер бұтағы
терезесінде көрініп тұрады. Қосымшаның бас менюі мен жанама менюін құру жолдары
толығырақ «Delphi ортасында қосымшалар құру» тақырыбында қарастырылады.
№10. Дәріс. Қосымшалар құру. Ерекше жағдайларды өңдеу. Ерекше жағдайларды
өңдеуде KeyPress жағдайын пайдалану. Керекті батырмаларға жұмыс жасамайтын
жағдайлар туғызу. SetFocus - жағдайын пайдалану арқылы таңдалған батырмаларды
басып, басқаруды көрсетілген компоненттке беруді ұйымдастыру.
Дәріс конспектісі:
Обработка исключительных ситуаций с использованием событий Key Press
выполняется путём организации блокирования лишних клавиш на клавиатуре, с целью
исключения нажатия нежелательных клавиш. Также для организации передачи управления
(перенос курсора) с помощью процедуры Set Focus при нажатии выбранных клавиш
управления (например, клавиши Enter). Таким же образом можно изменить назначение
клавиш.
Для этого на компоненте ввода, например: Edit1.text, обрабатывается событие Key Press
двойным щелчком и на появившейся процедуре обработки прописываются следующие
команды с управлением передачи курсора на поле ввода Edit2.text:
52
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9':;
#8,'-':;
#13: key:=Edit2.Setfocus;
',','.': Key:=',';
else Key:=Chr(0);
end;
end;
Также на компоненте ввода: Edit2.text, тоже обрабатывается событие Key Press
двойным щелчком и на следующей появившейся процедуре обработки прописываются
следующие команды с управлением передачи курсора на командную кнопку Button1:
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9':;
#8,'-':;
#13: key:=Button1.Setfocus;
',','.': Key:=',';
else Key:=Chr(0);
end;
end;
№11. Дәріс. Ерекше жағдайларды өңдеу. Exception - класы. Жағдайлады
туғызбаудың стандартты кластары. TRY…EXCEPTION …END - жағдайларды
туғызбау амалдарын өңдеу операторлары.
Дәріс конспектісі:
Object Pascal тілінде ерекше жағдайлармен жұмыс жасауға арналған келесідей операторлар
ендірілген:
Raise –
ерекшелер объектісін құруға арналған;
Try..Except -
белгілі бір ерекшелерді өңдеу блоктарын анықтауға арналған.
Try…Finally –
барлық ерекшелерді өңдеудің бір блогын анықтауға арналған.
Try
операторынан кейін ерекшелер пайда болуы мүмкін операторлар қатары орналасады.
Except
немесе Finally сөздерінің элементтерінен кейін ерекшелерді өңдеу блоктары
орналасады. Біздің программаның елеулі кемістігі бар: егер енгізу алаңында санның орнына,
мысалға айтқанда, "Вася" сөзін енгізсек, программа қате туралы хабар беріп, "жабылып"
қалады (тексеріңіз!). Ол түсінікті – өйткені FloatToStr функциясы "Вася" сөзін бөлшек санға
Рис. 4.2
Пример DOS-окна в котором работает консольное
53
айналдыра алмай қалады. Delphi-де TRY..EXCEPT..END операторының көмегімен
программада қателер барын тексеріп отыруға арналған өте сыпайы механизм бар.
TRY..EXCEPT..END
операторы құрамы бойынша, екі бөліктен тұрады. Біріншісі – ол опера-
торлар қатары, бұл операторлар қатары TRY және EXCEPT арасында көрсетіліп, ерекше
жағдайлар болуы мүмкін блок, - деп аталады. Екінші бөлімі - ол ерекшелерді өңдеу on типі_
ерекшелер операторы.
Оның жалпы түрі келесідей:
TRY
// Мына жерде қате болуы мүмкін
EXCEPT
Егер қате пайда болса, онда осы командалар орындалады
END;
Осы оперторды біздің процедураға енгізіп көрейік:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:real;
begin
try
a:=StrToFloat(LabeledEdit1.Text);
b:=StrToFloat(LabeledEdit2.Text);
c:=SQR(a+b)
except
Label1.Caption:=’
Деректер дұрыс емес’;
Exit
end;
Label1.Caption:=FoatToStr(c)
end;
Exit
операторы бүкіл процедурадан күні бұрын шығу жолын шақырады. Егер ол
болмаған жағдайда Label1.Caption:=FloatToStr(c) операторы бәрібір орындалар
еді, өйткені оның try операторымен ешқандай байланысы жоқ.
Обработка ошибок с помощью стандартных классов исключений Класс
Exception
и Класс Finally.
Операторы обработки исключений TRY..EXCEPTION..END; TRY..
FINALLY..END
В языке Object Pascal для работы с исключениями реализованы следующие
операторы:
Raise –
для создания объекта исключение;
try..except-
для определения блоков обработки конкретных исключений.
Try…finally –
для определения одного блока обработки всех исключений.
После оператора Try размещается последовательность операторов, в которой
возможно возникновение исключения. После элемента фразы except или finally
размещаются блоки обработки ошибок.
Наша программа страдает существенным недостатком: если в поле ввода вместо
числа ввести, скажем, "Вася", программа "свалится" с выдачей сообщения об
ошибке (проверьте!) Оно и понятно – функция FloatToStr не может преобразовать
"Васю" в вещественное число.
В Delphi реализован очень элегантный механизм реакции на ошибки в
программе при помощи оператора TRY..EXCEPT..END.
Опера тор TRY..EXCEPT..END состоит как бы из 2-х частей. Первая – это
последовательность операторов, указываемая между TRY и EXCEPT, называемая
Достарыңызбен бөлісу: |