Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System; // Підключення базових системних функцій
- using System.Drawing; // Підключення інструментів для роботи з графікою та кольорами
- using System.Windows.Forms; // Підключення бібліотеки для створення вікон та кнопок
- using MySql.Data.MySqlClient; // Підключення драйвера для роботи з базою даних MySQL
- namespace lab8 // Назва простору імен проекту
- {
- public partial class MainMenu : Form // Оголошення класу головного вікна програми
- {
- public MainMenu() // Конструктор класу, виконується при створенні вікна
- {
- InitializeComponent(); // Стандартний метод для ініціалізації елементів форми
- SetupCard(Roles, Roles_Title, Roles_Number, 95, 130); // Налаштування картки ролей
- SetupCard(Categories, Categories_Title, Categories_Number, 95, 130); // Налаштування картки категорій
- SetupCard(Courses, Courses_Title, Courses_Number, 95, 130); // Налаштування картки курсів
- SetupCard(Users, Users_Title, Users_Number, 95, 130); // Налаштування картки користувачів
- SetupCard(Enrollments, Enrollments_Title, Enrollments_Number, 95, 130); // Налаштування картки записів
- LoadCounts(); // Виклик методу для завантаження кількості записів з БД
- }
- private void SetupCard(Button btn, Label title, Label number, int titleTop, int numberTop) // Метод для візуального оформлення кнопок-карток
- {
- btn.FlatStyle = FlatStyle.Flat; // Встановлення плаского стилю для кнопки
- btn.FlatAppearance.BorderSize = 1; // Товщина рамки кнопки в 1 піксель
- btn.FlatAppearance.BorderColor = Color.FromArgb(204, 204, 204); // Сірий колір рамки
- btn.BackColor = Color.White; // Білий колір фону кнопки
- btn.TabStop = false; // Вимкнення фокусування на кнопці через клавішу Tab
- title.Parent = btn; // Прив'язка напису заголовка до кнопки
- number.Parent = btn; // Прив'язка напису з числом до кнопки
- title.BackColor = Color.Transparent; // Прозорий фон для заголовка
- number.BackColor = Color.Transparent; // Прозорий фон для числа
- title.Top = titleTop; // Встановлення відступу заголовка зверху
- number.Top = numberTop; // Встановлення відступу числа зверху
- btn.FlatAppearance.MouseOverBackColor = Color.FromArgb(224, 238, 249); // Колір при наведенні миші на кнопку
- btn.FlatAppearance.MouseDownBackColor = Color.FromArgb(224, 238, 249); // Колір при натисканні на кнопку
- btn.MouseEnter += All_MouseEnter; // Підписка кнопки на подію наведення миші
- btn.MouseLeave += All_MouseLeave; // Підписка кнопки на подію відведення миші
- title.MouseEnter += All_MouseEnter; // Підписка заголовка на подію наведення миші
- title.MouseLeave += All_MouseLeave; // Підписка заголовка на подію відведення миші
- number.MouseEnter += All_MouseEnter; // Підписка числа на подію наведення миші
- number.MouseLeave += All_MouseLeave; // Підписка числа на подію відведення миші
- int titleLeft = (btn.Width - title.Width) / 2; // Розрахунок позиції для центрування заголовка
- title.Left = titleLeft; // Встановлення заголовка по центру горизонтально
- }
- private void LoadCounts() // Метод для отримання даних з бази даних
- {
- string connectionString = "server=localhost;database=lab;uid=root;pwd=;"; // Рядок підключення до MySQL
- MySqlConnection conn = new MySqlConnection(connectionString); // Створення об'єкта підключення
- try // Початок блоку перевірки на помилки
- {
- conn.Open(); // Відкриття з'єднання з базою
- Count(conn, "roles", Roles_Number); // Підрахунок ролей
- Count(conn, "categories", Categories_Number); // Підрахунок категорій
- Count(conn, "courses", Courses_Number); // Підрахунок курсів
- Count(conn, "users", Users_Number); // Підрахунок користувачів
- Count(conn, "enrollments", Enrollments_Number); // Підрахунок записів
- conn.Close(); // Закриття з'єднання
- }
- catch (Exception ex) // Блок, що спрацює у разі помилки
- {
- Console.WriteLine(ex.Message); // Вивід тексту помилки в консоль
- }
- }
- private void Count(MySqlConnection conn, string tableName, Label lbl) // Метод для виконання SQL-запиту підрахунку
- {
- string sql = "SELECT COUNT(*) FROM " + tableName; // Формування тексту SQL-запиту
- MySqlCommand cmd = new MySqlCommand(sql, conn); // Створення команди для виконання
- object result = cmd.ExecuteScalar(); // Виконання запиту та отримання одного числа
- string count = result.ToString(); // Перетворення результату в текст
- lbl.Text = "Кількість: " + count; // Вивід результату на напис
- Button btn = (Button)lbl.Parent; // Отримання доступу до кнопки, в якій знаходиться напис
- int Left = (btn.Width - lbl.Width) / 2; // Розрахунок центру для оновленого тексту
- lbl.Left = Left; // Оновлення горизонтальної позиції напису
- }
- private void ResetButtonStyle(Button btn) // Метод для повернення кнопці стандартного вигляду
- {
- if (btn != null) // Перевірка, чи існує кнопка
- {
- btn.BackColor = Color.White; // Повернення білого фону
- btn.FlatAppearance.BorderColor = Color.FromArgb(204, 204, 204); // Повернення сірої рамки
- }
- }
- private void All_MouseEnter(object sender, EventArgs e) // Обробник події наведення миші
- {
- Color hover = Color.FromArgb(224, 238, 249); // Колір підсвічування фону
- Color Active = Color.FromArgb(62, 151, 219); // Колір підсвічування рамки
- Control control = (Control)sender; // Визначення об'єкта, на який навели мишу
- Button btn = null; // Створення порожньої змінної для кнопки
- if (control is Button) // Якщо навели прямо на кнопку
- {
- btn = (Button)control; // Записуємо кнопку в змінну
- }
- else // Якщо навели на текст всередині кнопки
- {
- btn = (Button)control.Parent; // Записуємо "батьківську" кнопку в змінну
- }
- if (btn != null) // Якщо кнопку знайдено
- {
- btn.BackColor = hover; // Змінюємо фон на блакитний
- btn.FlatAppearance.BorderColor = Active; // Змінюємо рамку на синю
- }
- }
- private void All_MouseLeave(object sender, EventArgs e) // Обробник події відведення миші
- {
- Control control = (Control)sender; // Визначення об'єкта, з якого пішла миша
- Button btn = null; // Створення порожньої змінної для кнопки
- if (control is Button) // Якщо миша пішла з самої кнопки
- {
- btn = (Button)control; // Записуємо кнопку в змінну
- }
- else // Якщо миша пішла з тексту всередині кнопки
- {
- btn = (Button)control.Parent; // Записуємо "батьківську" кнопку в змінну
- }
- if (btn != null) // Якщо кнопку знайдено
- {
- Point clientMousePos = btn.PointToClient(Control.MousePosition); // Отримання координат миші відносно кнопки
- if (!btn.ClientRectangle.Contains(clientMousePos)) // Перевірка, чи дійсно миша вийшла за межі всієї кнопки
- {
- ResetButtonStyle(btn); // Повертаємо стандартний колір
- }
- }
- }
- private void Roles_Click(object sender, EventArgs e) // Обробник кліку по картці ролей
- {
- Roles form = new Roles(); // Створення нового вікна ролей
- form.ShowDialog(); // Відкриття вікна у модальному режимі
- ResetButtonStyle(Roles); // Скидання кольору кнопки після закриття вікна
- LoadCounts(); // Оновлення лічильників
- }
- private void Categories_Click(object sender, EventArgs e) // Обробник кліку по картці категорій
- {
- Categories form = new Categories(); // Створення вікна категорій
- form.ShowDialog(); // Відкриття вікна
- ResetButtonStyle(Categories); // Скидання кольору кнопки
- LoadCounts(); // Оновлення лічильників
- }
- private void Courses_Click(object sender, EventArgs e) // Обробник кліку по картці курсів
- {
- CoursesView form = new CoursesView(); // Створення вікна курсів
- form.ShowDialog(); // Відкриття вікна
- ResetButtonStyle(Courses); // Скидання кольору кнопки
- LoadCounts(); // Оновлення лічильників
- }
- private void Users_Click(object sender, EventArgs e) // Обробник кліку по картці користувачів
- {
- UsersView form = new UsersView(); // Створення вікна користувачів
- form.ShowDialog(); // Відкриття вікна
- ResetButtonStyle(Users); // Скидання кольору кнопки
- LoadCounts(); // Оновлення лічильників
- }
- private void Enrollments_Click(object sender, EventArgs e) // Обробник кліку по картці записів
- {
- EnrollmentsView form = new EnrollmentsView(); // Створення вікна записів
- form.ShowDialog(); // Відкриття вікна
- ResetButtonStyle(Enrollments); // Скидання кольору кнопки
- LoadCounts(); // Оновлення лічильників
- }
- private void ExitClick(object sender, EventArgs e) // Обробник кліку по кнопці виходу
- {
- Application.Exit(); // Повне закриття програми
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment