Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2014, 19:49   #1
egrozavr
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 17
По умолчанию Как зациклить программу?

Знакомьтесь, это мой криво написанный калькулятор. В ходе его тестирования начали возникать проблемы. При первом вводе всё идёт как надо (см. рис.1). После нажатия кнопки "clear" (button16), которая стирает все поля, цифры должны вводиться заново. Однако вместо этого, первая цифра вводится во второе поле, предназначенное для второй цифры (см.рис.2).
В связи с этим я думаю зациклить программу так, чтобы после нажатия "clear" она выполнялась по-новому.
Вопрос как?
P.S. Можно было бы поставить go to, но боюсь мне за это голову оторвут.

Код:

#pragma endregion
	private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
			 }
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
           if (!n) textBox1->Text += ((Button^)sender)->Text;
		   else textBox2->Text += ((Button^)sender)->Text;
		 } 
private: System::Void button11_Click(System::Object^  sender, System::EventArgs^  e) {
			 label1->Text= "+";
			 n = true;
		 }

private: System::Void button12_Click(System::Object^  sender, System::EventArgs^  e) {
			 label1->Text= "-";
			 n = true;
		 }

private: System::Void button13_Click(System::Object^  sender, System::EventArgs^  e) {
			 label1->Text= "*";
			 n = true;
		 }

private: System::Void button14_Click(System::Object^  sender, System::EventArgs^  e) {
			 label1->Text= "/";
			 n = true;
		 }
private: System::Void button16_Click(System::Object^  sender, System::EventArgs^  e) {
			 textBox1->Text = " ";
			 textBox2->Text = " ";
			 textBox3->Text = " ";
			 n = true;
		 }

private: System::Void button15_Click(System::Object^  sender, System::EventArgs^  e) {
			 double i;
			 switch(label1->Text[0])
			 {
			 case'+':
				 i = Convert::ToDouble(textBox1->Text) + Convert::ToDouble(textBox2->Text);
             break;

			 case'-':
				 i = Convert::ToDouble(textBox1->Text) - Convert::ToDouble(textBox2->Text);
             break;

			 case'*':
				 i = Convert::ToDouble(textBox1->Text) * Convert::ToDouble(textBox2->Text);
             break;

			 case'/':
				 i = Convert::ToDouble(textBox1->Text) / Convert::ToDouble(textBox2->Text);
             break;

			 default:
			     textBox3->Text= "error";
             break;
		     }
             textBox3->Text += i;
		 }
private: System::Void button17_Click(System::Object^  sender, System::EventArgs^  e) {
			 label1->Text= ".";
			 n = true;
		 }
};
}
Изображения
Тип файла: jpg 1.jpg (28.7 Кб, 127 просмотров)
Тип файла: jpg 2.jpg (29.8 Кб, 126 просмотров)
egrozavr вне форума Ответить с цитированием
Старый 26.03.2014, 20:21   #2
studen
Пользователь
 
Регистрация: 21.05.2012
Сообщений: 88
По умолчанию

Я полагаю, обработчик этой кнопки назван Button16_Click. Попробуйте удалить пробелы внутри кавычек, тем самым заменив строку с пробелом на пустую строку.
studen вне форума Ответить с цитированием
Старый 26.03.2014, 20:29   #3
egrozavr
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 17
По умолчанию

Не помогло, со второго раза всё равно вводит во второе поле
egrozavr вне форума Ответить с цитированием
Старый 26.03.2014, 21:33   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Проблема у Вас в том, что после ввода второй цифры, фокус остался на втором поле. Нужно после клира, передать фокус первому Эдиту.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.03.2014, 21:40   #5
egrozavr
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Проблема у Вас в том, что после ввода второй цифры, фокус остался на втором поле. Нужно после клира, передать фокус первому Эдиту.
Я собственно это и имел ввиду, просто не смог нормально сформулировать.
Проблема в том, как этот фокус передать?

Прочитал, что можно использовать функцию SetFocus, но как именно не понял

Последний раз редактировалось Stilet; 26.03.2014 в 22:50.
egrozavr вне форума Ответить с цитированием
Старый 26.03.2014, 21:52   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Примерно так: Edit1->Focused();
или так: Edit1->SetFocus();
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.03.2014, 22:02   #7
egrozavr
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 17
По умолчанию

Сделал так, но теперь пишет ошибку, что SetFocus не является членом "System::Windows::Forms::TextBo x"
Код:
private: System::Void button16_Click(System::Object^  sender, System::EventArgs^  e) {
			 textBox1->Text = "";
			 textBox2->Text = "";
			 textBox3->Text = "";
			 n = true;
			 textBox1->SetFocus();
		 }

Последний раз редактировалось egrozavr; 26.03.2014 в 22:03. Причина: Но я чувствую, что победа где-то близка
egrozavr вне форума Ответить с цитированием
Старый 26.03.2014, 22:13   #9
egrozavr
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 17
По умолчанию

"В настоящее время язык с++ не поддерживается либо пример кода отсутствует."

Сумел таки передвинуть курсор таким образом textBox1->Focus();
Но вводится всё равно во второе поле

Последний раз редактировалось Stilet; 26.03.2014 в 22:51.
egrozavr вне форума Ответить с цитированием
Старый 26.03.2014, 22:28   #10
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
"Сумел таки передвинуть курсор таким образом textBox1->Focus();(
MSDN, тоже люди пишут.
У TextBox есть ещё свойство Focused. Может быть его попробовать?
Streletz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как зациклить? novuiPolzovatel Помощь студентам 6 23.04.2012 19:06
pascal: как зациклить? mad_ded Помощь студентам 5 05.01.2012 17:39
Зациклить прогу - как? boris-blade Общие вопросы .NET 1 25.03.2010 19:32
Как зациклить макрос? kapitel_bc@ukr.net Microsoft Office Excel 7 13.02.2010 23:48
Как правильно зациклить?) Roman_ PHP 3 01.05.2009 15:56