RUS_-_Karejev_-_Razrabotka_Windows-prilozhenij
.pdfnamespace 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.
