
- •2 Частина
- •3 Частина
- •1 Частина
- •1 Частина
- •2 Частина
- •1 Частина
- •2 Частина
- •3 Частина
- •4 Частина
- •1 Частина
- •2 Частина
- •3 Частина
- •4 Частина
- •1 Частина
- •2 Частина
- •3 Частина
- •4 Частина
- •Приложение
- •Агент сервера sql Server Compact Edition
- •Часть 1
- •Часть 2
- •Часть 2
- •Часть 3
- •1 Частина
- •2 Частина
- •3 Частина
- •4 Частина
Практична робота №4
Тема: Ініціювання та обробка подій миші та клавіатури
Мета: Навчитися ініціювати та обробляти події миші та клавіатури
Хід роботи:
1 частина
Створимо новий проект
Розташуємо на формі кнопку
Створимо нову форму
та розташуємо на ній наступні едементи
Для завантаження форми створимо обробник події
Form_opm::Text = "Мониторинг движения мыши";
Для listBox1 створимо наступні обробники подій
private: System::Void listBox1_MouseEnter(System::Object^ sender,
System::EventArgs^ e)
{
// Добавляем в список элементов новую запись
listBox1->Items->Add("Курсор мыши вошел в область ListBox");
}
// Процедура обработки события, когда указатель мыши покидает
// элемент управления ListBox:
private: System::Void listBox1_MouseLeave(System::Object^ sender,
System::EventArgs^ e)
{
listBox1->Items->Add("Курсор мыши вышел из области ListBox");
}
// Процедура обработки события, происходящего при перемещении
// указателя мыши по элементу управления ListBox:
private: System::Void listBox1_MouseMove(System::Object^ sender,
System::Windows::Forms::MouseEventArgs^ e)
{
// Свойство объекта Control MousePosition возвращает точку,
// соответствующую текущему положению мыши относительно
// левого верхнего угла монитора
textBox1->Text = String::Format("X = {0} или {1}",
this->MousePosition.X, e->X);
textBox2->Text = String::Format("Y = {0} или {1}",
this->MousePosition.Y, e->Y);
}
Повернемося до першої форми. До першої форми підключимо другу форму
#include "Form_opm.h"
Для події клацання на кнопці створимо обробник для відкриття другої форми
Form_opm^ fopm=gcnew Form_opm();
fopm->Show();
Запустимо прикладення
Якщо клацнемо на кнопці
Завершимо роботу із програмою.
2 Частина
На першу форму додамо кнопку
Створимо нову форму та розташуємо на ній наступні едементи
Та створимо наступні обробники подій
Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
{
// Устанавливаем шрифт с фиксированной шириной (моноширный):
Form_opk::Font = gcnew Drawing::
Font(FontFamily::GenericMonospace, 14.0F);
// Поскольку мы задали этот шрифт увеличинным (от 8 по умолчанию
// до 14), форма окажется пропорционально увеличенной
Form_opk::Text = "Какие клавиши нажаты сейчас:";
label1->Text = String::Empty; label2->Text = String::Empty;
}
private: System::Void Form1_KeyPress(System::Object^ sender,
System::Windows::Forms::KeyPressEventArgs^ e)
{
// Здесь событие нажатия клавиши: при удержании
// клавиши генерируется непрерывно
label1->Text = "Нажатая клавиша: " + e->KeyChar;
}
private: System::Void Form1_KeyDown(System::Object^ sender,
System::Windows::Forms::KeyEventArgs^ e)
{
// Здесь обрабатываем мгновенное событие первоначального
// нажатия клавиши
label2->Text = String::Empty;
// Если нажата клавиша <Alt>
if (e->Alt == true) label2->Text += "Alt: Yes\n";
else label2->Text += "Alt: No\n";
// Если нажата клавиша <Shift>
if (e->Shift == true) label2->Text += "Shift: Yes\n";
else label2->Text += "Shift: No\n";
// Если нажата клавиша <Ctrl>
if (e->Control == true) label2->Text += "Ctrl: Yes\n";
else label2->Text += "Ctrl: No\n";
label2->Text += String::Format(
"Код клавиши: {0} \nKeyData: {1} \nKeyValue: {2}",
e->KeyCode, e->KeyData, e->KeyValue);
}
private: System::Void Form1_KeyUp(System::Object^ sender,
System::Windows::Forms::KeyEventArgs^ e)
{
// Очистка меток при освобождении клавиши
label1->Text = String::Empty; label2->Text = String::Empty;
}
Повернемося до першої форми. До першої форми підключимо третю форму. Для події клацання на кнопці створимо обробник для відкриття третьої форми.
Запустимо прикладення
3 Частина
На першу форму додамо кнопку
Створимо нову форму та розташуємо на ній наступні едементи
Та створимо наступні обробники подій
private: System::Void Form_ir_Load(System::Object^ sender, System::EventArgs^ e) {
// Обработка процедуры загрузки формы:
this->Text = "Щелкните по ссылке:";
linkLabel1->Text = "www.mail.ru";
linkLabel2->Text = "Папка C:\\Windows\\";
linkLabel3->Text = "Вызвать \"Блокнот\"";
this->Font = gcnew System::Drawing::Font("Consolas", 12.0F);
linkLabel1->LinkVisited = true;
linkLabel2->LinkVisited = true;
linkLabel3->LinkVisited = true;
// Подписка на события: все три события обрабатываются
// одной процедурой:
linkLabel1->LinkClicked += gcnew
LinkLabelLinkClickedEventHandler(this, &Form_ir::ССЫЛКА);
linkLabel2->LinkClicked += gcnew
LinkLabelLinkClickedEventHandler(this, &Form_ir::ССЫЛКА);
linkLabel3->LinkClicked += gcnew
LinkLabelLinkClickedEventHandler(this, &Form_ir::ССЫЛКА);
}
private: System::Void ССЫЛКА(System::Object^ sender,LinkLabelLinkClickedEventArgs^ e)
{ // Обработка щелчка на любой из ссылок:
LinkLabel^ ссылка = (LinkLabel^)sender;
String^ Имя = ссылка->Name; // Имя->Equals(...)
// Выбор ссылки по девятому элементу в массиве Имя:
switch (Имя[9])
{
case '1': // "linkLabel1":
Diagnostics::Process::Start(
"IExplore.exe", "http://www.mail.ru"); break;
case '2': // "linkLabel2":
Diagnostics::Process::Start("C:\\Windows\\"); break;
case '3': // "linkLabel3":
Diagnostics::Process::Start("Notepad", "text.txt");
break;
}
}
Повернемося до першої форми. До першої форми підключимо четверту форму. Для події клацання на кнопці створимо обробник для відкриття четвертої форми.
Запустимо прикладення
Частина 4
На першу форму додамо кнопку
Створимо нову форму та розташуємо на ній наступні едементи
Та створимо наступні обробники подій
#pragma endregion
// Программа Калькулятор с кнопками цифр. Управление калькулятором возможно
// только мышью. Данный калькулятор выполняет лишь арифметические операции
// Внешние переменные, видимые из всех процедур класса Form_k:
String^ Znak; // знак арифметической операции
bool Начало_Ввода; // ожидание ввода нового числа
Double Число1, Число2; // Первое и второе числа, вводимые пользователем
private: System::Void Form_k_Load(System::Object^ sender, System::EventArgs^ e)
{ this->Text = "Калькулятор"; Начало_Ввода = true;
Znak = nullptr;
button1->Text = "1"; button2->Text = "2"; button3->Text = "3";
button4->Text = "4"; button5->Text = "5"; button6->Text = "6";
button7->Text = "7"; button8->Text = "8"; button9->Text = "9";
button10->Text = "0"; button11->Text = "="; button12->Text = "+";
button13->Text = "-"; button14->Text = "*"; button15->Text = "/";
button16->Text = "Очистить";
textBox1->Text = "0";
textBox1->TextAlign = HorizontalAlignment::Right;
// Связываем все события "щелчок на кнопках-цифрах"
// с обработчиком ЦИФРА:
button1->Click += gcnew EventHandler(this, &Form_k::ЦИФРА);
button2->Click += gcnew EventHandler(this, &Form_k::ЦИФРА);
button3->Click += gcnew EventHandler(this, &Form_k::ЦИФРА);
button4->Click += gcnew EventHandler(this, &Form_k::ЦИФРА);
button5->Click += gcnew EventHandler(this, &Form_k::ЦИФРА);
button6->Click += gcnew EventHandler(this, &Form_k::ЦИФРА);
button7->Click += gcnew EventHandler(this, &Form_k::ЦИФРА);
button8->Click += gcnew EventHandler(this, &Form_k::ЦИФРА);
button9->Click += gcnew EventHandler(this, &Form_k::ЦИФРА);
button10->Click += gcnew EventHandler(this, &Form_k::ЦИФРА);
button12->Click += gcnew EventHandler(this, &Form_k::ОПЕРАЦИЯ);
button13->Click += gcnew EventHandler(this, &Form_k::ОПЕРАЦИЯ);
button14->Click += gcnew EventHandler(this, &Form_k::ОПЕРАЦИЯ);
button15->Click += gcnew EventHandler(this, &Form_k::ОПЕРАЦИЯ);
button11->Click += gcnew EventHandler(this, &Form_k::РАВНО);
button16->Click += gcnew EventHandler(this, &Form_k::ОЧИСТИТЬ);
}
private: System::Void ЦИФРА(System::Object^ sender, System::EventArgs^ e)
{
// Обработка события нажатия кнопки-цифры.
// Получить текст, отображаемый на кнопке, можно таким образом:
Button^ Кнопка = (Button^)sender;
String^ Digit = Кнопка->Text;
if (Начало_Ввода == true)
{ // Ввод первой цифры числа:
textBox1->Text = Digit;
Начало_Ввода = false; return;
}
// "Сцепливаем" полученные цифры в новое число:
if (Начало_Ввода == false)
textBox1->Text = textBox1->Text + Digit;
}
private: System::Void ОПЕРАЦИЯ(System::Object^ sender, System::EventArgs^ e)
{
// Обработка события нажатия кнопки арифметической операции:
Число1 = Double::Parse(textBox1->Text);
// Получить текст, отображаемый на кнопке можно таким образом:
Button^ Кнопка = (Button^)sender;
Znak = Кнопка->Text;
Начало_Ввода = true; // ожидаем ввод нового числа
}
private: System::Void РАВНО(System::Object^ sender, System::EventArgs^ e)
{
// Обработка нажатия клавиши "равно"
double Результат = 0;
Число2 = Double::Parse(textBox1->Text);
if (Znak == "+") Результат = Число1 + Число2;
if (Znak == "-") Результат = Число1 - Число2;
if (Znak == "*") Результат = Число1 * Число2;
if (Znak == "/") Результат = Число1 / Число2;
Znak = nullptr;
// Отображаем результат в текстовом поле:
textBox1->Text = Результат.ToString();
Число1 = Результат; Начало_Ввода = true;
}
private: System::Void ОЧИСТИТЬ(System::Object^ sender, System::EventArgs^ e)
{
// Обработка нажатия клавиши "Очистить"
textBox1->Text = "0"; Znak = nullptr; Начало_Ввода = true;
}
private: System::Void textBox1_KeyPress(System::Object^ sender, System::
Windows::Forms::KeyPressEventArgs^ e)
{ // Запрет ввода в текстовое поле с помощью клавиатуры:
e->Handled = true;
}
Повернемося до першої форми. До першої форми підключимо розроблену форму. Для події клацання на кнопці створимо обробник для відкриття розробленої форми.
Запустимо прикладення
Завдання до виконання практичної роботи №4
Виконати завдання частин 1-4, створити індивідуальне прикладення, назви форм повинні відрізнятися від наведених у прикладу розробки.
Критерії оцінювання :
на "3" студент виконує два із завдань на вибір, пояснює лістинги своїх програм
на "4" студент виконує три завдання, пояснює лістинги своїх програм
на "5" студент виконує чотири завдання, пояснює лістинги своїх програм
Контрольні запитання:
Яким чином відстежити координати миші?
Яким чином зробити обробку декільох подій однією процедурою?
Яким чином можливо посилатися на інші ресурси?
Яким чином визначити натиснуту кнопку?
Практична робота №5
Тема: Читання та запис текстових та бінарних файлів, текстовий редактор
Мета: Навчитися роботі із файлами.
Хід роботи: