2011-12-26 14 views
-2

Я хочу добавить и вычитать числа в форме Delphi. У меня есть две кнопки, одна с надписью «+» и одна с надписью «-».Delphi: Сложение и вычитание

Если вы нажмете на кнопку «+», то, очевидно, ему нужно добавить число до уже существующего значения, отображаемого в окне редактирования. Количество в поле редактирования должно увеличиваться на 1 каждый раз, когда вы нажимаете «+». Если вы нажмете «-», 1 нужно вычесть из значения в поле редактирования. Значение не может идти ниже существующего значения, которое в этом случае равно 35.

Так что мой вопрос: как кодирование в Delphi ищет это и как вы объявляете переменные?

+2

Является ли это homew Орк? – menjaraz

+0

Нет. Я учу себя delphi, потому что мне нравится визуальный Паскаль. – Jake

+2

Почему вы используете кнопки '+' и '-'? Вместо этого используйте 'TSpinEdit' и установите для свойства' MinValue' значение 35. Это то, как пользователи ожидают, что Windows будет работать с целыми значениями; он также обрабатывает ввод клавиатуры в дополнение к нажатиям кнопок. –

ответ

0

Написать следующий код кнопки "+", "-" не очень отличается, хотя:

Edit1.Caption := IntToStr(StrToInt(Edit1.Caption)+1); 
2

На вашем "-" button.click события добавить этот код

procedure TForm1.Button1Click(Sender: TObject); 
var 
    //declare all your variables here 
    result : integer; 
begin 
    result:=StrToInt(Edit1.text); 
    if result=35 then 
    exit 
    else 
    Edit1.text:=IntToStr(result-1); 

end; 

на ваш "+" ButtonClick добавить этот

procedure TForm1.Button2Click(Sender: TObject); 
begin 
    Edit1.text:=IntToStr(StrToInt(Edit1.Caption)+1); 

end; 
+1

Если бы я был вами, я бы вместо этого использовал 'TryStrToInt()'. – Pateman

+0

благодарит много людей! – Jake

0
procedure TForm1.btnIncrementClick(Sender: TObject); 
var 
    j: integer; 
begin 
    j := StrToInt(edit1.Text); 
    inc(j); 
    edit1.Text := IntToStr(j); 
end; 

procedure TForm1.btnDecrementClick(Sender: TObject); 
var 
    j: integer; 
begin 
    j := StrToInt(edit1.text); 
    if J > 35 then 
    begin 
    dec(j); 
    Edit1.Text := IntToStr(j); 
    end; 
end; 
+0

Ваш код 'btnDecrementClick' неверен. Это не мешает стоимости ниже 35; он уменьшает его, если он перейдет вместо этого. (Если значение равно 36, вы уменьшаете его до 35. Это не тот вопрос, который задает код.) –

+0

А? DEC никогда не вызывается, если переменная больше 35. Я тестировал это, и он работает. –

+0

Прочитайте то, что я написал снова. ОП попросил, чтобы значение не отклонялось ** ниже ** 35; вы уменьшаете его, если оно ** выше **, но не проверяет его ** ниже **. (Это означает, что вы можете ввести '33' в элементе управления редактирования, а затем нажать кнопку уменьшения, чтобы сделать ее« 32 », а ваш код не мешает ей уменьшаться. Тест должен быть« Dec (j), если j <35, то j: = 35; Edit1.Text: = IntToStr (j); 'или что-то подобное. –

Смежные вопросы