|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Как реализовать прибавление/отнимание
Ребята всем добрый день...
Есть форма где стоит четыре компонента ТEdit как сделать так что бы при вводе цифр на Edit1 - Edit2 - Edit3 на Edit4 автоматом показывал общую суму? п.с. Вроде звучит легко но создает проблему когда допустим ввели строку 123 потом из этой строки удалили 3 или 2 Нет ничего не возможного. Вопрос только во времени... |
#2
|
||||
|
||||
Ой ссори - поторопился с вопросом...видно же нужно иногда спать а то голова не очь хорошо варит...решил проблему
Нет ничего не возможного. Вопрос только во времени... |
#3
|
||||
|
||||
Тем не менее вопрос задан, и вот эль-вариант решения:
Код:
procedure TForm1.Edit1Change(Sender: TObject); var ed1, ed2, ed3: integer; begin ed1:= 0; ed2:= 0; ed3:= 0; if Edit1.Text <> '' then ed1:= StrToInt(Edit1.Text); if Edit2.Text <> '' then ed2:= StrToInt(Edit2.Text); if Edit3.Text <> '' then ed3:= StrToInt(Edit3.Text); Edit4.Text:= IntToStr(ed1 + ed2 + ed3); end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#4
|
|||
|
|||
Цитата:
Код:
edX := StrToIntDef(EditX.Text, 0); |
#5
|
||||
|
||||
как раз правильней использовать StrToInt, чтобы в случае ввода пользователем не числового значения было возбуждено исключение и пользователь будет уведомлен. в случае с StrToIntDef будет произведен расчет со значением по умолчанию, которое к пользователю не имеет отношения.
Пишу программы за еду. __________________ |
#6
|
||||
|
||||
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
#7
|
||||
|
||||
Мой вариант:
Код:
begin try Edit3.Text := IntToStr(StrToInt(Edit1.Text) + StrToInt(Edit2.Text)); except Edit3.Clear; end; end; А NumbersOnly может и не подойти, если вдруг потребуются отрицательные или шестнадцатиричные значения, которые StrToInt тоже поддерживает. Не стоит путать форумы с богадельнями. © Bargest |
#8
|
||||
|
||||
Что это такое разве так не легче??
Код:
var f1,f2,f3: real; ... ... ... //это для каждого компонента TEdit procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var k:integer; begin if Edit1.Text='0' then if not(key in [',',#8]) then Edit1.Text:=''; if key in['0'..'9',',',#8] then begin if key=',' then begin if Edit1.Text='' then key:=#0; For k:=1 to Length(Edit1.Text) do begin if Edit1.Text[k]=',' then key:=#0; end; end; end else key:=#0; end; ... ... procedure TForm1.Edit1Change(Sender: TObject); begin if edit1.Text<>'' then begin f1:=strtofloat(edit1.Text); edit3.Text:=floattostr(f1+f2+f3); end; end; procedure TForm1.Edit2Change(Sender: TObject); begin if edit2.Text<>'' then begin f2:=strtofloat(edit2.Text); edit3.Text:=floattostr(f1+f2+f3); end; end; procedure TForm1.Edit3Change(Sender: TObject); begin if edit3.Text<>'' then begin f3:=strtofloat(edit3.Text); edit3.Text:=floattostr(f1+f2+f3); end; end; Нет ничего не возможного. Вопрос только во времени... |
#9
|
||||
|
||||
Цитата:
Вердикт: G-код детектед З.Ы. Да и потом, был вопрос про появление суммы из трёх слогаемых в Edit4, а здесь такого вообще не наблюдается. ТС - непонятки Я не понял Вашего вопроса, но всё же Вам на него отвечу! |