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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2011, 15:35   #1
Morrowind1
 
Регистрация: 17.04.2011
Сообщений: 6
По умолчанию Калькулятор

при нажатии кнопки '+' поле Edit1 очищается, а число записывается в переменную, как сделать чтобы число записалась но поле Edit1 не очистилось, а очистилось только после ввода нового числа как win calc

Зарание спасибо

Код:
//----------------------------------------------------- ââîä íà ýêðàí
procedure TForm1.Button1Click(Sender: TObject);
 begin
  edit1.Text:=edit1.Text+'0'
   end;

procedure TForm1.Button4Click(Sender: TObject);
  begin
   edit1.Text:=edit1.Text+'1'

    end;

procedure TForm1.Button5Click(Sender: TObject);
  begin
   edit1.Text:=edit1.Text+'2'
    end;

procedure TForm1.Button6Click(Sender: TObject);
begin
 edit1.Text:=edit1.Text+'3'
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
 edit1.Text:=edit1.Text+'4'
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
 edit1.Text:=edit1.Text+'5'
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
 edit1.Text:=edit1.Text+'6'
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
 edit1.Text:=edit1.Text+'7'
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
 edit1.Text:=edit1.Text+'8'
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
 edit1.Text:=edit1.Text+'9'
end;

//--------------------------------------------------------


procedure TForm1.Button16Click(Sender: TObject);
begin
 if edit1.Text <>'' then x:=strtofloat(edit1.Text);
 edit1.Clear;
 kod:='+'
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
 if edit1.Text <>'' then x:=strtofloat(edit1.Text);
 edit1.Clear;
 kod:='-'
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
 if edit1.Text <>'' then x:=strtofloat(edit1.Text);
 edit1.Clear;
 kod:='*'
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
 if edit1.Text <>'' then x:=strtofloat(edit1.Text);
 edit1.Clear;
 kod:='/'
end;

procedure TForm1.Button20Click(Sender: TObject);
begin
 if  edit1.Text<>'' then y:=strtofloat(edit1.Text);
 case kod of
 '+': z:=x+y;
  '-': z:=x-y;
   '*': z:=x*y;
    '/': z:=x/y;
         end;
     edit1.text:= floattostr(z);
end;

end.

Последний раз редактировалось Stilet; 18.04.2011 в 14:06.
Morrowind1 вне форума Ответить с цитированием
Старый 18.04.2011, 13:40   #2
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

1) Код нужно заключать в теги # (не Shift+3 у себя на клавиатурe, а кнопкой # в редакторе сообщения форума);
2)
Цитата:
сделать чтобы число записалась но поле Edit1 не очистилось,
Убрать из обработчиков строчку
Код:
Edit1.Clear;
3)
Цитата:
а очистилось только после ввода нового числа
Как вариант, после нажатия на (+, -, *, /) можно изменить свойство Tag у компонента Edit1 (по умолчанию оно равно нулю) на единицу, например. Т.е. добавить в соответствующие обработчики событий строчку:
Код:
Edit1.Tag:=1;
В обработчиках нажатия кнопок с цифрами (0...9) проверять значение Tag: если оно равно 0- добавлять цифры к остальным в строке, если 1- затирать Edit1, писать сначала и возвращать свойству Edit1.Tag значение ноль. Например:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
case Edit1.Tag of
0: edit1.Text:=edit1.Text+'0';
1: begin
    Edit1.Clear;
    edit1.Text:=edit1.Text+'0';
    Edit1.Tag:=0;
    end;
end;
Вот как-то так. Код этот не проверял в работе, но логику вроде изложил
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 23.04.2011, 23:40   #3
Morrowind1
 
Регистрация: 17.04.2011
Сообщений: 6
По умолчанию

Спасибо разобрался
Morrowind1 вне форума Ответить с цитированием
Старый 23.04.2011, 23:43   #4
Morrowind1
 
Регистрация: 17.04.2011
Сообщений: 6
По умолчанию

Подскажите вот что пожалуйста, в поле Edit вывод строки должен быть с правой стороны
Morrowind1 вне форума Ответить с цитированием
Старый 23.04.2011, 23:44   #5
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Цитата:
Подскажите вот что пожалуйста, в поле Edit вывод строки должен быть с правой стороны
Знакомься с гугл

Morrowind1, чисто такой вот полезный совет, создай массив TButton вместо того нагромождения кнопок, что у тебя там на форме, и работай как с массивом.
Код будет намного меньше и красивее.
Ненавижу быть как все, но люблю, чтобы все были как я.

Последний раз редактировалось MyLastHit; 23.04.2011 в 23:48.
MyLastHit вне форума Ответить с цитированием
Старый 24.04.2011, 00:13   #6
Morrowind1
 
Регистрация: 17.04.2011
Сообщений: 6
По умолчанию

да уж сложновато пока для меня
Morrowind1 вне форума Ответить с цитированием
Старый 24.04.2011, 00:17   #7
Morrowind1
 
Регистрация: 17.04.2011
Сообщений: 6
По умолчанию

AnsiRightStr у меня делфи говарит что токого нет ?
Morrowind1 вне форума Ответить с цитированием
Старый 24.04.2011, 00:27   #8
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

StrUtils там по моему надо в uses указать. Точно не помню.
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 24.04.2011, 00:30   #9
Morrowind1
 
Регистрация: 17.04.2011
Сообщений: 6
По умолчанию

спасибо чувак
Morrowind1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор @RH@nhel Общие вопросы Delphi 2 24.01.2011 06:39
Калькулятор @RH@nhel Паскаль, Turbo Pascal, PascalABC.NET 8 23.01.2011 20:32
Калькулятор ser70 JavaScript, Ajax 3 15.01.2011 21:10
Калькулятор Enver Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 06.06.2010 16:02
Калькулятор program09 Общие вопросы C/C++ 1 01.06.2009 15:39