Дополнения к заданию
Сделайте так, чтобы двойной щелчок на Edit1приводил к пересылке значения из поля вводаEdit3в поле ввода Edit1, очистке поляEdit2и передаче ему фокуса: Edit1.Text:=Edit3.Text;Edit2.Clear;Edit2.SetFocus;
Сделайте так, чтобы, когда поле ввода Edit1 отображено, двойной щелчок наEdit2приводил к пересылке значения из поля вводаEdit3в поле ввода Edit2, очистке поляEdit1и передаче ему фокуса,иначе – к пересылке значения из поля вводаEdit3в поле ввода Edit2 и передаче ему фокуса: Edit2.Text :=Edit3.Text;ifEdit1.VisiblethenbeginEdit1.SetFocus;Edit1.Clear;endelseEdit2.SetFocus;
Добавьте на форму командные кнопки с цифрами 0..9, символами “минус” , ‘E’, “точка” и сделайте для них общий обработчик щелчка, добавляющий соответствующие символы в позицию курсора последнего из полейEdit1иEdit2, имевшего фокус. Рекомендации:
Используйте в разделе реализации дополнительную переменную для хранения номера последнего из полей Edit1 и Edit2, имевшего фокус, например, var e:1..2; которой при создании формы присваивается значение 1, если при этом фокус устанавливается на Edit1. В обработчиках щелчка этих полей Edit1 и Edit2 этой переменной присваивайте соответствующие значения.
Добавьте на форму командную кнопку с заголовком ‘0’ и сделайте следующий обработчик щелчка на ней: procedureTForm1.Button2Click(Sender:TObject);vari:integer;beginife=1thenbeginEdit1.ClearSelection;i:=Edit1.SelStart;Edit1.Text:=Copy(Edit1.Text,1,Edit1.SelStart) +(SenderasTButton).Caption+Copy(Edit1.Text,Edit1.SelStart+1,length(Edit1.Text));Edit1.SelStart:=i+1;Edit1.SelLength:=0;endelsebeginEdit2.ClearSelection;i:=Edit2.SelStart;Edit2.Text:=Copy(Edit2.Text,1,Edit2.SelStart) +(SenderasTButton).Caption+Copy(Edit2.Text,Edit2.SelStart+1,length(Edit2.Text));Edit2.SelStart:=i+1;Edit2.SelLength:=0;end;end; гдеEdit1.ClearSelection– удаление выделенного текста (SenderasTButton) – предложение рассматривать объект, пославший сообщение, как командную кнопку,Edit1.SelLength– длина выделенного текста (равна 0, если нет выделения текста)Edit1.SelStart– позиция курсора в строке, еслиEdit1.SelLength= 0, иначе – начала выделенного текста.
Обычным копированием размножьте эту кнопку так, чтобы их было достаточно для всех остальных символов, и дайте им соответствующие заголовки (обратите внимание на то, что все эти копии будут вызывать по щелчку один и тот же обработчик).
Дайте удобное размещение кнопок на форме.
Добавьте на форму две селекторные кнопки с надписями “Радианы” и ”Градусы” и свойству Checkedпервой из них дайте значениеTrue(вторая автоматически будет иметь значениеFalse). Измените в обработчике кнопкиButton1 алгоритм вычисления синуса и косинуса так, чтобы учитывались единицы измерения аргументов (радианы\градусы) в соответствии с установкой селекторных кнопок.4: if RadioButton1.Checked then r3:=sin(r2) else r3:=sin(r2/180*Pi); 5: if RadioButton1.Checked then r3:=cos(r2) else r3:=cos(r2/180*Pi);
В результате всех добавлений форма примет примерно такой вид