Диплом: Автоматизация обработки заявок в ООО УК «Март»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
137
138
Приложение 7. Листинг программного кода
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace AsteriskProxyGUI {
static class Program {
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainWindow());
}
}
/*
* класс для отправки события, при котором требуется обновить данные на форме
* ExtensionsWindow
*/
public class UpdateInterface_ExtensionsWindow {
public static string msg { get; private set; }
public static event EventHandler UpdateHandler = delegate { };
public void Update() {
UpdateHandler(msg, EventArgs.Empty);
}
}
/*
* класс для отправки события, при котором требуется обновить данные на форме
* TrunksWindow
*/
public class UpdateInterface_TrunksWindow {
public static string msg { get; private set; }
public static event EventHandler UpdateHandler = delegate { };
public void Update() {
UpdateHandler(msg, EventArgs.Empty);
}
}
/*
* класс для отправки события, при котором требуется обновить данные на форме
* EventLogWindow
*/
public class UpdateInterface_EventLogWindow {
public static string msg { get; private set; }
public static event EventHandler UpdateHandler = delegate { };
public void Update() {
UpdateHandler(msg, EventArgs.Empty);
}
}
/*
139
* placeholder текст для текстбоксов
* (текстовые подсказки, исчезающие при вводе текста)
*/
public class CueTextBox : TextBox {
#region Fields
private Bitmap _bitmap;
private bool _paintedFirstTime = false;
const int WM_PAINT = 0x000F;
const int WM_PRINT = 0x0317;
const int PRF_CLIENT = 0x00000004;
const int PRF_ERASEBKGND = 0x00000008;
private string _cue;
#endregion
#region Properties
public string Cue {
get { return _cue; }
set {
_cue = value;
Invalidate(true);
}
}
public new BorderStyle BorderStyle {
get { return base.BorderStyle; }
set {
if (_paintedFirstTime)
SetStyle(ControlStyles.UserPaint, false);
base.BorderStyle = value;
if (_paintedFirstTime)
SetStyle(ControlStyles.UserPaint, true);
}
}
public override bool Multiline {
get { return base.Multiline; }
set {
if (_paintedFirstTime)
SetStyle(ControlStyles.UserPaint, false);
base.Multiline = value;
if (_paintedFirstTime)
SetStyle(ControlStyles.UserPaint, true);
}
}
#endregion
#region Constructor
public CueTextBox()
: base() {
SetStyle(ControlStyles.UserPaint, false);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.DoubleBuffer, true);
}
#endregion
#region Functions
[DllImport("USER32.DLL", EntryPoint = "SendMessage")]
public static extern int SendMessage(IntPtr hwnd, int msg, IntPtr wParam, IntPtr
lParam);
protected override void Dispose(bool disposing) {
if (_bitmap != null)
140
_bitmap.Dispose();
base.Dispose(disposing);
}
protected override void WndProc(ref Message m) {
if (m.Msg == WM_PAINT) {
_paintedFirstTime = true;
CaptureBitmap();
SetStyle(ControlStyles.UserPaint, true);
base.WndProc(ref m);
SetStyle(ControlStyles.UserPaint, false);
return;
}
base.WndProc(ref m);
}
private void CaptureBitmap() {
if (_bitmap != null)
_bitmap.Dispose();
_bitmap = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height,
PixelFormat.Format32bppArgb);
using (var graphics = Graphics.FromImage(_bitmap)) {
int lParam = PRF_CLIENT | PRF_ERASEBKGND;
System.IntPtr hdc = graphics.GetHdc();
SendMessage(this.Handle, WM_PRINT, hdc, new IntPtr(lParam));
graphics.ReleaseHdc(hdc);
}
}
protected override void OnPaint(PaintEventArgs e) {
SetStyle(ControlStyles.UserPaint, true);
if (_bitmap == null)
e.Graphics.FillRectangle(Brushes.CornflowerBlue, ClientRectangle);
else
e.Graphics.DrawImageUnscaled(_bitmap, 0, 0);
if (_cue != null && Text.Length == 0)
e.Graphics.DrawString(_cue, Font, Brushes.Gray, -1f, 1f);
SetStyle(ControlStyles.UserPaint, false);
}
protected override void OnKeyDown(KeyEventArgs e) {
base.OnKeyDown(e);
Invalidate();
}
protected override void OnKeyUp(KeyEventArgs e) {
base.OnKeyUp(e);
Invalidate();
}
protected override void OnMouseDown(MouseEventArgs e) {
base.OnMouseDown(e);
Invalidate();
}
protected override void OnMouseMove(MouseEventArgs e) {
base.OnMouseMove(e);
Invalidate();
141
}
protected override void OnFontChanged(EventArgs e) {
if (_paintedFirstTime)
SetStyle(ControlStyles.UserPaint, false);
base.OnFontChanged(e);
if (_paintedFirstTime)
SetStyle(ControlStyles.UserPaint, true);
}
#endregion
}
}
using System;
using System.Windows.Forms;
using System.IO;
namespace AsteriskProxyGUI {
public partial class MainWindow : Form {
public MainWindow() {
InitializeComponent();
}
/*
* Обработка нажатия на меню Просмотр журнала событий
*/
private void просмотрToolStripMenuItem_Click(object sender, EventArgs e) {
EventLogWindow eventLogW = new EventLogWindow(); // экземпляр окна
eventLogW.MdiParent = this; // назначение родителя для созданной MDI формы
eventLogW.Show(); // запуск формы
}
/*
* Обработка нажатия на меню О программе
*/
private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e) {
AboutWindow aboutW = new AboutWindow(); // экземпляр окна
aboutW.ShowDialog(); // отображение в диалоговом режиме
}
/*
* Обработка нажатия на меню Руководство пользователя
*/
private void руководствоПользователяToolStripMenuItem_Click(object sender, EventArgs
e) {
HelpWindow helpW = new HelpWindow(); // экземпляр окна
helpW.Owner = this;
// подсунем справку
string filename = Application.StartupPath;
filename = Path.GetFullPath(
Path.Combine(filename, ".\\Help.pdf"));
helpW.open_document(filename);
helpW.Show(); // запуск формы
}
/*
* Обработка нажатия на меню вызова справочника внутренних номеров
*/
private void абонентыАДСToolStripMenuItem_Click(object sender, EventArgs e) {
ExtensionsWindow extensionsW = new ExtensionsWindow(); // экземпляр окна
extensionsW.MdiParent = this; // назначение родителя для созданной MDI формы
142
extensionsW.Show(); // запуск формы
}
/*
* Обработка нажатия на меню вызова справочника трнков
*/
private void внешнииЛинииАДСToolStripMenuItem_Click(object sender, EventArgs e) {
TrunksWindow trunksW = new TrunksWindow(); // экземпляр окна
trunksW.MdiParent = this; // назначение родителя для созданной MDI формы
trunksW.Show(); // запуск формы
}
}
}
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Data;
using System;
namespace AsteriskProxyGUI {
public partial class EventLogWindow : Form {
public EventLogWindow() {
InitializeComponent();
// подписка на события изменения данных в бд
UpdateInterface_EventLogWindow.UpdateHandler += load_data;
}
/*
* поиск по всекй таблице DataGridView
*/
private void Search_cueTextBox_TextChanged(object sender, System.EventArgs e) {
for (int r = 0; r < dataGridView.Rows.Count - 1; r++) {
dataGridView.Rows[r].Visible = false;
for (int c = 0; c < dataGridView.Columns.Count; c++) {
if (dataGridView[c,
r].Value.ToString().ToLower().Contains(search_cueTextBox.Text.ToLower())) {
dataGridView.Rows[r].Visible = true;
break;
}
}
}
}
/*
* Процедура чтения данных из БД и помещения их на форму
*/
public void load_data(object sender, EventArgs e) {
MySqlConnection m_dbConn;
MySqlCommand m_sqlCmd;
m_dbConn = new MySqlConnection();
m_sqlCmd = new MySqlCommand();
DataTable dTable = new DataTable();
string sqlQuery;
try {
if (m_dbConn.State != ConnectionState.Open) {
m_dbConn = new
MySqlConnection("server=192.168.1.40;user=root;password=1234;database=freepbx;");
m_dbConn.Open();
}
sqlQuery = "SELECT * FROM asteriskproxy_journal;";
MySqlDataAdapter adapter = new MySqlDataAdapter(sqlQuery, m_dbConn);
143
adapter.Fill(dTable);
// в случае отсутствия колонок datagridview - создать и задать ширину
if (dataGridView.Columns.Count == 0) {
// ИД
dataGridView.Columns.Add("id", "ИД");
dataGridView.Columns[0].Width = 70;
// Дата и время события
dataGridView.Columns.Add("datetime", "Дата и время");
dataGridView.Columns[1].Width = 110;
// Событие
dataGridView.Columns.Add("event", "Событие");
dataGridView.Columns[2].Width = 650;
/*dataGridView.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView.AutoResizeColumns();
dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
dataGridView.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders);*/
}
// в случае отстутствия строк - добавить одну
if (dataGridView.Rows.Count == 0)
dataGridView.Rows.Add();
if (dTable.Rows.Count > 0) {
dataGridView.Rows.Clear(); // очистка данных
for (int i = 0; i < dTable.Rows.Count; i++) {
//dataGridView1.Rows.Add(dTable.Rows[i].ItemArray);
dataGridView.Rows.Add();
dataGridView["id", i].Value = dTable.Rows[i]["id"].ToString(); //
Идентификатор
dataGridView["datetime", i].Value =
dTable.Rows[i]["date_time"].ToString(); // Дата и время
dataGridView["event", i].Value = dTable.Rows[i]["event"].ToString();
// Событие
}
}
else
MessageBox.Show("Таблица пуста! Внесите данные или восстановите из
резервной копии.");
}
catch (MySqlException ex) {
MessageBox.Show("Ошибка: " + ex.Message);
}
finally {
m_dbConn.Close();
}
}
/*
* При загрузке формы инициируется событие, указывающее на необходимость обновления
данных формы
*/
private void EventLogWindow_Load(object sender, EventArgs e) {
// инициация события обновления/помещения данных на форму
UpdateInterface_EventLogWindow updateInterface = new
UpdateInterface_EventLogWindow();
updateInterface.Update();
}
}
}
144
using MySql.Data.MySqlClient;
using System;
using System.Data;
using System.Windows.Forms;
using System.Drawing;
namespace AsteriskProxyGUI {
public partial class ExtensionsWindow : Form {
public ExtensionsWindow() {
InitializeComponent();
// подписка на события изменения данныз в бд
UpdateInterface_ExtensionsWindow.UpdateHandler += load_data;
}
/*
* При загрузке формы инициируется событие, указывающее на необходимость обновления
данных формы
*/
private void ExtensionsWindow_Load(object sender, EventArgs e) {
// инициация события обновления/помещения данных на форму
UpdateInterface_ExtensionsWindow updateInterface = new
UpdateInterface_ExtensionsWindow();
updateInterface.Update();
}
/*
* Процедура чтения данных из БД и помещения их на форму
*/
public void load_data(object sender, EventArgs e) {
MySqlConnection m_dbConn;
MySqlCommand m_sqlCmd;
m_dbConn = new MySqlConnection();
m_sqlCmd = new MySqlCommand();
DataTable dTable = new DataTable();
string sqlQuery;
try {
if (m_dbConn.State != ConnectionState.Open) {
m_dbConn = new
MySqlConnection("server=192.168.1.40;user=root;password=1234;database=freepbx;");
m_dbConn.Open();
}
sqlQuery = "SELECT * FROM asteriskproxy_extensions;";
MySqlDataAdapter adapter = new MySqlDataAdapter(sqlQuery, m_dbConn);
adapter.Fill(dTable);
// в случае отсутствия колонок datagridview - создать и задать ширину
if (dataGridView.Columns.Count == 0) {
// ИД
dataGridView.Columns.Add("id", "ИД");
dataGridView.Columns[0].Width = 70;
// Линия
dataGridView.Columns.Add("number", "Номер");
dataGridView.Columns[1].Width = 85;
// Наименование
dataGridView.Columns.Add("name", "Наименование");
dataGridView.Columns[2].Width = 225;
// Примечание
dataGridView.Columns.Add("note", "Примечание");
145
dataGridView.Columns[3].Width = 225;
// Статус
dataGridView.Columns.Add("status", "Статус");
dataGridView.Columns[4].Width = 90;
}
// в случае отстутствия строк - добавить одну
if (dataGridView.Rows.Count == 0)
dataGridView.Rows.Add();
if (dTable.Rows.Count > 0) {
dataGridView.Rows.Clear(); // очистка данных
for (int i = 0; i < dTable.Rows.Count; i++) {
//dataGridView1.Rows.Add(dTable.Rows[i].ItemArray);
dataGridView.Rows.Add();
dataGridView["id", i].Value = dTable.Rows[i]["id"].ToString(); //
Идентификатор
dataGridView["number", i].Value =
dTable.Rows[i]["number"].ToString(); // Номер
dataGridView["name", i].Value = dTable.Rows[i]["name"].ToString();
// Наименование
dataGridView["note", i].Value = dTable.Rows[i]["note"].ToString();
// Примечание
if (bool.Parse(dTable.Rows[i]["status"].ToString()))
dataGridView["status", i].Value = "Используется";
else
dataGridView["status", i].Value = "Удален";
}
}
else
MessageBox.Show("Таблица пуста! Внесите данные или восстановите из
резервной копии.");
}
catch (MySqlException ex) {
MessageBox.Show("Ошибка: " + ex.Message);
}
finally {
m_dbConn.Close();
}
}
/*
* поиск по всекй таблице DataGridView
*/
private void Search_cueTextBox_TextChanged(object sender, EventArgs e) {
for (int r = 0; r < dataGridView.Rows.Count - 1; r++) {
dataGridView.Rows[r].Visible = false;
for (int c = 0; c < dataGridView.Columns.Count; c++) {
if (dataGridView[c,
r].Value.ToString().ToLower().Contains(Search_cueTextBox.Text.ToLower())) {
dataGridView.Rows[r].Visible = true;
break;
}
}
}
}
/*
* Обновить данные по нажатии кнопки
*/
private void update_button_Click(object sender, EventArgs e) {
// инициация события
UpdateInterface_ExtensionsWindow updateInterface = new
UpdateInterface_ExtensionsWindow();
146
updateInterface.Update();
}
/*
* Обработка нажатия кнопки Добавить данные
*/
private void add_button_Click(object sender, EventArgs e) {
AddExtensionWindow фddExtensionW = new AddExtensionWindow(); // экземпляр окна
фddExtensionW.ShowDialog(); // запуск формы в диалоговом режиме
}
/*
* Метод позволяет определить позицию Датагрид, на которую кликнул пользователь
* также выделяет строку
* также меняет контекстное меню Удалить / Восстановить
*/
Point point = new Point();
private void dataGridView_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
point.X = e.ColumnIndex;
point.Y = e.RowIndex;
// Подсвечивание строки
try {
dataGridView.ClearSelection();
dataGridView.Rows[e.RowIndex].Selected = true;
}
catch {
;
}
// изменение контекстного меню
try {
if (dataGridView["status", point.Y].Value.ToString() == "Используется")
удалитьToolStripMenuItem.Text = "Удалить";
else
удалитьToolStripMenuItem.Text = "Восстановить";
}
catch {
;
}
}
/*
* Вызов окна редактирования по контекстному меню
*/
private void редактироватьToolStripMenuItem_Click(object sender, EventArgs e) {
EditExtensionWindow editExtensionW = new EditExtensionWindow(); // экземпляр
окна
editExtensionW.fill_data(dataGridView["id", point.Y].Value.ToString(),
dataGridView["number", point.Y].Value.ToString(),
dataGridView["name", point.Y].Value.ToString(),
dataGridView["note", point.Y].Value.ToString()); //
Заполнение формы данными
editExtensionW.ShowDialog(); // отображение в диалоговом режиме
}
/*
* Клик по контекстрому меню удаления записи
* на самом деле запись не удаляется,
* ей присваивается маркер удаленной,
* по которой AsteriskProxy понимает,
* что эту запись не нужно использовать в работе
*/
private void удалитьToolStripMenuItem_Click(object sender, EventArgs e) {

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)