RUS_-_Karejev_-_Razrabotka_Windows-prilozhenij
.pdf
Рис. 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;
В проекте были использованы дополнительные классы, листинг которых приводится далее.
Класс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; }
}
