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

RUS_-_Karejev_-_Razrabotka_Windows-prilozhenij

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

Рис. 11.42. Форма frmGroup

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

using System;

using System.Drawing; using System.Data;

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

namespace Manager

{

///<summary>

///Форма группы

///</summary>

public class frmGroup : System.Windows.Forms.Form

{

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

internal CurrencyManager cmEmployees; internal CurrencyManager cmGroupStatus;

private Manager.Forms.MainDataSet mainDataSet; private DataRow bindingRow;

internal DataRow BindingRow

{

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

}

public frmGroup(MainDataSet mainDataSet)

{

InitializeComponent(); this.mainDataSet = mainDataSet;

cmbStatus.DataSource = mainDataSet.GroupStatus; cmbStatus.DisplayMember = "StatusName";

cmGroupStatus = (CurrencyManager)this.BindingContext[mainDataSet, "GroupStatus"]; cmGroupStatus.Position = 0;

cmbEmployee.DataSource = mainDataSet.employees; cmbEmployee.DisplayMember = "EmployeeName";

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

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

}

public frmGroup(MainDataSet ds, DataRow bindingRow)

{

InitializeComponent(); mainDataSet = ds;

cmbStatus.DataSource = mainDataSet.GroupStatus; cmbStatus.DisplayMember = "StatusName";

cmGroupStatus = (CurrencyManager)this.BindingContext[mainDataSet, "GroupStatus"]; DataView dvStatus = (DataView)cmGroupStatus.List;

dvStatus.Sort = "StatusID";

int statusPos = dvStatus.Find(bindingRow["StatusID"]); cmbStatus.SelectedIndex = statusPos;

cmbEmployee.DataSource = mainDataSet.employees; cmbEmployee.DisplayMember = "EmployeeName";

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

dvEmployee.Sort = "employeeID";

int employeePos = dvEmployee.Find(bindingRow["employeeID"]); cmbEmployee.SelectedIndex = employeePos;

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

this.bindingRow = bindingRow;

int groupID = (int)bindingRow[0]; this.lblGroupID.Text += groupID.ToString();

DateTime beginDate = (DateTime)bindingRow[1]; this.dtpBeginDate.Value = beginDate;

DateTime endDate = (DateTime)bindingRow[2]; this.dtpEndDate.Value = endDate;

if (bindingRow.ItemArray[3] == null)

{

this.dtpBeginTime.Text = "";

}

else

{

DateTime beginTime = (DateTime)bindingRow[3]; this.dtpBeginTime.Text = beginTime.ToString("HH:mm");

}

if (bindingRow.ItemArray[4] == null)

{

this.dtpEndTime.Text = "";

}

else

{

DateTime endTime = (DateTime)bindingRow[4]; this.dtpEndTime.Text = endTime.ToString("HH:mm");

}

this.txtNotes.Text = bindingRow[9].ToString(); this.cmbClassNumber.Text = bindingRow[6].ToString();

}

protected override void Dispose( bool disposing )

{

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

}

private void InitializeComponent()

{

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

}

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

{

txtNotes.Focus();

}

// Проверка обновлений в элементах управлений

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

{

if (this.bindingRow != null)

if (dtpBeginDate.Value != (DateTime)this.bindingRow["beginDate"])

{

this.bindingRow["beginDate"] = DateTime.Parse(dtpBeginDate.Value.ToString("dd MMMM yyyy"));

}

}

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

{

if (this.bindingRow != null)

if (dtpEndDate.Value != (DateTime)this.bindingRow["endDate"])

{

this.bindingRow["endDate"] = DateTime.Parse(dtpEndDate.Value.ToString("dd MMMM yyyy"));

}

}

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

{

if (this.bindingRow != null)

if (dtpBeginTime.Value != (DateTime)this.bindingRow["beginTime"])

{

this.bindingRow["beginTime"] = DateTime.Parse(dtpBeginTime.Value.ToString("HH:mm"));

}

}

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

{

if (this.bindingRow != null)

if (dtpEndTime.Value != (DateTime)this.bindingRow["endTime"])

{

this.bindingRow["endTime"] = DateTime.Parse(dtpEndTime.Value.ToString("HH:mm"));

}

}

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

{

if (this.bindingRow != null)

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

{

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

}

}

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

{

if (this.bindingRow != null)

if (cmbClassNumber.Text != this.bindingRow["classNumber"].ToString())

{

this.bindingRow["classNumber"] = cmbClassNumber.Text;

}

}

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

{

if (this.bindingRow != null)

{

DataRow statusRow = this.bindingRow.GetParentRow("GroupStatusgroups"); if (cmbStatus.Text != statusRow["StatusName"].ToString())

{

this.bindingRow["StatusID"] = cmbStatus.SelectedIndex + 1;

}

}

}

}

}

Листинг 11.10.

Форма frmPaymentType — форма для произведения оплатыза услуги

На вкладке "Оплаты" при нажатии на одноименную кнопку появляется окно, в котором можно указывать вид расчетов. Добавляем элементы управления в соответствии с рис. 11.43.

Рис. 11.43. Форма frmPaymentType

Класс формы должен наследовать от интерфейса ISelectingForm.

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

using System;

using System.Drawing; using System.Collections;

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

using Manager.Forms;

namespace Manager

{

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

{

private MainDataSet mainDataSet = null;

public frmPaymentType(MainDataSet mainDataSet)

{

InitializeComponent(); this.mainDataSet = mainDataSet;

this.InitialDefaultSettings();

}

protected override void Dispose( bool disposing )

{

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

}

private void InitializeComponent()

{

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

}

private System.Windows.Forms.DataGrid dgPaymentType; private System.Windows.Forms.Button btnOK;

private System.Windows.Forms.Button bntCancel;

private DataRow selectedRow = null; public DataRow SelectedRow

{

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

}

private void InitialDefaultSettings()

{

dgPaymentType.DataSource = mainDataSet; dgPaymentType.DataMember = "payment_type";

dgPaymentType.Click += new EventHandler(dgPaymentType_Click); dgPaymentType.CurrentCellChanged += new EventHandler(dgPaymentType_CurrentCellChanged);

this.DesignDataGrid();

}

private void DesignDataGrid()

{

// Дизайн таблицы payment_type

DataGridTableStyle paymentTypeStyle = new DataGridTableStyle(); paymentTypeStyle.MappingName = "payment_type";

DataGridTextBoxColumn paymentTypeIDStyle = new DataGridTextBoxColumn(); paymentTypeIDStyle.MappingName = "payment_typeID"; paymentTypeIDStyle.Width = 50;

paymentTypeIDStyle.HeaderText = "ID";

DataGridTextBoxColumn paymentTypeNameStyle = new DataGridTextBoxColumn(); paymentTypeNameStyle.MappingName = "payment_typeName"; paymentTypeNameStyle.Width = 100;

paymentTypeNameStyle.HeaderText = "Name";

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

paymentTypeNoteStyle.Width = 200; paymentTypeNoteStyle.HeaderText = "Notes";

paymentTypeStyle.GridColumnStyles.AddRange( new DataGridTextBoxColumn[] { paymentTypeIDStyle, paymentTypeNameStyle, paymentTypeNoteStyle});

dgPaymentType.TableStyles.Add(paymentTypeStyle);

}

private void dgPaymentType_Click(object sender, EventArgs e)

{

if ((dgPaymentType.CurrentCell.RowNumber != -1) && (dgPaymentType.CurrentCell.ColumnNumber != -1)) dgPaymentType_CurrentCellChanged(dgPaymentType, new EventArgs());

}

private void dgPaymentType_CurrentCellChanged(object sender, EventArgs e)

{

try

{

this.SelectedRow = mainDataSet.payment_type.Rows[dgPaymentType.CurrentRowIndex];

}

catch (Exception ex)

{

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

}

}

}

}

Листинг 11.11.

Дополнительные классы

В проекте были использованы дополнительные классы, листинг которых приводится далее.

КлассManagerTreeNode(ManagerTreeNode.cs)

using System;

using System.Windows.Forms; using System.Data;

using System.Data.SqlClient;

namespace Manager

{

internal abstract class ManagerTreeNode : TreeNode

{

internal abstract void GetChilds();

}

}

Листинг 11.12.

КлассClientTreeNode(Clients.cs)

using System;

using System.Windows.Forms;

namespace Manager

{

internal class ClientTreeNode : ManagerTreeNode

{

internal ClientTreeNode()

{

}

private int clientID; internal int ClientID

{

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

}

private int groupID; internal int GroupID

{

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

}

private int courseID; internal int CourseID

{

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

}

private string firstName; internal string FirstName

{

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

}

private string lastName; internal string LastName

{

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

}

private string fatherName; internal string FatherName

{

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

}

private string linkData; internal string LinkData

{

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

}

private DateTime recorddate; internal DateTime RecordDate

{

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

}

private string note; internal string Note

{

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

}

private string paymentType; internal string PaymentType

{

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

}

private double clientSumm; internal double ClientSumm

{

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

}

internal override void GetChilds()

{

}

public override string ToString()

{

return lastName + " " + firstName + " " + fatherName;

}

}

}

Листинг 11.13.

КлассGroupTreeNode (Groups.cs)

using System;

using System.Collections; using System.Windows.Forms; using System.Data;

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

using Manager.Forms;

namespace Manager

{

internal class GroupTreeNode : ManagerTreeNode

{

private MainDataSet mainDataSet = null;

internal MainDataSet NDDataSet

{

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

}

private int courseID; internal int CourseID

{

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

}

private int groupID; internal int GroupID

{

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

}

private DateTime beginDate; internal DateTime BeginDate

{

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

}

private DateTime endDate; internal DateTime EndDate

{

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

}

private DateTime beginTime; internal DateTime BeginTime

{

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

}

private DateTime endTime; internal DateTime EndTime

{

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

}

private int clientsCount; internal int ClientsCount

{

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

}

private int classNumber; internal int ClassNumber

{

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

}

private int directionID; internal int DirectionID

{

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

}

private int employeeID; internal int EmployeeID

{

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

}

private string groupNote; internal string GroupNote

{

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

}

private int status; internal int Status

{

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

}

internal override void GetChilds()

{

DataView dvGroupClients = new DataView(this.NDDataSet.group_clients); dvGroupClients.RowFilter = "groupID = " + this.GroupID.ToString();

ClientTreeNode[] ctns = new ClientTreeNode[dvGroupClients.Count]; ClientTreeNode ctn = null;

int i = 0;

foreach(DataRowView drv in dvGroupClients)

{

DataRow clientRow = drv.Row.GetParentRow("clientsgroup_clients"); ctn = new ClientTreeNode();

ctn.ClientID = (int)clientRow["clientID"]; ctn.FirstName = clientRow["fname"].ToString(); ctn.LastName = clientRow["lname"].ToString(); ctn.FatherName = clientRow["fathName"].ToString(); ctn.LinkData = clientRow["linkData"].ToString(); ctn.RecordDate = (DateTime)clientRow["recordDate"]; ctn.Note = clientRow["note"].ToString(); ctn.PaymentType = clientRow["paymentType"].ToString();

ctn.Text = ctn.LastName + " " + ctn.FirstName + " " + ctn.FatherName; ctn.ImageIndex = 6;

ctn.ForeColor = Color.Teal;

ctn.Tag = clientRow;

ctns[i++] = ctn; ctn = null;

}

this.ForeColor = Color.Crimson; this.Nodes.AddRange(ctns);

}

}

}

Листинг 11.14.

КлассCourseTreeNode (Courses.cs)

using System;

using System.Collections; using System.Windows.Forms; using System.Data;

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

using Manager.Forms;

namespace Manager

{

internal class CourseTreeNode : ManagerTreeNode

{

private MainDataSet mainDataSet = null;

internal MainDataSet NDDataSet

{

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

}

private int directionID; internal int DirectionID

{

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

}

private int courseID; internal int CourseID

{

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

}

private string courseName; internal string CourseName

{

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

}

private decimal coursePrice; internal decimal CoursePrice

{

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

}

public override string ToString()

{

return courseName;

}

internal override void GetChilds()

{

DataView dvGroups = new DataView(this.NDDataSet.groups); dvGroups.RowFilter = "courseID = " + this.courseID.ToString();

GroupTreeNode[] gtns = new GroupTreeNode[dvGroups.Count]; GroupTreeNode gtn = null;

int i = 0;

foreach (DataRowView drv in dvGroups)

{

DataRow dr = drv.Row;

gtn = new GroupTreeNode();

gtn.NDDataSet = this.NDDataSet; gtn.CourseID = this.courseID; gtn.GroupID = (int)dr["groupID"];

gtn.BeginDate = (DateTime)dr["beginDate"]; gtn.EndDate = (DateTime)dr["endDate"]; gtn.BeginTime = (DateTime)dr["beginTime"]; gtn.EndTime = (DateTime)dr["endTime"];

gtn.ClientsCount = (int)dr["clientsCount"]; gtn.ClassNumber = (int)dr["classNumber"]; gtn.CourseID = (int)dr["courseID"]; gtn.EmployeeID = (int)dr["employeeID"]; gtn.GroupNote = dr["note"].ToString(); gtn.Status = (int)dr["statusID"];

gtn.Text = gtn.GroupID.ToString(); gtn.ImageIndex = 6;

if ((int)dr["StatusID"] == 1) // Группа набирается

{

gtn.ForeColor = Color.Red;

}

else if ((int)dr["StatusID"] == 2) // Группа обучается

{

gtn.ForeColor = Color.Green;

}

else if ((int)dr["StatusID"] == 3) // Группа закончила обучение

{

gtn.ForeColor = Color.Blue;

}

gtn.Tag = dr;

gtns[i++] = gtn; gtn = null;

}

this.ForeColor = Color.Green;

this.Nodes.AddRange(gtns);

}

}

}

Листинг 11.15.

КлассDirectionTreeNode(Directions.cs)

using System;

using System.Collections; using System.Windows.Forms; using System.Data;

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

using Manager.Forms;

namespace Manager

{

internal class DirectionTreeNode : ManagerTreeNode

{

private MainDataSet mainDataSet = null;

internal MainDataSet NDDataSet

{

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

}

private string directionName; internal string DirectionName

{

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

}

private string managerFirstName; internal string ManagerFirstName

{

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

}

private string managerLastName; internal string ManagerLastName

{

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

}

private string managerFatherName; internal string ManagerFatherName

{

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

}

private int directionID; internal int DirectionID

{

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

}

private string directionNote; internal string DirectionNote

{

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

}

private int managerID; internal int ManagerID

{

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

}

public override string ToString()

{

return directionName;

}

internal override void GetChilds()

{

DataView dvCourse = new DataView(this.NDDataSet.course); dvCourse.RowFilter = "directionID = " + this.directionID.ToString();

CourseTreeNode[] ctns = new CourseTreeNode[dvCourse.Count];

CourseTreeNode ctn = null;

int i = 0;

foreach (DataRowView drv in dvCourse)

{

DataRow dr = drv.Row;

ctn = new CourseTreeNode();

ctn.NDDataSet = this.NDDataSet; ctn.DirectionID = this.directionID;

ctn.CourseID = int.Parse(dr["courseID"].ToString()); ctn.CourseName = ctn.Text = dr["courseName"].ToString(); ctn.CoursePrice = (decimal)dr["priceNumber"];

ctn.ImageIndex = 10; ctn.ForeColor = Color.Green; ctn.GetChilds();

ctn.Tag = dr; // Теперь мы можем обращаться к элементам в ListView по свойству tag

ctns[i++] = ctn; ctn = null;

}

this.ForeColor = Color.RoyalBlue; this.Nodes.AddRange(ctns);

}

}

}

Листинг 11.16.

КлассCustomListItem(CustomListItem.cs)

using System; using System.Data;

namespace Manager

{

// Класс содержит строку для данного объекта из БД

public class CustomListItem : System.Windows.Forms.ListViewItem

{

public CustomListItem():base()

{

bindedRow = null;

}

public CustomListItem(string[] subItems, int imageIndex):base(subItems, imageIndex)

{

bindedRow = null;

}

private DataRow bindedRow; internal DataRow BindedRow

{

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

}

}

}

Листинг 11.17.

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