Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Кнопки |
Автор: Sasha1 5.5.2006, 17:51 |
Есть Баттон1 и есть Едит1. на кнопки надпись 1 , как сделать так чтобы при нажатие на кнопку , он вносил в Поле Едит1 единицу. а если нажать ещё раз то 11 .. 111 и т .д ( Как в Виндовском калькуляторе. ) и запоминал ето значение в какуето Даббле переменную ? ![]() |
Автор: Sasha1 5.5.2006, 18:18 |
![]() |
Автор: Nikol 6.5.2006, 02:14 |
Можно попробовать за эдитом закрепить стринговую переменную, и при каждом нажатии добавлять к строке единицу. А потом при необходимости преобразовать cтроку в число. Но это, по-моему, как-то по китайски. Зато просто. ![]() Добавлено @ 02:26 Вот еще вариант, вроде получше. За эдитом закрепи числовую переменную, например, Double, как ты хотел и инициализируй нулем. Тогда при нажатии кнопки новое число будет получаться путем умножения старого на 10 и прибавлением единицы. Примерно так: 0 1 = 0*10+1 11 = 1*10+1 111 = 11*10+1 |
Автор: Sasha1 6.5.2006, 11:38 |
а как ето бедт выгледить , в Коде ? .. ![]() |
Автор: LPNcom 6.5.2006, 14:18 |
Если камасутру не использовать, то можно так Кликаешь на своей кнопке два разА, и тебя пошлют в созданную функцию OnBnClickedButton1 Функция будет вызываться при нажфтиии на кнопку Там пишешь CString Str; p_Edit.GetWindowText(Str); Str+="1"; p_Edit.SetWindowText(Str); p_Edit это твой Едит |
Автор: Sasha1 6.5.2006, 15:01 |
а как сделать с позицианированием. т.е есть два Едита ... я хочу сначало так ввести число впервы и потом также во второй ? как на калькуляторе ? |
Автор: LPNcom 6.5.2006, 15:35 |
Нипонял маненько что требуется Запустил виндоусовский калькулятор - дак там одно поле. ![]() Заведи переменную для второго едита и фсе дела |
Автор: Sasha1 6.5.2006, 16:05 |
у меня 2 едита , я тыкаю на кнопочки и набирается число токо в первом естественно , а как сделать что бы я при тыкание на 1 поле он позицианировал и набирал по нажатию кнопочек только в нем , а когда я тыкаю во второе поле то он набирал только в нём ? ))) |
Автор: Nikol 7.5.2006, 02:07 | ||||
Я и имела ввиду то, что ты написал, но с учетом того, что калькулятор должен еще и считать, а для этого нужны числа. Поэтому лучше второй вариант. По-моему такой код выглядит вполне компактно, а число получается сразу:
А для кнопки с цифрой 2 будет тоже самое, только + 2 вместо + 1.
Ты имеешь ввиду тот калькулятор, который ты выкладывал в предыдущем топике? Тогда понятно, в чем проблема. В обработчике кнопки нужно динамически определять эдит, в котором стоит курсор и добавлять циферки в него, верно? Тогда зачем тебе эти кнопочки? Тыкай в эдит и вводи числа клавиатуры. Оставь только кнопки с операциями. |
Автор: Sasha1 7.5.2006, 13:05 |
ну так как то интереснее.. Я там делаю по сторкам потом перевожу в ИНТ .. всё считаеться.. а как сделать.Так что бы при позицианировании на первом едите была такая строчка . p_Edit1.GetWindowText(str1); а если на втором то p_Edit2.GetWindowText(str1); типа .. If(p_Edit1. Chenge ) { p_Edit1.GetWindowText(str1); } if (p_Edit2.Chenge) {p_Edit2.GetWindowText(str1); } это конечно не пашет ) но как идея? как ето в нормальный код реализовать ? |
Автор: Dray 7.5.2006, 15:20 |
Я бы сделал так: Завел бы переменную bool типа если true - 1й эдит, false - 2й, и в обработчике щелчка по эдиту менял эту переменную. Типа щелкнули по первому эдиту m_EditNum = true; - например. |
Автор: Sasha1 7.5.2006, 17:28 |
а можешь код привести . идеи как таковы , есть а как их в МВС реализовать аот в чём вопрос ? ) |
Автор: Dray 7.5.2006, 20:20 | ||||
Завиди переменную булевскую:
И лучше обрабатывать события не щелчка, а получения фокуса:
Прикрепил проджект |
Автор: Любитель 7.5.2006, 23:22 |
Лучше не булевскую, а указатель на CEdit. И обрабатываем потерю фокуса. |
Автор: Sasha1 8.5.2006, 13:04 |
Гипер Спасибо ,, Осталасть одна деталь для концовки проги .. Кака из CString в Double перевести ? Такая фенька не проходит (Наверное только для ИНт) double im=0.0; sscanf((LPCTSTR) str1,"%f",&im); |
Автор: Dray 8.5.2006, 16:26 | ||
|
Автор: Sasha1 9.5.2006, 10:58 |
) ![]() |