Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.03.2013, 20:35
OmG killer OmG killer вне форума
Прохожий
 
Регистрация: 13.03.2013
Сообщения: 23
Репутация: 10
Восклицание Проблема с кнопками

Нужно сделать кнопки (%,x^y).
Послезавтра у меня НОУ. Нужно до делать калькулятор. Помогите пожалуйста.
Вот скрин и исходник:
Изображения
Тип файла: png Безымянный.png (23.7 Кбайт, 8 просмотров)
Вложения
Тип файла: rar calc5 beta.rar (948.8 Кбайт, 4 просмотров)
Ответить с цитированием
  #2  
Старый 13.03.2013, 21:20
Аватар для BBBCat
BBBCat BBBCat вне форума
Новичок
 
Регистрация: 10.03.2013
Сообщения: 73
Репутация: 10
По умолчанию

Скажешь, что такое НОУ, и кто писал calc5 beta.rar - сделаю
Кстати:
1. Кто такой sSkinManager я не знаю, поэтому выключил
2. Поменяй надпись х/1 на 1/х
3. Кнопка Int считает факториал, а он уже есть ниже.
4. Все кнопки TBitBtn, но ни у одной нет Glyph-а. В чём смысл?

Последний раз редактировалось BBBCat, 13.03.2013 в 21:52.
Ответить с цитированием
Этот пользователь сказал Спасибо BBBCat за это полезное сообщение:
OmG killer (14.03.2013)
  #3  
Старый 13.03.2013, 22:32
OmG killer OmG killer вне форума
Прохожий
 
Регистрация: 13.03.2013
Сообщения: 23
Репутация: 10
Радость

1. НОУ- Научное общество учащихся.
2.Делал как не странно я на основе других.
3.Даёт красоту оформления формы и клавиш.
4.Чтобы когда проводиш мышкой текст на клавише загоралась цветом.
5.Большое спасибо за ошибки!!!
Я только не понял " Кнопка Int считает факториал, а он уже есть ниже. "
код я поправил.
а для чего она вообше нужна)))? она Вроде как и ничего и не далет.
Ответить с цитированием
  #4  
Старый 13.03.2013, 22:41
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от OmG killer
Я только не понял " Кнопка Int считает факториал, а он уже есть ниже. "
код я поправил.
а для чего она вообше нужна)))? она Вроде как и ничего и не далет.
Ну щашибись приплыли. Как можно что-то делать и не понимать что?

Int - выделение целой части числа.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 13.03.2013, 22:45
OmG killer OmG killer вне форума
Прохожий
 
Регистрация: 13.03.2013
Сообщения: 23
Репутация: 10
По умолчанию

Согласен, поменяю на Tаn не проблема.
Ну а что на счет этих кнопок?
Ответить с цитированием
  #6  
Старый 13.03.2013, 22:49
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Не проходили проценты в школе что ли?

Про возведение в степень - в справке можно найти, там одна ф-я.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #7  
Старый 13.03.2013, 23:00
OmG killer OmG killer вне форума
Прохожий
 
Регистрация: 13.03.2013
Сообщения: 23
Репутация: 10
По умолчанию

Со степенью разобрался)))
Но с процентами никак не выходит там ведь надо:
Вычисление процента от числа: 500 [ x ] 25 [ % ]. Результат - 125
Прибавление процента к числу: 500 [ + ] 25 [ % ]. Результат - 625
Вычитание процента из числа: 500 [ - ] 25 [ % ]. Результат - 375
я незнаю как написать не в самой кнопке не в равно.
Ответить с цитированием
  #8  
Старый 13.03.2013, 23:02
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

500*0.01 = 1%
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #9  
Старый 14.03.2013, 04:34
Аватар для BBBCat
BBBCat BBBCat вне форума
Новичок
 
Регистрация: 10.03.2013
Сообщения: 73
Репутация: 10
По умолчанию

Вот как и обещал:
Кнопка '=':
Код:
procedure TForm1.BitBtn18Click(Sender: TObject);
begin
if edit1.Text<>'' then b:=strtofloat (edit1.Text);
case c of
 '+':edit1.Text:=floattostr(a+b);
 '-':edit1.Text:=floattostr(a-b);
 '*':edit1.Text:=floattostr(a*b);
 '/':begin
 if b<>0 then
 edit1.Text:=floattostr(a/b) else
 form3.Show;
    end;
 '^': edit1.Text:=floattostr(Power(a,b)); // это я добавил
 end;
end;
Кнопка '%':
Код:
procedure TForm1.BitBtn34Click(Sender: TObject);
begin
if edit1.Text<>'' then b:=strtofloat (edit1.Text);
case c of
 '+':edit1.Text:=floattostr(a*(1+b/100));
 '-':edit1.Text:=floattostr(a*(1-b/100));
 '*':edit1.Text:=floattostr(a*b/100);
 end; // case c of
end; // procedure TForm1.BitBtn34Click(Sender: TObject)
Кнопка 'x^y':
Код:
procedure TForm1.BitBtn35Click(Sender: TObject);
begin
if edit1.Text<>'' then a:=strtofloat(edit1.Text);
c:='^';
edit1.Clear;
end; // procedure TForm1.BitBtn35Click(Sender: TObject)
Кнопка '%' работает как ты и написал, т.е. через '+', '-', '*'. Кнопка 'x^y' - набираешь число x, потом '^', потом число y, потом '='. Метод для кнопки '=' лучше не копировать, а добавить из него только одну строчку, которую я обозначил. Для работы функции 'Power(a,b)' в секцию 'uses' допиши 'Math'. Сами кнопки на форму уж прикрутишь как-нибудь И неплохо бы сделать в программе проверку на Overflow/Underflow. Больше ни в чём не разбирался, так что если тебе никто тут не указал на ошибки, это ещё не значит, что их нет. Кстати загляни в модуль 'Math', там много полезного для калькулятора.

И ещё: для чего в функции 'BitBtn**MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer)' такая конструкция 'if bitbtn20.Font.Color<>$004080FF then bitbtn**.Font.Color:=$004080FF' если ты уж по-любому решил присвоить цвету значение '$004080FF'? Лишний 'if' - дополнительные ресурсы, в данном случае неоправданные. К тому же не надо плодить функции для каждой кнопки. Одна из прелестей подпрограмм заключается в том, что повторяющийся код можно написать один раз, а потом вызывать его из разных мест. Из вышесказанного следует, что событию 'OnMouseMove' КАЖДОЙ кнопки нужно указать только ОДИН метод(см. ниже), а остальные поудалять. Самому же легче будет по программе лазить.
Код:
procedure TForm1.BitBtnMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  TBitBtn(Sender).Font.Color:=$004080FF;
end;
И я так и не понял, почему используется TBitBtn, а не TButton? В данной реализации они ничем не отличались бы, а вот вредный препод может докопаться. Хотя сейчас уже поздняк метаться.

Последний раз редактировалось BBBCat, 14.03.2013 в 05:21.
Ответить с цитированием
Этот пользователь сказал Спасибо BBBCat за это полезное сообщение:
OmG killer (14.03.2013)
  #10  
Старый 14.03.2013, 08:02
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Не е-е Му-му, научитесь уже писать нормальные калькуляторы, которые выражение из строки могут считать. В разделе исходников аж два калькулятора есть нормальных.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #11  
Старый 14.03.2013, 08:12
Аватар для BBBCat
BBBCat BBBCat вне форума
Новичок
 
Регистрация: 10.03.2013
Сообщения: 73
Репутация: 10
По умолчанию

Ну воттт!!! Человек сам хотел написать, а теперь ему соблазн чужим воспользоваться
Ответить с цитированием
  #12  
Старый 14.03.2013, 08:18
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Судя по тому как он с этими двумя кнопками не разобрался, там он вообще плюхнется.

Просто из года в год делают этот несчастный "косплей" на виндовый калькулятор.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #13  
Старый 14.03.2013, 08:46
Аватар для BBBCat
BBBCat BBBCat вне форума
Новичок
 
Регистрация: 10.03.2013
Сообщения: 73
Репутация: 10
По умолчанию

Вообще-то согласен, но вот лет 10 назад, когда я впервые уселся работать под Windows, на той тачке уже стояла Delphi. Я такого ещё не юзал, и первое, с чего начал, даже не заглянув в хелп и прочую документацию, это писать калькулятор Правда через пару дней понял, что изобретать велосипед нет смысла. Тем более, что велосипед всегда под рукой в пункте меню "Стандартные" Зато разобрался что такое проперти в Object Inspector. Я к тому, что "OmG killer" тож чёй-та нужное узнает.
Ответить с цитированием
Этот пользователь сказал Спасибо BBBCat за это полезное сообщение:
OmG killer (14.03.2013)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:32.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025