ПОМОГИТЕ НОВИЧКУ
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Подозреваю наличие сторонних компонент под Д3, которые придётся искать под Д6...
ЗЫ. А мне пока и Д5 хватает... :-P
ЗЫ. А мне пока и Д5 хватает... :-P

Я вот не знаю функция как пишится "Если Button1 нажата то" Я пробовал if Button1.Click then и пробовал ещё кое что а только вот чёто не получается! Мне жто надо для калькулятора вот там при нажатии на кнопку + происходит вачисление а "если нажата кнопка = то показать результат" ПОДСКАЖИТЕ пожалуйсто. И ещё вот какая функция западает "передвинуть каретку(курсор для печатания) с Edit1 на Edit2. Тоже как это сделать??? Заранее СПАСИБО ВСЕМ!!!!!!
То есть, я так понял, есть, скажем, два Edita, между ними кнопки: Button1 - "+", Button2 - "-" и так далее? И работать будет как простой калькулятор, то есть, скажем, ввели в эдит 2, нажали +, ввели во второй 3, нажали, скажем, *, в первом эдите появилось 5, второй освободился, ввели в него 7, нажали =, в первом появилось 35? Я правильно понял?Volk писал(а):Я вот не знаю функция как пишится "Если Button1 нажата то" Я пробовал if Button1.Click then и пробовал ещё кое что а только вот чёто не получается! Мне жто надо для калькулятора вот там при нажатии на кнопку + происходит вачисление а "если нажата кнопка = то показать результат"
Если правильно, то можно создать переменную Operation типа char, и процедуру
Код: Выделить всё
procedure form1.operationclick(]
Вот так вот все хитро. А при нажатии кнопки "=" проверяешь, какая у тебя стоит операция: если + - складываешь содержимое эдитов, если - - вычитаешь и т.д.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Нет немного не так ты понял у меня есть 3 эдитора один на другом в первый ввёл первое число нажал "+" он скрылся и показался второй Edit в нём ввёл второе число нажал равно и показался третий вот как мне сделать такую процедуру чтоб описать там два этих слова "если нажата кнопка "=""????? Вот этот код для кнопки +
procedure TForm1.BPClick(Sender: TObject);
var
index2:Integer;
Sum:Integer;
EndCount:integer;
begin
Edit1.Visible:=False;
Edit2.Visible:=True;
Sum:=0;
EndCount:=StrToInt(Edit1.Text);
index2:=StrToInt(Edit2.Text);
Sum:=EndCount+index2;
if pressed.BR then
КАК МНЕ ЕЁ СЮДА ВСТАВИТЬ ЧЁ НАДО ПИСАТЬ?????
Edit3.Text:=IntToStr(Sum);
end;
и потом набор в Edit я осуществляю как кнопками клавы так и кнопками формы там 1,2,3... И вот я прописал чтоб каждая кнопка при нажатии переводится в определённое число и вводится в Edit1 но это хлам тогда не получается для других вот как мне сделать так чтоб число вводилось только там где стоик каретка курсора???? короче калькулятор должен работать как калькуль из стандартных в Windows XP Спасибо всем!!!!!
СМОТРИ ДАЛЬШЕ НА стр.2!!!!!!!
procedure TForm1.BPClick(Sender: TObject);
var
index2:Integer;
Sum:Integer;
EndCount:integer;
begin
Edit1.Visible:=False;
Edit2.Visible:=True;
Sum:=0;
EndCount:=StrToInt(Edit1.Text);
index2:=StrToInt(Edit2.Text);
Sum:=EndCount+index2;
if pressed.BR then
КАК МНЕ ЕЁ СЮДА ВСТАВИТЬ ЧЁ НАДО ПИСАТЬ?????
Edit3.Text:=IntToStr(Sum);
end;
и потом набор в Edit я осуществляю как кнопками клавы так и кнопками формы там 1,2,3... И вот я прописал чтоб каждая кнопка при нажатии переводится в определённое число и вводится в Edit1 но это хлам тогда не получается для других вот как мне сделать так чтоб число вводилось только там где стоик каретка курсора???? короче калькулятор должен работать как калькуль из стандартных в Windows XP Спасибо всем!!!!!
СМОТРИ ДАЛЬШЕ НА стр.2!!!!!!!
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Рекомендую несколько пересмотреть алгоритм.
1. Положи на форму единственный TEdit. Сразу пропадёт геморрой с позиционированием и видимостью.
2. При нажатии на кнопку (цифири) сохраняй значение в переменной (если там пусто - первый операнд, если нет - второй)
3. При нажатии на кнопку операции сохраняй в переменной код этой операции, и если операндов 2 выполняй её.
4. Очень советую почитать и разобраться с ActionList и TAction. С их помощью можно очень легко манипулировать самыми разными свойствами контролов...
5. И, наконец, (хоть я и не модератор) заключай код в своих постах в тэг "code" (вместо кавычек - квадратные скобки) - так ты сохранишь форматирование - легче будет людям прочитать, понять и ответить
1. Положи на форму единственный TEdit. Сразу пропадёт геморрой с позиционированием и видимостью.
2. При нажатии на кнопку (цифири) сохраняй значение в переменной (если там пусто - первый операнд, если нет - второй)
3. При нажатии на кнопку операции сохраняй в переменной код этой операции, и если операндов 2 выполняй её.
4. Очень советую почитать и разобраться с ActionList и TAction. С их помощью можно очень легко манипулировать самыми разными свойствами контролов...
5. И, наконец, (хоть я и не модератор) заключай код в своих постах в тэг "code" (вместо кавычек - квадратные скобки) - так ты сохранишь форматирование - легче будет людям прочитать, понять и ответить


Да пробовал вчера с одним Эдитом и переменные записовал всё как положенно. Только вот когда вводиш второе число он стерает первое не только с глаз но и с памяти и выполняет действие только со вторым. Т.е. складывает его само с собой. А вот какой вопрос как на языке Pascal будит звучать условие "если Edit1 содержит текст (или число) то"?????? И ещё сто раз уже спрашивал чёто ни кто не ответил как будит звучать в паскале прцедура перевода каретки набора символов (курсора этого мигающего) с Edit1 на Edit2?????? Помогите ПОЖАЛУЙСТО!!! Спасибо всем заранее.
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
if Edit1.Text = 'qwe' then // если нужны только цифры - то лучше MaskEdit посмотретьесли Edit1 содержит текст (или число) то
Вообще-то это называется перемещение фокуса ввода, например так:прцедура перевода каретки
Edit2.SetFocus


Слушай а почему у меня не получается кнопка деления на калькуляторе? Вроде всё правильно. Вот смотри:
procedure TForm1.BRClick(Sender: TObject);
var
Del:Integer;
D:integer;
D2:integer;
Edit2.Visible:=False;
Edit1.Visible:=True;
D:=StrToInt(Edit1.Text);
D2:=StrToInt(Edit2.Text);
Del:=D/D2;
if Label1.Left=104 then
Edit1.Text:=IntToStr(Del);
end;
А делф мне выдаёт что типа команда Del:=D/D2; неверная! Чё тут нетак и где ошибка???? Заранее спасибо!
procedure TForm1.BRClick(Sender: TObject);
var
Del:Integer;
D:integer;
D2:integer;
Edit2.Visible:=False;
Edit1.Visible:=True;
D:=StrToInt(Edit1.Text);
D2:=StrToInt(Edit2.Text);
Del:=D/D2;
if Label1.Left=104 then
Edit1.Text:=IntToStr(Del);
end;
А делф мне выдаёт что типа команда Del:=D/D2; неверная! Чё тут нетак и где ошибка???? Заранее спасибо!
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Del := D div D2; // целочисленное деление
Я конечно понимаю, что ты для простоты калькулятор целых чисел делаешь, но "как-то это неатмосферно" (с)
Я конечно понимаю, что ты для простоты калькулятор целых чисел делаешь, но "как-то это неатмосферно" (с)


Что еще за глупости? Храни значения аргументов в разных переменных. Проверь видимость переменных, похоже в процедуре нажатия кнопки их объявил еще(или только), глобальными сделай для модуля.. Только вот когда вводиш второе число он стерает первое не только с глаз но и с памяти и выполняет действие только со вторым. Т.е. складывает его само с собой.
Результат деления есть дробная переменная, не integer.
OTELLO, какой еще ApplicationEvents? Может еще OnIdle обработать штобы нажатие клавиши поймать??? У формы свойство KeyPreview, его переводишь в истину, а в событии формы OnKeyPress в зависимости от значения переменной Key: Char делаешь соответствующие действия.
The trurh is out there...