- •Часто задаваемые вопросы при выполнении курсового проекта (Бизнес-информатика, 1 курс) Оглавление
- •Как создать проектWindows-приложения?
- •Как изменить заголовок окна?
- •Как изменить цвет фона у окна?
- •Как назначить какие-то действия на щелчок мыши?
- •Как понять, каковы были координаты мыши в момент щелчка по ее кнопке?
- •Как понять, какая клавиша на клавиатуре была нажата?
- •Что такое перо (Pen)?
- •Что такое кисть (Brush)?
- •Как сделать нестандартную закраску фигуры (картинкой, переливающимся цветом и пр.)?
- •Как задать цвет?
- •Как изменить цвет фона окна во время работы программы?
- •Как в окне нарисовать прямоугольник?
- •Как в окне нарисовать закрашенный прямоугольник?
- •Какие фигуры, кроме прямоугольника, можно рисовать?
- •Как нарисовать линию?
- •Как нарисовать фигуру, полученную в виде совместного рисования нескольких фигур, например, прямоугольника и круга?
- •Как вывести в окно текст?
- •Как задать шрифт текста?
- •Как вывести текст в рамке?
- •Как загрузить изображение из файла?
- •Как вывести изображение в окно?
- •Как принудительно вызвать событие Paint, т.Е. Перерисовать окно?
- •Где объявлять переменные, значения которых нужны для всех функций окна?
- •Как сделать анимацию?
- •Как добавить в окно таймер?
- •Что такое элемент управления?
- •Как добавить в окно текстовое поле или кнопку?
- •Как получить текст,введенныйв текстовомполе?
- •Как понять, что была нажата кнопка и выполнить какие-то действия?
- •Что такое меню?
- •Как добавить в окно меню?
- •Как назначить действия, которые должны быть выполнены при выборе пункта меню?
- •Что такое диалог?
- •Как выбрать цвет с помощью диалога?
- •Как выбрать файл с помощью диалога?
- •Как загрузить изображение из файла, чтобы фон изображения считался прозрачным?
- •Как загрузить звуковой файл?
Как получить текст,введенныйв текстовомполе?
В зависимости от типа элемента управления свойства, с помощью которых можно получить информацию из элемента, будут различны. Самая простая ситуация с текстовым полем – свойство для получения того, что пользователь ввел в текстовое поле называется Text. Так что для получения (также как и для установки значения текста в поле) требуется обратиться по имени к текстовому полю и его свойству Text (например, textBox1->Text, если текстовое поле названо системой по умолчанию, или MyTextBox ->Text, если текстовое поле было названо MyTextBox).
Как понять, что была нажата кнопка и выполнить какие-то действия?
Нажатие кнопки является основным ее событием. Для его обработки требуется назначить функцию-обработчик события Click в окне свойств кнопки:
Рис 43. Окно свойств для кнопки. Создание обработчика нажатия кнопки.
В примере игры «Угадай число» две кнопки – «Загадать» и «Угадать». При нажатии на кнопку «Загадать» система должна сгенерировать число и запомнить его в переменных формы.
public ref class Form1 : public System::Windows::Forms::Form
{
// загаданное число
int x;
//количество попыток
int count;
. . .
}
Обработчик нажатия кнопки «Загадать» может быть таким:
// подключаем необходимые библиотеки для генерации случайных чисел
#include<cstdlib>
#include <ctime>
. . .
// Обработчик нажатия кнопки «Загадать»
private: System::Void Generate_Click(System::Object^ sender,
System::EventArgs^ e) {
srand(time(0));// без этого числа будут одинаковые
x = rand()%100; }
В обработчике кнопки «Угадать» требуется прочитать то, что пользователь ввел в текстовое поле и сравнить введенное число с загаданным, увеличить количество попыток угадывания и сообщить результат попытки (больше, меньше, угадано):
private: System::Void Try_Click(System::Object^ sender, System::EventArgs^ e) {
count++; // сделана еще одна попытка угадать число
label3->Text = "Количество попыток - " + count;
// считываем число из текстового поля и преобразуем его к типу Int32 // создаем интерфейс IFormatProvider для преобразования
IFormatProvider^ provider;
int y = Convert::ToInt32(textBox1->Text, provider);
// число угадано
if (y == x)
label2->Text = "Угадали";
// число меньше загаданного
if (y < x)
label2->Text = "Меньше";
// число больше загаданного
if (y > x)
label2->Text = "Больше";
}
Рис 44. Окно игры «Угадай число».
Программный код для реализации данного окна таков:
public ref class Form1 : public System::Windows::Forms::Form
{
// загаданное число
int x;
//количество попыток
int count;
private: System::Windows::Forms::Button^ Generate;
private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::Button^ Try;
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::Timer^ MyTimer;
public: Form1(void) {
InitializeComponent();
// начальные значения счетчика попыток
count=0;
}
protected:
~Form1()
{
if (components)
delete components;
}
private: System::ComponentModel::IContainer^ components;
protected:
private:
#pragma region Windows Form Designer generated code
void InitializeComponen t(void)
{
// код функции, сгенерированный системой
. . .
}
#pragma endregion
private: System::Void Try_Click(System::Object^ sender, System::EventArgs^ e) {
count++;
label3->Text = "Количество попыток - " + count;
// считываем число из текстового поля и преобразуем его к типу Int32
IFormatProvider^ provider;
int y = Convert::ToInt32(textBox1->Text, provider);
// число угадано
if (y == x)
label2->Text = "Угадали";
// число меньше загаданного
if (y < x)
label2->Text = "Меньше";
// число больше загаданного
if (y > x)
label2->Text = "Больше";
}
private: System::Void Generate_Click(System::Object^ sender,
System::EventArgs^ e) {
count=0;
srand(time(0));// без этого числа будут одинаковые
x = rand()%100;
}
};