Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2009, 13:49   #1
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию Помогите, пожалуйста разобраться с калькулятором

У меня задание сделать калькулятор с двумя Edit полями для ввода значений, кнопки с цифрами и четыре переключателя TRadioButton для операции (+,-,/,*).
При нажатии одного из переключателя ввод чисел переходит во второе Edit.

Помогите разобраться с этим кодом:
У меня не получается:
1. Кнопка с запятой, при нажатии на нее у меня запятая появляется в двух Edit полях

procedure TForm1.Button11Click(Sender: TObject);
begin
if RadioButton1.Checked or RadioButton2.Checked or RadioButton3.Checked or RadioButton4.Checked
then
if Edit2.Text = '0' then
begin
Edit2.Text := '0,';
f :=1;
end;
if Pos(',',Edit2.Text) = 0 then
Edit2.Text := Edit2.Text + ','
else
if Edit1.Text = '0' then
begin
Edit1.Text := '0,';
f :=1;
end;
if Pos(',',Edit1.Text) = 0 then
Edit1.Text := Edit1.Text + ',';
end;

2. Кнопка "0", не знаю как задать условия для того, чтобы нельзя было перед числом ввести несколько нулей:

procedure TForm1.Button10Click(Sender: TObject);
begin
if RadioButton1.Checked or RadioButton2.Checked or RadioButton3.Checked or RadioButton4.Checked
then
if f=0
then begin
Edit2.Text := '0';
f :=1;
end
else Edit2.Text := Edit2.Text + '0'
else
if f=0
then begin
Edit1.Text := '0';
f :=1;
end
else Edit1.Text := Edit1.Text +'0';
end;

Заранее большое СПАСИБО!
KARUSHEV вне форума Ответить с цитированием
Старый 14.01.2009, 15:37   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Edit2.Text := Edit2.Text + ','
здесь видимо надо поставить end
else
if Edit1.Text = '0' then
puporev вне форума Ответить с цитированием
Старый 14.01.2009, 17:00   #3
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

выводит ошибку, если вставить end

вот код первой кнопки:
// кнопка 1
procedure TForm1.Button1Click(Sender: TObject);
begin
if RadioButton1.Checked or RadioButton2.Checked or RadioButton3.Checked or RadioButton4.Checked

then
if f=0
then begin
Edit2.Text := '1';
f :=1;
end
else Edit2.Text := Edit2.Text + '1'
else
if f=0
then begin
Edit1.Text := '1';
f :=1;
end
else Edit1.Text := Edit1.Text +'1';

end;

тут все работает, а с запятой почему-то проблемы?
KARUSHEV вне форума Ответить с цитированием
Старый 14.01.2009, 17:35   #4
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Хорошо бы код посмотреть весь.
Немного не понял зачем два Editа?
и
Цитата:
При нажатии одного из переключателя ввод чисел переходит во второе Edit.
Это отдельный переключатель который определяет в какой Edit писать?
s.Creator вне форума Ответить с цитированием
Старый 14.01.2009, 17:48   #5
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

задача в контрольной такая, ввод первого числа в Edit1, ввод второго числа в Edit2, вывод в Label.
вот весь код:
unit Unit1;

interface

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
Edit1: TEdit;
Edit2: TEdit;
Button11: TButton;
Button12: TButton;
Label1: TLabel;
Label2: TLabel;
Button13: TButton;
MainMenu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
About1: TMenuItem;
XPManifest1: TXPManifest;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure About1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

var
x,y,z: real;
mode: integer;
f: integer;

//кнопка +
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
mode:=1;
end;

//кнопка -
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
mode:=2;
end;

//кнопка *
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
mode:=3;
end;

//кнопка /
procedure TForm1.RadioButton4Click(Sender: TObject);
begin
mode:=4;

end;

// кнопка =
procedure TForm1.Button12Click(Sender: TObject);
begin

x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);

case mode of

1:begin
if (x<>0) and (y<>0) then
begin
z:=x+y;
Label2.Caption:=FloatToStr(z);
end
else ShowMessage('Не введено одно из значении');
exit;
end;

2:begin
if (x<>0) and (y<>0) then
begin
z:=x-y;
Label2.Caption:=FloatToStr(z);
end
else ShowMessage('Не введено одно из значении');
exit;
end;


3:begin
if (x<>0) and (y<>0) then
begin
z:=x*y;
Label2.Caption:=FloatToStr(z);
end
else ShowMessage('Не введено одно из значении');
exit;
end;

4:begin
if (y <>0) then
begin
z:=x/y;
Label2.Caption:=FloatToStr(z);
end
else ShowMessage('На ноль делить нельзя');

exit;
end;
end;
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
Edit1.Text:='';
Edit2.Text:='';
Label2.Caption:='';
RadioButton1.Checked:=false;
RadioButton2.Checked:=false;
RadioButton3.Checked:=false;
RadioButton4.Checked:=false;


end;

// кнопка 1
procedure TForm1.Button1Click(Sender: TObject);
begin
if RadioButton1.Checked or RadioButton2.Checked or RadioButton3.Checked or RadioButton4.Checked

then
if f=0
then begin
Edit2.Text := '1';
f :=1;
end
else Edit2.Text := Edit2.Text + '1'

else
if f=0
then begin
Edit1.Text := '1';
f :=1;
end
else Edit1.Text := Edit1.Text +'1';

end;

// кнопка 2-9,0 аналогичные первой
//кнопка ,
procedure TForm1.Button11Click(Sender: TObject);
begin
if RadioButton1.Checked or RadioButton2.Checked or RadioButton3.Checked or RadioButton4.Checked
then
if Edit2.Text = '0' then
begin
Edit2.Text := '0,';
f :=1;
end;
if Pos(',',Edit2.Text) = 0 then
Edit2.Text := Edit2.Text + ','

else
if Edit1.Text = '0' then
begin
Edit1.Text := '0,';
f :=1;
end;
if Pos(',',Edit1.Text) = 0 then
Edit1.Text := Edit1.Text + ',';

end;



procedure TForm1.Exit1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.About1Click(Sender: TObject);
begin
Form2.Visible := true;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin

case Key of
'0'..'9',#8:;

else Key :=Chr(0);
end;

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin

case Key of
'0'..'9',#8:;

else Key :=Chr(0);
end;

end;

end.
KARUSHEV вне форума Ответить с цитированием
Старый 14.01.2009, 18:04   #6
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

выложил исходник
Вложения
Тип файла: rar калькулятор.rar (14.3 Кб, 7 просмотров)
KARUSHEV вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с калькулятором vishnya454 Помощь студентам 8 07.01.2009 10:35
Помогите с калькулятором. Sanch Помощь студентам 1 24.09.2008 06:42
ГОРИТ ДИПЛОМ!!!! пожалуйста помогите разобраться с программой alexs2141 Фриланс 6 03.06.2008 20:30
Пожалуйста помогите разобраться) Atij1 Общие вопросы C/C++ 4 13.04.2008 20:32