Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

RUS_-_Karejev_-_Razrabotka_Windows-prilozhenij

.pdf
Скачиваний:
36
Добавлен:
02.02.2015
Размер:
8 Мб
Скачать
☆

namespace Manager

{

public class frmClient : System.Windows.Forms.Form

{

// Объявление элементов управления internal DataRow BindingRow

{

get { return bindingRow; } set { bindingRow = value; }

}

private int groupID = 0; internal int GroupID

{

get { return groupID; } set { groupID = value; }

}

private int clientID = 0; internal int ClientID

{

get { return clientID; } set { clientID = value; }

}

private frmManager mainForm = null;

private Manager.Forms.MainDataSet mainDataSet1;

internal frmManager MainForm

{

get { return mainForm; } set { mainForm = value; }

}

internal CurrencyManager cmPaymentType;

private MainDataSet mainDataSet = null; public frmClient(MainDataSet mainDataSet)

{

InitializeComponent();

this.mainDataSet = mainDataSet; dgPayments.Tag = "Payments"; dgClientsRealization.Tag = "Realization";

Size labelSize = new Size(this.Width, lblClientID.Size.Height); this.lblClientID.Size = labelSize;

mainDataSet.income.Columns["clientID"].DefaultValue = this.ClientID; mainDataSet.RealizedTable.Columns["clientID"].DefaultValue = this.ClientID;

DesigneDataGrids();

btnCreateClientPayment.Click += new EventHandler(btnCreateClientPayment_Click); btnRealizeClient.Click += new EventHandler(btnRealizeClient_Click); cmbPaymentType.DataSource = mainDataSet.payment_type; cmbPaymentType.DisplayMember = "payment_typeName";

cmPaymentType = (CurrencyManager)this.BindingContext[mainDataSet, "payment_type"]; cmPaymentType.Position = 0;

//*****************************

btnFindClient.Click += new EventHandler(btnFindClient_Click); btnSelectClient.Click += new EventHandler(btnSelectClient_Click); dgFindedClients.MouseUp += new MouseEventHandler(dgFindedClients_MouseUp); dgPayments.MouseUp += new MouseEventHandler(dgPayments_MouseUp); dgClientsRealization.MouseUp += new MouseEventHandler(dgPayments_MouseUp); //*****************************

}

public frmClient(DataRow bindingRow, MainDataSet mainDataSet)

{

InitializeComponent();

this.mainDataSet = mainDataSet; dgPayments.Tag = "Payments"; dgClientsRealization.Tag = "Realization";

IsCreating = true;

Size labelSize = new Size(this.Width, lblClientID.Size.Height); this.lblClientID.Size = labelSize;

this.bindingRow = bindingRow;

this.ClientID = (int)bindingRow["clientID"];

this.lblClientID.Text += this.ClientID.ToString(); this.txtFirstName.Text = bindingRow["fname"].ToString(); this.txtLastName.Text = bindingRow["lname"].ToString(); this.txtFatherName.Text = bindingRow["fathName"].ToString(); this.txtPhones.Text = bindingRow["linkData"].ToString(); this.dtpRecordDate.Value = (DateTime)bindingRow["recordDate"]; this.txtNotes.Text = bindingRow["note"].ToString();

mainDataSet.income.Columns["clientID"].DefaultValue = this.ClientID; mainDataSet.RealizedTable.Columns["clientID"].DefaultValue = this.ClientID;

btnCreateClientPayment.Click += new EventHandler(btnCreateClientPayment_Click); btnRealizeClient.Click += new EventHandler(btnRealizeClient_Click); DesigneDataGrids();

cmbPaymentType.DataSource = mainDataSet.payment_type; cmbPaymentType.DisplayMember = "payment_typeName";

cmPaymentType = (CurrencyManager)this.BindingContext[mainDataSet, "payment_type"]; cmPaymentType.Position = 0;

//**********************

btnFindClient.Click += new EventHandler(btnFindClient_Click); btnSelectClient.Click += new EventHandler(btnSelectClient_Click); dgFindedClients.MouseUp += new MouseEventHandler(dgFindedClients_MouseUp); dgPayments.MouseUp += new MouseEventHandler(dgPayments_MouseUp); dgClientsRealization.MouseUp += new MouseEventHandler(dgPayments_MouseUp); //**********************

}

protected override void Dispose( bool disposing )

{

// Описание метода

}

private void InitializeComponent()

{

// Описание метода

}

private void txtLastName_Validated(object sender, System.EventArgs e)

{

if (IsCreating)

if (txtLastName.Text != this.bindingRow["lname"].ToString())

{

this.bindingRow["lname"] = txtLastName.Text;

}

}

private void txtFirstName_Validated(object sender, System.EventArgs e)

{

if (IsCreating)

if (txtFirstName.Text != this.bindingRow["fname"].ToString())

{

this.bindingRow["fname"] = txtFirstName.Text;

}

}

private void txtFartherName_Validated(object sender, System.EventArgs e)

{

if (IsCreating)

if (txtFatherName.Text != this.bindingRow["fathName"].ToString())

{

this.bindingRow["fathName"] = txtFatherName.Text;

}

}

private void txtPhones_Validated(object sender, System.EventArgs e)

{

if (IsCreating)

if (txtPhones.Text != this.bindingRow["linkData"].ToString())

{

this.bindingRow["linkData"] = txtPhones.Text;

}

}

private void dtpRecordDate_Validated(object sender, System.EventArgs e)

{

if (IsCreating)

if (dtpRecordDate.Value != (DateTime)this.bindingRow["recorddate"])

{

this.bindingRow["recorddate"] = dtpRecordDate.Value;

}

}

private void txtNotes_Validated(object sender, System.EventArgs e)

{

if (IsCreating)

if (txtNotes.Text != this.bindingRow["note"].ToString())

{

this.bindingRow["note"] = txtNotes.Text;

}

}

// Реализация клиента

private void btnRealizeClient_Click(object sender, System.EventArgs e)

{

try

{

DataRow realizedRow = mainDataSet.RealizedTable.NewRow();

realizedRow["realizedSumm"] = double.Parse(txtRealizedSumm.Text); realizedRow["realizingDate"] = dtpRealizedDate.Value; realizedRow["note"] = txtRealizingNotes.Text; realizedRow["clientID"] = clientID;

mainDataSet.RealizedTable.Rows.Add(realizedRow);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, ex.Source);

}

}

private void frmClient_Activated(object sender, System.EventArgs e)

{

txtLastName.Focus();

}

private void btnCalculate_Click(object sender, System.EventArgs e)

{

try

{

DataView dvIncome = (DataView)dgPayments.DataSource;

double incomeSumm = 0;

foreach (DataRowView drvIncome in dvIncome)

{

incomeSumm += (double)drvIncome.Row["summa"];

}

txtIncomeSumm.Text = incomeSumm.ToString("C");

DataView dvRealized = (DataView)dgClientsRealization.DataSource;

double realizedSumm = 0;

foreach (DataRowView drvRealized in dvRealized)

{

realizedSumm += (double)drvRealized.Row["realizedSumm"];

}

txtRealizationSumm.Text = realizedSumm.ToString("C");

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, ex.Source);

}

}

private void DesigneDataGrids()

{

// Стиль таблицы оплат клиента

DataGridTableStyle incomeTableStyle = new DataGridTableStyle(); incomeTableStyle.MappingName = "income";

DataGridTextBoxColumn summaStyle = new DataGridTextBoxColumn(); summaStyle.MappingName = "summa";

summaStyle.Width = 100; summaStyle.Format = "#.0"; summaStyle.HeaderText = "Сумма";

DataGridTextBoxColumn payment_typeIDStyle = new DataGridTextBoxColumn(); payment_typeIDStyle.MappingName = "payment_typeID"; payment_typeIDStyle.Width = 100;

payment_typeIDStyle.HeaderText = "Код вида оплаты";

DataGridTextBoxColumn noteStyle = new DataGridTextBoxColumn(); noteStyle.MappingName = "note";

noteStyle.Width = 100; noteStyle.HeaderText = "Заметки";

DataGridBoolColumn realizedStyle = new DataGridBoolColumn(); realizedStyle.MappingName = "IsRealized"; realizedStyle.Width = 100;

realizedStyle.HeaderText = "Реализовано";

incomeTableStyle.GridColumnStyles.AddRange(new DataGridColumnStyle[] { summaStyle, payment_typeIDStyle, noteStyle});

dgPayments.TableStyles.Add(incomeTableStyle);

// Стиль таблицы реализации оплат клиента

DataGridTableStyle PlanRealizationTableStyle = new DataGridTableStyle(); PlanRealizationTableStyle.MappingName = "PlanRealization";

DataGridTextBoxColumn SummaRealizationStyle = new DataGridTextBoxColumn();

SummaRealizationStyle.MappingName = "SummaRealization";

SummaRealizationStyle.Width = 150;

SummaRealizationStyle.Format = "#.0";

SummaRealizationStyle.HeaderText = "Сумма реализации";

DataGridTextBoxColumn DateRealizationStyle = new DataGridTextBoxColumn();

DateRealizationStyle.MappingName = "DateRealization";

DateRealizationStyle.Width = 100;

DateRealizationStyle.HeaderText = "Дата реализации";

DataGridTextBoxColumn noteRealizationStyle = new DataGridTextBoxColumn(); noteRealizationStyle.MappingName = "Cause";

noteRealizationStyle.Width = 100; noteRealizationStyle.HeaderText = "Заметки";

PlanRealizationTableStyle.GridColumnStyles.AddRange(new DataGridTextBoxColumn[] { SummaRealizationStyle, DateRealizationStyle, noteRealizationStyle});

dgPayments.TableStyles.Add(PlanRealizationTableStyle);

// Стиль таблицы фактической реализации оплат клиента

DataGridTableStyle RealizedTableStyle = new DataGridTableStyle(); RealizedTableStyle.MappingName = "RealizedTable";

DataGridTextBoxColumn RealizationSummStyle = new DataGridTextBoxColumn();

RealizationSummStyle.MappingName = "realizedSumm";

RealizationSummStyle.Width = 150;

RealizationSummStyle.HeaderText = "Сумма";

DataGridTextBoxColumn RealizingDateStyle = new DataGridTextBoxColumn();

RealizingDateStyle.MappingName = "realizingDate";

RealizingDateStyle.Width = 150;

RealizingDateStyle.Format = "dd-MMMM-yyyy";

RealizingDateStyle.HeaderText = "Дата реализации";

DataGridTextBoxColumn NoteRealizationStyle = new DataGridTextBoxColumn();

NoteRealizationStyle.MappingName = "note";

NoteRealizationStyle.Width = 100;

NoteRealizationStyle.HeaderText = "Заметки";

RealizedTableStyle.GridColumnStyles.AddRange(new DataGridTextBoxColumn[] {

RealizationSummStyle,

RealizingDateStyle,

NoteRealizationStyle});

dgClientsRealization.TableStyles.Add(RealizedTableStyle);

}

private void btnCreateClientPayment_Click(object sender, System.EventArgs e)

{

try

{

DataRow incomeRow = mainDataSet.income.NewRow();

incomeRow["dataID"] = frmManager.DataID; incomeRow["clientID"] = this.clientID;

incomeRow["summa"] = double.Parse(txtIncomeClientSumm.Text); incomeRow["note"] = txtIncomeNote.Text; incomeRow["IsRealized"] = 0;

DataRowView payment_typeRowView = (DataRowView)cmPaymentType.Current; incomeRow["payment_typeID"] = payment_typeRowView.Row["payment_typeID"];

///

///Добавление столбца с датой ввода суммы (по умолчанию равной текущей дате)

///

mainDataSet.income.Rows.Add(incomeRow);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, ex.Source);

}

}

//************************** private void FilterClients()

{

string clientLastName = txtLastName.Text; string clientFirstName = txtFirstName.Text; string clientFatherName = txtFatherName.Text;

DataView dataView = new DataView(mainDataSet.clients);

string filter = "fname = \'" + clientFirstName + "\' OR lname = \'" + clientLastName + "\' OR fathName = \'" + clientFatherName + "\'";

dataView.RowFilter = filter;

dgFindedClients.DataSource = dataView;

}

private int GetClientIDInSearchDataGrid(DataGrid.HitTestInfo hti)

{

if (hti.Row == -1) return -1;

DataView searchDataView = (DataView)dgFindedClients.DataSource; return (int)searchDataView[hti.Row].Row["clientID"];

}

private void PasteSelectedClient()

{

try

{

if (selectedClientIDInDataGrid == -1)

{

MessageBox.Show("Не выбран клиент!"); return;

}

DataRow groupClientsRow = mainDataSet.group_clients.NewRow();

groupClientsRow["groupID"] = this.GroupID; groupClientsRow["clientID"] = selectedClientIDInDataGrid; groupClientsRow["IsPaid"] = false;

mainDataSet.group_clients.Rows.Add(groupClientsRow); if (this.MainForm != null)

MainForm.dgGroups_Click(MainForm.dgGroups, new EventArgs());

this.Close();

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, ex.Source);

}

}

private void btnFindClient_Click(object sender, EventArgs e)

{

this.FilterClients();

}

private void btnSelectClient_Click(object sender, EventArgs e)

{

this.PasteSelectedClient();

}

int selectedClientIDInDataGrid = -1; //**************************

private void dgFindedClients_MouseUp(object sender, MouseEventArgs e)

{

selectedClientIDInDataGrid = this.GetClientIDInSearchDataGrid(dgFindedClients.HitTest(e.X, e.Y));

}

private void dgPayments_MouseUp(object sender, MouseEventArgs e)

{

DataGrid dataGrid = (DataGrid)sender;

DataGrid.HitTestInfo hti = dataGrid.HitTest(new Point(e.X, e.Y));

if ((hti.Row < 0) || (hti.Column < 0)) return;

this.ShowDate(dataGrid, hti);

}

private void ShowDate(DataGrid dataGrid, DataGrid.HitTestInfo hti)

{

string caption = dataGrid.Tag.ToString(); dataGrid.CaptionText = "";

DataView dataView = (DataView)dataGrid.DataSource; DataRow row = null;

row = (DataRow)dataView[hti.Row].Row;

DateTime date;

DataRow mainRow = null;

if (dataGrid.Tag.ToString() == "Payments")

{

mainRow = row.GetParentRow("dataincome");

if (mainRow == null) return;

date = (DateTime)mainRow["currentDate"];

}

else if (dataGrid.Tag.ToString() == "Realization")

{

mainRow = row;

if (mainRow == null) return;

date = (DateTime)mainRow["DateRealization"];

}

else return;

string textFormat = String.Format(" - Date: {0}", date.ToString("dd MMMM yyyy")); caption += textFormat;

dataGrid.CaptionText = caption;

}

}

}

Листинг 11.7.

Форма frmCourse — форма курсов

При выборе одного из направлений в проводнике можно добавлять новые курсы, щелкнув правой кнопкой и выбрав в контекстном меню пункт New/Сourse (рис. 11.39):

увеличить изображение

Рис. 11.39. Добавление нового курса

Располагаем элементы управления и называем их в соответствии с рис. 11.40.

Рис. 11.40. Форма frmCourse

Листинг формы frmCourse:

using System; using System.Data;

using System.Data.SqlClient; using System.Drawing;

using System.Collections; using System.ComponentModel; using System.Windows.Forms;

namespace Manager

{

///<summary>

///Форма курса

/// </summary>

public class frmCourse : System.Windows.Forms.Form

{

// Объявление элементов управления public frmCourse()

{

InitializeComponent();

}

private DataRow bindingRow; internal DataRow BindingRow

{

get { return bindingRow; } set { bindingRow = value; }

}

public frmCourse(DataRow bindingRow)

{

InitializeComponent();

this.bindingRow = bindingRow;

this.lblCourseNumber.Text += bindingRow.ItemArray[0].ToString(); this.txtCourseName.Text = bindingRow.ItemArray[1].ToString(); this.txtCoursePrice.Text = bindingRow.ItemArray[4].ToString();

}

protected override void Dispose( bool disposing )

{

// Описание метода

}

private void InitializeComponent()

{

// Описание метода

}

private void txtCourseName_Validated(object sender, System.EventArgs e)

{

if (this.bindingRow != null)

if (txtCourseName.Text != this.bindingRow["courseName"].ToString())

{

this.bindingRow["courseName"] = txtCourseName.Text;

}

}

private void txtCoursePrice_Validated(object sender, System.EventArgs e)

{

if (this.bindingRow != null)

if (double.Parse(txtCourseName.Text) != (double)this.bindingRow["priceNumber"])

{

this.bindingRow["priceNumber"] = double.Parse(txtCourseName.Text);

}

}

private void frmCourse_Load(object sender, System.EventArgs e)

{

txtCourseName.Focus();

}

}

}

Листинг 11.8.

Форма frmEmployee

В программе предусмотрена возможность извлечения, добавления и изменения информации о сотрудниках центра. Для этого используется форма frmEmployee, добавляем элементы управления в соответствии с рис. 11.41.

увеличить изображение

Рис. 11.41. Форма frmEmployee

Класс формы frmEmployee наследуем от интерфейса ISelectingForm.

Листинг формы frmEmployee:

using System; using System.Data;

using System.Drawing; using System.Collections;

using System.ComponentModel; using System.Windows.Forms; using SelectingFormInterface; using Manager.Forms;

namespace Manager

{

public class frmEmployee : System.Windows.Forms.Form, ISelectingForm

{

// Объявление элементов управления

#region IFindingForm Members

private DataRow selectedRow = null; public DataRow SelectedRow

{

get { return selectedRow; } set { selectedRow = value; }

}

#endregion

public frmEmployee(MainDataSet mainDataSet)

{

InitializeComponent();

this.mainDataSet = mainDataSet; this.InitDefaultSettings();

}

protected override void Dispose( bool disposing )

{

// Описание метода

}

private void InitializeComponent()

{

// Описание метода

}

private void InitDefaultSettings()

{

try

{

cmEmployees = (CurrencyManager)this.BindingContext[mainDataSet, "employees"];

txtEmployeeFirstName.DataBindings.Add("Text", mainDataSet, "employees.FirstName"); txtEmployeeLastName.DataBindings.Add("Text", mainDataSet, "employees.LastName"); txtEmployeeFatherName.DataBindings.Add("Text", mainDataSet, "employees.FatherName");

dtpBirthday.DataBindings.Add("Value", mainDataSet, "employees.birthDay"); txtEmployeeNotes.DataBindings.Add("Text", mainDataSet, "employees.linkData"); cmbDirections.DataBindings.Add("Text", mainDataSet, "employees.directionID");

dgEmployees.DataSource = mainDataSet.employees; dgEmployees.MouseUp += new MouseEventHandler(dgEmployees_MouseUp); btnNext.Click += new EventHandler(btnNext_Click);

btnPrev.Click += new EventHandler(btnPrev_Click);

this.DesignDatagrid();

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, ex.Source);

}

}

private void miExit_Click(object sender, System.EventArgs e)

{

this.Close();

}

private void btnNext_Click(object sender, EventArgs e)

{

if (cmEmployees.Position < mainDataSet.employees.Rows.Count) cmEmployees.Position++;

}

private void btnPrev_Click(object sender, EventArgs e)

{

if (cmEmployees.Position > 0) cmEmployees.Position--;

}

private void SetSelectedRow(DataGrid dataGrid, DataGrid.HitTestInfo hti)

{

try

{

int rowIndex = hti.Row;

DataTable table = (DataTable)dataGrid.DataSource;

if (rowIndex == table.Rows.Count) return;

DataRow selectedRow = table.Rows[rowIndex];

this.SelectedRow = selectedRow;

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, ex.Source);

}

}

private void dgEmployees_MouseUp(object sender, MouseEventArgs e)

{

DataGrid.HitTestInfo hti = dgEmployees.HitTest(e.X, e.Y); if ((hti.Row != -1) && (hti.Column != -1))

SetSelectedRow(dgEmployees, hti);

}

private void DesignDatagrid()

{

DataGridTableStyle employeesTableStyle = new DataGridTableStyle(); employeesTableStyle.MappingName = "employees";

DataGridTextBoxColumn employeeIDStyle = new DataGridTextBoxColumn(); employeeIDStyle.MappingName = "employeeID";

employeeIDStyle.Width = 50; employeeIDStyle.HeaderText = "ID";

DataGridTextBoxColumn lastNameStyle = new DataGridTextBoxColumn(); lastNameStyle.MappingName = "LastName";

lastNameStyle.Width = 120; lastNameStyle.HeaderText = "Фамилия";

DataGridTextBoxColumn firstNameStyle = new DataGridTextBoxColumn(); firstNameStyle.MappingName = "FirstName";

firstNameStyle.Width = 150; firstNameStyle.HeaderText = "Имя";

DataGridTextBoxColumn fatherNameStyle = new DataGridTextBoxColumn(); fatherNameStyle.MappingName = "amountToday";

fatherNameStyle.Width = 150; fatherNameStyle.HeaderText = "Отчество";

DataGridTextBoxColumn linkDataStyle = new DataGridTextBoxColumn(); linkDataStyle.MappingName = "linkData";

linkDataStyle.Width = 150; linkDataStyle.HeaderText = "Контакты";

DataGridTextBoxColumn birthDayStyle = new DataGridTextBoxColumn(); birthDayStyle.MappingName = "birthDay";

birthDayStyle.Width = 100; birthDayStyle.HeaderText = "День рождения";

DataGridTextBoxColumn directionIDStyle = new DataGridTextBoxColumn(); directionIDStyle.MappingName = "directionID";

directionIDStyle.Width = 60; directionIDStyle.HeaderText = "directionID";

DataGridTextBoxColumn addressStyle = new DataGridTextBoxColumn(); addressStyle.MappingName = "Address";

addressStyle.Width = 300; addressStyle.HeaderText = "Адрес";

DataGridTextBoxColumn notesStyle = new DataGridTextBoxColumn(); notesStyle.MappingName = "Notes";

notesStyle.Width = 100; notesStyle.HeaderText = "Notes";

DataGridTextBoxColumn passportSerialNumberStyle = new DataGridTextBoxColumn(); passportSerialNumberStyle.MappingName = "PassportSerialNumber"; passportSerialNumberStyle.Width = 100;

passportSerialNumberStyle.HeaderText = "Серия паспорта";

DataGridTextBoxColumn dataPrinyatiyaStyle = new DataGridTextBoxColumn(); dataPrinyatiyaStyle.MappingName = "DataP";

dataPrinyatiyaStyle.Width = 100; dataPrinyatiyaStyle.HeaderText = "DataP";

DataGridTextBoxColumn kStyle = new DataGridTextBoxColumn(); kStyle.MappingName = "K";

kStyle.Width = 100; kStyle.HeaderText = "K";

DataGridTextBoxColumn postStyle = new DataGridTextBoxColumn(); postStyle.MappingName = "Post";

postStyle.Width = 100; postStyle.HeaderText = "Post";

employeesTableStyle.GridColumnStyles.AddRange(new DataGridTextBoxColumn[] { employeeIDStyle, lastNameStyle, firstNameStyle, fatherNameStyle, linkDataStyle, birthDayStyle, directionIDStyle, addressStyle, notesStyle,

passportSerialNumberStyle,

dataPrinyatiyaStyle,

kStyle,

postStyle});

dgEmployees.TableStyles.Add(employeesTableStyle);

}

}

}

Листинг 11.9.

Форма frmGroup — форма добавления новой группы

Для добавления группы по выбранному курсу используется форма frmGroup. Добавляем элементы управления в соответствии с рис. 11.42.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]