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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2013, 12:22   #1
arh42kem
Пользователь
 
Регистрация: 20.03.2013
Сообщений: 20
По умолчанию как сделать на кнопку расчёт.Вычисления

Вобщем.Нужно сделать на кнопку "Расчёт"
вычисления,чтобы с 3 форм считывалось.Делал в консольном варианте,теперь хочу в интерфейсном..Куда объявлять переменные в GUI

Консольный Вариант:
PHP код:
#include <StdAfx.h>
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL"Rus");
int a c;
cout << " Введите ваш расход на 100 км: " << endl;
cin >> a;
cout << "Введите вашу цену на топливо:" << endl;
cin >> b;
cout << "Введите сколько вы хотите проехать км:" << endl;
cin >> c;
cout << " Вам потребуется:" << << "Рублей" << endl;
system("pause");


Последний раз редактировалось arh42kem; 20.03.2013 в 12:43.
arh42kem вне форума Ответить с цитированием
Старый 20.03.2013, 12:25   #2
arh42kem
Пользователь
 
Регистрация: 20.03.2013
Сообщений: 20
По умолчанию Интерфейсный

PHP код:
#pragma once
namespace My1234

{

    
using namespace System;
    
using namespace System::ComponentModel;
    
using namespace System::Collections;
    
using namespace System::Windows::Forms;
    
using namespace System::Data;
    
using namespace System::Drawing;
}

    
/// <summary>
    /// Сводка для Form1
    /// </summary>
    
public ref class Form1 : public System::Windows::Forms::Form
    
{
    public:
        
Form1(void)
        {
            
InitializeComponent();
            
//
            //TODO: добавьте код конструктора
            //
        
}

    protected:
        
/// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        
~Form1()
        {
            if (
components)
            {
                
delete components;
            }
        }
    private: 
System::Windows::Forms::Button^  button1;
    private: 
System::Windows::Forms::TextBox^  textBox1;
    private: 
System::Windows::Forms::TextBox^  textBox2;
    private: 
System::Windows::Forms::TextBox^  textBox3;
    private: 
System::Windows::Forms::ProgressBar^  progressBar1;
    private: 
System::Windows::Forms::GroupBox^  groupBox1;
    private: 
System::Windows::Forms::GroupBox^  groupBox2;
    private: 
System::Windows::Forms::GroupBox^  groupBox3;
    protected: 

    private:
        
/// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        
System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        
void InitializeComponent(void)
        {
            
this->button1 = (gcnew System::Windows::Forms::Button());
            
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
            
this->textBox2 = (gcnew System::Windows::Forms::TextBox());
            
this->textBox3 = (gcnew System::Windows::Forms::TextBox());
            
this->progressBar1 = (gcnew System::Windows::Forms::ProgressBar());
            
this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());
            
this->groupBox2 = (gcnew System::Windows::Forms::GroupBox());
            
this->groupBox3 = (gcnew System::Windows::Forms::GroupBox());
            
this->SuspendLayout();
            
// 
            // button1
            // 
            
this->button1->Location System::Drawing::Point(92227);
            
this->button1->Name L"button1";
            
this->button1->Size System::Drawing::Size(7523);
            
this->button1->TabIndex 0;
            
this->button1->Text L"Расчёт";
            
this->button1->UseVisualStyleBackColor true;
            
// 
            // textBox1
            // 
            
this->textBox1->Location System::Drawing::Point(15612);
            
this->textBox1->Name L"textBox1";
            
this->textBox1->Size System::Drawing::Size(10020);
            
this->textBox1->TabIndex 1;
            
// 
            // textBox2
            // 
            
this->textBox2->Location System::Drawing::Point(15657);
            
this->textBox2->Name L"textBox2";
            
this->textBox2->Size System::Drawing::Size(10020);
            
this->textBox2->TabIndex 2;
            
// 
            // textBox3
            // 
            
this->textBox3->Location System::Drawing::Point(156105);
            
this->textBox3->Name L"textBox3";
            
this->textBox3->Size System::Drawing::Size(10020);
            
this->textBox3->TabIndex 3;
            
// 
            // progressBar1
            // 
            
this->progressBar1->Location System::Drawing::Point(12178);
            
this->progressBar1->Name L"progressBar1";
            
this->progressBar1->Size System::Drawing::Size(23523);
            
this->progressBar1->TabIndex 4;
            
// 
            // groupBox1
            // 
            
this->groupBox1->Location System::Drawing::Point(122);
            
this->groupBox1->Name L"groupBox1";
            
this->groupBox1->Size System::Drawing::Size(13030);
            
this->groupBox1->TabIndex 5;
            
this->groupBox1->TabStop false;
            
this->groupBox1->Text L"Введите ваш расход на 100 км";
            
// 
            // groupBox2
            // 
            
this->groupBox2->Location System::Drawing::Point(1247);
            
this->groupBox2->Name L"Введите вашу цену на бензин";
            
this->groupBox2->Size System::Drawing::Size(13030);
            
this->groupBox2->TabIndex 6;
            
this->groupBox2->TabStop false;
            
this->groupBox2->Text L"Введите вашу цену на бензин";
            
// 
arh42kem вне форума Ответить с цитированием
Старый 20.03.2013, 12:25   #3
arh42kem
Пользователь
 
Регистрация: 20.03.2013
Сообщений: 20
По умолчанию Продолжение.Больше 5 тыс.Символов..

PHP код:
       // groupBox3
            // 
            
this->groupBox3->Location System::Drawing::Point(13105);
            
this->groupBox3->Name L"Сколько вы хотите проехать км";
            
this->groupBox3->Size System::Drawing::Size(12930);
            
this->groupBox3->TabIndex 7;
            
this->groupBox3->TabStop false;
            
this->groupBox3->Text L"Сколько вы хотите проехать км";
            
// 
            // Form1
            // 
            
this->AutoScaleDimensions System::Drawing::SizeF(613);
            
this->AutoScaleMode System::Windows::Forms::AutoScaleMode::Font;
            
this->ClientSize System::Drawing::Size(259259);
            
this->Controls->Add(this->groupBox3);
            
this->Controls->Add(this->groupBox2);
            
this->Controls->Add(this->groupBox1);
            
this->Controls->Add(this->progressBar1);
            
this->Controls->Add(this->textBox3);
            
this->Controls->Add(this->textBox2);
            
this->Controls->Add(this->textBox1);
            
this->Controls->Add(this->button1);
            
this->Name L"Form1";
            
this->Text L"Расход v0.1";
            
this->ResumeLayout(false);
            
this->PerformLayout();

        }
#pragma endregion
    
}; 
arh42kem вне форума Ответить с цитированием
Старый 20.03.2013, 14:09   #4
arh42kem
Пользователь
 
Регистрация: 20.03.2013
Сообщений: 20
По умолчанию

up.Уже что только не думал.Объявлял переменные,первая форма x
2-y
3-z
В кнопке расчёт пытался произвести,но не получается.
arh42kem вне форума Ответить с цитированием
Старый 20.03.2013, 17:03   #5
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

Ооо, а я недавно с таким же вопросом сталкивалась))

В общем, смотрите:

http://s002.radikal.ru/i198/1303/30/86d559b0e0f1.jpg

3 текстбокса, 5 лейблов, 1 кнопка.
1,2,3 - текстбоксы, в которые вы введёте числа,
1 лейбл, чтобы вывести результат,
1 кнопка, чтобы сделать "собьытие".

Вам нужно: 2 клика в конструкторе по кнопке (buttun расчёт), visual автоматом создаёт событие клик и дальше примерно так пишете:


Код:
#pragma endregion
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
			 {
				int a=0,b=0; //объявление переменных 
				double c=0.0,d=0.0;
				 a=System::Convert::ToInt32(textBox1->Text); //конвертирование "строки" из тексбокса в "цифры" 
				 b=System::Convert::ToInt32(textBox2->Text);
				 c=System::Convert::ToInt32(textBox3->Text); 
				
				 d=c/a*b; //ваше выражение
			
				 
				label1->Text =d.ToString("f"); //вывод
			 }
целый код программы выглядит так:



Если вы хотите сделать "защиту от дураков", то проще простого:
допустим, кнопка "рассчитать" не работает до тех пор, пока все 3 текстбокса не будут заполнены.

Делается это так:

В самом начале, в форме, надо прописать, что кнопка неактивна:
Код:
public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: добавьте код конструктора
			//

			button1 ->Enabled=false; //неактивность кнопки
		}
Как только придадите значение true, то кнопка будет активна.
Поскольку, активность нужна при заполнении 3 текстбоксов, то двойной клик в дизайнере по каждому из текстбоксов и пишем в кадом соответствующее:

Код:
 if ((textBox1->Text->Length!=0)&&(textBox2->Text->Length!=0)&&(textBox3->Text->Length!=0))
			 {
				 button1 ->Enabled=true;
			 }
			 else
			 {
				 button1 ->Enabled=false;
			 }
Вооот, тогда кнопка будет активна.

Можно ещё "защиту" от неверного формата или ограничения по цифрам (размеру). Ну, это если надо будет, могу написать)))

Про размещение переменных:
Если переменная глобальная, то я её размещала вот здесь:
Код:
#pragma once
#include какой-нибудь
int f,r,t,g,y=234, mass[34][45];
char ee,tt;
double qwe=123.0;

namespace Дляarh42kem {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;
если локальная, то как в примере - прям в событии можно объявить.

Результат выполнения программы примерно такой:

http://s020.radikal.ru/i712/1303/19/2bfcc59a26ad.jpg

http://s019.radikal.ru/i600/1303/58/e280ebeab5c6.jpg

http://s020.radikal.ru/i700/1303/ef/c3d6362e9b7c.jpg


Целый код:
Код:
#pragma once

namespace Дляarh42kem {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary>
	/// Сводка для Form1
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: добавьте код конструктора
			//

			button1 ->Enabled=false;
		}

	/*автоматическое создание всего нужного*/
#pragma endregion
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
			 {
				int a=0,b=0;
				double c=0.0,d=0.0;
				 a=System::Convert::ToInt32(textBox1->Text);
				 b=System::Convert::ToInt32(textBox2->Text);
				 c=System::Convert::ToInt32(textBox3->Text);
				
				 d=c/a*b;
			
				 //вывод
				label1->Text =d.ToString("f");
			 }
private: System::Void textBox1_TextChanged(System::Object^  sender, System::EventArgs^  e)
		 {
			  if ((textBox1->Text->Length!=0)&&(textBox2->Text->Length!=0)&&(textBox3->Text->Length!=0))
			 {
				 button1 ->Enabled=true;
			 }
			 else
			 {
				 button1 ->Enabled=false;
			 }
		 }
private: System::Void textBox2_TextChanged(System::Object^  sender, System::EventArgs^  e)
		 {
			  if ((textBox1->Text->Length!=0)&&(textBox2->Text->Length!=0)&&(textBox3->Text->Length!=0))
			 {
				 button1 ->Enabled=true;
			 }
			 else
			 {
				 button1 ->Enabled=false;
			 }
		 }
private: System::Void textBox3_TextChanged(System::Object^  sender, System::EventArgs^  e) 
		 {
			  if ((textBox1->Text->Length!=0)&&(textBox2->Text->Length!=0)&&(textBox3->Text->Length!=0))
			 {
				 button1 ->Enabled=true;
			 }
			 else
			 {
				 button1 ->Enabled=false;
			 }
		 }
};
}

Последний раз редактировалось Fanyuus; 20.03.2013 в 17:25.
Fanyuus вне форума Ответить с цитированием
Старый 20.03.2013, 18:43   #6
arh42kem
Пользователь
 
Регистрация: 20.03.2013
Сообщений: 20
По умолчанию Cпасибо

Спасибо огромное.Буду пробовать.Если что,отпишусь.
arh42kem вне форума Ответить с цитированием
Старый 20.03.2013, 18:50   #7
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

arh42kem, о, да не за что))
Конечно, пишите))

Мне ещё интересно, зачем вам прогрессовая строка.
Это типа "сколько осталось"? хотя приложение для компа - тогда просто "случайное"))
Fanyuus вне форума Ответить с цитированием
Старый 20.03.2013, 19:10   #8
arh42kem
Пользователь
 
Регистрация: 20.03.2013
Сообщений: 20
По умолчанию

Ошибка 2 error C2065: textBox1: необъявленный идентификатор c:\my documents\visual studio 2010\projects\777\777\Form1.h 187
Ошибка 1 error C2059: синтаксическая ошибка: private c:\my documents\visual studio 2010\projects\777\777\Form1.h 183
Ошибка 3 error C2227: выражение слева от "->Text" должно указывать на тип класса, структуры или объединения либо на универсальный тип c:\my documents\visual studio 2010\projects\777\777\Form1.h 187
Ошибка 4 error C2065: textBox2: необъявленный идентификатор c:\my documents\visual studio 2010\projects\777\777\Form1.h 188 \


и еще вопрос: почему мы объявляем переменные со значением 0?
извините конечно,за примитивные вопросы.Учусь еще)

Последний раз редактировалось arh42kem; 20.03.2013 в 19:17.
arh42kem вне форума Ответить с цитированием
Старый 20.03.2013, 19:46   #9
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

arh42kem, если что, то я делала проект в C++, а вы там же?

кстати, насчёт ошибок: зайдите в вижуал студио, нажмите "сервис", внизу будут "параметры", там найдите "текстовый редактор", откройте спсок и выберете "С\С++", откройте "общее", внизу будет "номера сток", поставьте там галку.
Если у вас на С++, то выбере нужный язык и далее по списку.
Приятная такая мелочь))))

когда я писала "автоматическое создание всего", это значило, что вы перетаскиваете на форму компоненты, и вижуал сам создаёт всё, что нужно для радости. Вообще, там примерно так:

Код:
protected:
	private: System::Windows::Forms::Button^  button1;
	protected: 
	private: System::Windows::Forms::Label^  label1;
	private: System::Windows::Forms::TextBox^  textBox1;
	private: System::Windows::Forms::TextBox^  textBox2;
........................

	private:
		/// <summary>
		/// Требуется переменная конструктора.
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		/// <summary>
		/// Обязательный метод для поддержки конструктора - не изменяйте
		/// содержимое данного метода при помощи редактора кода.
		/// </summary>
		void InitializeComponent(void)
		{
			this->button1 = (gcnew System::Windows::Forms::Button());
			this->label1 = (gcnew System::Windows::Forms::Label());
			this->textBox1 = (gcnew System::Windows::Forms::TextBox());
			this->textBox2 = (gcnew System::Windows::Forms::TextBox());
			this->textBox3 = (gcnew System::Windows::Forms::TextBox());
			this->label2 = (gcnew System::Windows::Forms::Label());
			.....................
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(27, 222);
			this->button1->Name = L"button1";
			this->button1->Size = System::Drawing::Size(75, 23);
			this->button1->TabIndex = 0;
			this->button1->Text = L"button1";
			this->button1->UseVisualStyleBackColor = true;
			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
			// 
			// label1
			// 
			this->label1->AutoSize = true;
			this->label1->Location = System::Drawing::Point(153, 222);
			this->label1->Name = L"label1";
			this->label1->Size = System::Drawing::Size(0, 13);
			this->label1->TabIndex = 1;
			// 
			// textBox1
			// 
			this->textBox1->Location = System::Drawing::Point(40, 29);
			this->textBox1->Name = L"textBox1";
			this->textBox1->Size = System::Drawing::Size(100, 20);
			this->textBox1->TabIndex = 2;
			this->textBox1->TextChanged += gcnew System::EventHandler(this, &Form1::textBox1_TextChanged);
			// 
			// textBox2
			// 
			this->textBox2->Location = System::Drawing::Point(40, 67);
			this->textBox2->Name = L"textBox2";
			this->textBox2->Size = System::Drawing::Size(100, 20);
			this->textBox2->TabIndex = 3;
			this->textBox2->TextChanged += gcnew System::EventHandler(this, &Form1::textBox2_TextChanged);
			// .................................................
но вставлять в одно сообщение длинный-длинный код не получилось, поэтому, я "сократила ту часть".

Возможно (!), у вас не textBox1, а, допустим, textBox123, может быть такое?))

Цитата:
Ошибка 1 error C2059: синтаксическая ошибка: private c:\my documents\visual studio 2010\projects\777\777\Form1.h 183
он вам строчки пишет - находите строчку, смотрите на неё, гипнотизируете, - бац! - решение проблемы приходит)))) Так примерно делаю я)))))
А, вообще, пришлите куски программы, где он пишет "ошибку", посмотрим, обдумаем чего там не верно))

Если вы мне укажете ваш e-mail (можно в ЛС), я вам вышлю файл своей программы и всё, что у меня там было. Все компоненты, в смысле)))

А переменные со значением 0 объявляем просто так. Можно и не объявлять, если тут использовать "защиту от дураков", т.е., пока все текстбоксы не будут заполнены.

*можно на "ты"?

Вот смотри,

Код:
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
			 {
				int a=0,b=0; //объявление переменных 
				double c=0.0,d=0.0;
				 a=System::Convert::ToInt32(textBox1->Text); //конвертирование "строки" из тексбокса в "цифры" 
				 b=System::Convert::ToInt32(textBox2->Text);
				 c=System::Convert::ToInt32(textBox3->Text); 
				
				 d=c/a*b; //ваше выражение
			
				 
				label1->Text =d.ToString("f"); //вывод
			 }
у нас тут переменным идёт присвоение значения. если честно, я не знаю что может быть, если вдруг в текстбоксе нет значения, а мы присваиваем ему что-то. Возможно "0", а может быть "-843647364" (мусорное значение. очень страшные цифры - мусорное значение)
а, вспомнила, у меня он тормозил, не считал))))

В общем, это своеобразная "перестраховка", хотя я тут прикинула, что если бы не "защита от дурака", она бы тут не спасла)) присвоение то после идёт))

Не, вопросы так-то норм, я тоже учусь))
Fanyuus вне форума Ответить с цитированием
Старый 20.03.2013, 20:01   #10
arh42kem
Пользователь
 
Регистрация: 20.03.2013
Сообщений: 20
По умолчанию =)

Да,конечно можно на "ты".
Нет,я хочу сам дойти до того,как это всё сделать)
Если сам сделаю- то запомню/пойму,а так тупо скопирую.Вот и шевелю мозгом.
arh42kem вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать кнопку невидимой? Lapo4ka C# (си шарп) 2 05.05.2012 21:23
Как сделать кнопку любой формы -=Prorok=- C# (си шарп) 4 24.08.2011 14:53
как сделать кнопку? joci Microsoft Office Excel 3 23.04.2008 20:50
Как сделать кнопку в стиле XP Иллидан Общие вопросы Delphi 6 20.01.2008 12:42
Пожалуйста, подскажите можно ли и как сделать в Excel расчёт процентов? magi Microsoft Office Excel 8 28.09.2007 22:48