Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatica / lab_delphi / Упражнение 2 по Delphi.doc
Скачиваний:
15
Добавлен:
09.04.2015
Размер:
438.78 Кб
Скачать

Программирование

  1. Создайте обработчик события создания формы, который будет задавать символ ‘2’ в качестве значений свойства TextУЭ-таEdit1, значение ‘4’ – для УЭ-таEdit2и значения ‘’ – для УЭ-таEdit2, выполнив следующие действия:

    1. Щелкните на форме и затем сделайте двойной щелчок на строке события Increateна вкладкеEvents в диалогеObject Inspector.

    2. В тело обработчика вставьте операторы: Edit1.Text:='2';Edit2.Text:='4';Edit3.Text:='';

  2. Создайте для ComboBox1 обработчик событияUnclose1для запоминания выбранного преобразования и вывода на передний план УЭ-таEdit4с текстом из выбранной строки спискаComboBox:

    1. В начале раздела реализации дайте описание переменной d:byte, которая будут использоваться для хранения номера элемента списка, представляющего выбранное преобразование (0 ~ +(сложить), 1 ~ (вычесть), 2 ~ *'(умножить), и т.д.).

    2. Сохраните в d индекс выбранного элемента списка d:=ComboBox1.ItemIndex;

    3. Введите код, обеспечивающий при выборе знака операции вид рис. 4 (УЭ-т Label4 содержит знак выбранной операции и загораживает ComboBox1), иначе – вид рис. 5 (УЭ-ты Label1 и Edit1 не отображены, УЭ-т Label2 имеет заголовок Аргумент, УЭ-т Label4 содержит выбранной функции и загораживает ComboBox1): if d in [4,5,7] then begin Edit1.Visible:=False; Label2.Caption:='Аргумент'; Label1.Visible:=False; end else begin Edit1.Visible:=True; Label2.Caption:='Операнд 2'; Label1.Visible:=True; end; Label4.Caption:=ComboBox1.Items[d]; ComboBox1.Visible:=false; Label4.Repaint; Label4.BringToFront; Label4.Visible:=True;

  3. Создайте для Label4 обработчик события OnClick, который будет прятать Label4, а ComboBox1 делать видимым и передавать ему фокус: ComboBox1.Visible:=True; Label4.Visible:=False; ComboBox1.SetFocus;

  4. Чтобы при выполнении программы размер шрифта для Label4 становился таким, как на рис. 4 и рис. 5, добавьте в обработчик события создания формы операторы и подберите присваиваемые значения: Label4.Font.Height:=<целое>; // 22; Label4.Font.Style:=<множество>; // [fsBold]; Label4.Font.Name:=<строка>; // 'Times New Roman'; !!! Значения можно подобрать с помощью Инспектора объектов, где дляFont.StyleиFont.Nameпредставлены все возможные значения, а затем опробовать и программную установку.!!!Описание свойства можно найти так: установить на него курсор \ вызвать локальное меню\ выбрать пункт Find Declaration.

  5. Создайте для кнопки Button1обработчик событияOnClick, который будет выполнять двуместные операции над данными из полейEdit1иEdit2или вычислять функцию для аргумента из поляEdit2в зависимости от выбранного преобразования в спискеComboBox1, выводить результат в полеEdit3и устанавливать на него фокус:

    1. Дайте в процедуре описания переменных, которые будут использоваться для преобразований “число строка” при выполнении преобразованийs1,s2,s3:string;r1,r2,r3:extended;k:integer;

    2. Добавьте в обработчик операторы преобразования текста из поля ввода Edit2в числоr2, а если в поле не число, то выдачи сообщения об ошибке и выход из обработчика:s2:=Edit2.Text;Val(s2,r2,k);ifk<>0thenbeginifdin[0..3,6]thenShowMessage(‘Второй операнд должен быть числом!')elseShowMessage(‘Аргумент должен быть числом!');exitend;

    3. Добавьте далее операторы аналогичной обработки текста из поля ввода Edit1в числоr1, а если в поле не число, то выдачи сообщения об ошибке и выход из обработчика. if d in [0..3,6] then begins1:=Edit1.Text;Val(s1,r1,k);ifk<>0thenbeginShowMessage(‘Первый операнд должен быть числом!');exitend;end;

    4. Добавьте далее оператор caseдля выполнения заданного преобразования:

case d of

0: r3:=r1+r2;

1: r3:=r1-r2;

2: r3:=r1*r2;

3: if r2=0 then begin

ShowMessage('Делитель должен быть отличен то нуля!');

exit

end

else

r3:=r1/r2;

4: r3:=sin(r2);

5: r3:=cos(r2);

6: if r1<=0 then begin

ShowMessage('Первый аргумент должен быть больше нуля!');

exit

end

else if r2>0 then

r3:=exp(abs(r2)*ln(r1))

else

r3:=1/exp(abs(r2)*ln(r1));

7: if r2<=0 then begin

ShowMessage('Аргумент должен быть больше нуля!');

exit

end

else

r3:=ln(r2)/ln(10);

end{case};

s3:=FloatToStr(r3);

k:=Pos(',',s3);

if k>0 then begin

Delete(s3,k,1);

Insert('.',s3,k);

end;

Edit3.Text:=s3;

Edit3.SetFocus;

  1. Проверьте работу программы.

Соседние файлы в папке lab_delphi