
Program math;
procedure menu;
var STReal:real;
str, work:string;
itemId:integer;
I, id:real;
cmd, cmdOk, cmdExit: command;
Begin
repeat
ShowForm;
ShowMenu('Главное меню',CH_IMPLICIT);
id:=MenuAppendString('sin');
id:=MenuAppendString('cos');
id:=MenuAppendString('tg');
id:=MenuAppendString('ctg');
id:=MenuAppendString('Выход');
cmdOk:=CreateCommand('ОК', CM_OK, 1);
cmdExit:=CreateCommand('Выход', CM_EXIT, 2);
AddCommand(cmdOk); // Тут немного непонятно. Клавиша выбора там уже и так есть, но ладно.
AddCommand(cmdExit);
repeat
cmd:=GetClickedCommand;
Delay(50);
if cmd=cmdExit then Halt;
until cmd=cmdOk;
ClearForm;
if MenuGetSelectedIndex<>4 then
begin
id := MenuGetSelectedIndex;
cmdOk:=CreateCommand('ОК', CM_OK, 1);
cmdExit:=CreateCommand('Выход', CM_EXIT, 2);
AddCommand(cmdOk);
AddCommand(cmdExit);
itemId:=FormAddTextField('Введите число с точностью до сотых','',20,TF_NUMERIC);
repeat
Delay(50);
cmd:=GetClickedCommand;
if (cmd = cmdExit) then Halt;
until cmd = cmdOk;
str:=FormGetText(itemId);
//STI:=StringToInteger(str); эту строку я ваще не понял
STReal:=StringToReal(str, 10); // так как с точностью до сотых то вводим 100, можно увеличить в случаи необходимости
if (id = 0) then begin I:=sin(STReal); work:='sin'; end;
if (id = 1) then begin I:=cos(STReal); work:='cos'; end;
if (id = 2) then begin I:=tan(STReal); work:='tan'; end;
if (id = 3) then begin I:=1 / tan(STReal); work:='ctg'; end;
ShowCanvas;
setcolor(255,255,255); FillRect(0,0,GetWidth,getHeight);
setcolor(0,0,0);
DrawText(work + ' ('+STReal+') = ' + I, 5, 5);
repaint;
delay(10000);
end;
else Halt;
until false;
End;
Begin
menu;
end.
Теперь всё пашет. Даже синусы с косинусами и проч.