📄 roomstatus.h
字号:
this->ClientSize = System::Drawing::Size(688, 382);
this->Controls->Add(this->dgrdRoom);
this->Controls->Add(this->groupBox1);
this->Name = S"RoomStatus";
this->Text = S"房态管理";
this->Activated += new System::EventHandler(this, RoomStatus_Activated);
this->groupBox1->ResumeLayout(false);
(__try_cast<System::ComponentModel::ISupportInitialize * >(this->dgrdRoom))->EndInit();
this->ResumeLayout(false);
}
//-----------------------设置表格各列的属性-----------------------
void DataGridStateControl()
{
//组建房间状态表
//确定房间状态表的列数
int ColumnNum = 0;
for(int i = 0;i < this->FloorNum;i++)
{
if(ColumnNum <= System::Convert::ToInt32(this->RoomNumPerFloor->Item[i]))
{
ColumnNum = System::Convert::ToInt32(this->RoomNumPerFloor->Item[i]);
}
}
//向房间状态表添加列
String* temp = S"";
for(int i = 0;i < ColumnNum;i++)
{
this->RoomTable->Columns->Add(i.ToString(),__typeof(System::Windows::Forms::Label));//temp->GetType());
}
//向房间状态表添加行
for(int i = 0;i < this->FloorNum;i++)
{
String* FloorID;
String* Filter;
DataRow* rows[];
DataRow* row;
FloorID = this->ds->Tables->Item[S"楼层信息"]->Rows->Item[i]->Item[S"楼层编号"]->ToString();
Filter = String::Format(S"楼层编号 = {0}",FloorID);
rows = this->ds->Tables->Item[S"客房信息"]->Select(Filter);
row = this->RoomTable->NewRow();
for(int j = 0;j < rows->Length;j++)
{
System::Windows::Forms::Label* GridLabel = new System::Windows::Forms::Label();
//
// GridLabel
//
GridLabel->ImageList = this->imageList1;
GridLabel->Text = rows[j]->Item[S"客房编号"]->ToString();
GridLabel->Width = 48;
GridLabel->Height = 48;
GridLabel->ImageAlign = System::Drawing::ContentAlignment::MiddleCenter;
GridLabel->TextAlign = System::Drawing::ContentAlignment::BottomCenter;
//GridLabel->BorderStyle = BorderStyle::Fixed3D;
GridLabel->Enabled = false;
GridLabel->Hide();
String* _text = rows[j]->Item[S"状态"]->ToString();
if(String::Compare(_text,S"空房") == 0)
{
GridLabel->ImageIndex = 2;
}
if(String::Compare(_text,S"将到") == 0)
{
GridLabel->ImageIndex = 0;
}
if(String::Compare(_text,S"将离") == 0)
{
GridLabel->ImageIndex = 1;
}
if(String::Compare(_text,S"住房") == 0)
{
GridLabel->ImageIndex = 4;
}
if(String::Compare(_text,S"自用") == 0)
{
GridLabel->ImageIndex = 5;
}
if(String::Compare(_text,S"维修") == 0)
{
GridLabel->ImageIndex = 3;
}
row->Item[j] = GridLabel;
}
this->RoomTable->Rows->Add(row);
}
this->dgrdRoom->DataSource = this->RoomTable;
DataGridTableStyle* ts = new DataGridTableStyle();
ts->MappingName = this->RoomTable->TableName;
DataGridImageColumn* aImageColumn;
ts->AllowSorting = false;
ts->AlternatingBackColor = Color::LightGray;
int numCols = this->RoomTable->Columns->Count;
for(int i = 0;i < numCols;i++)
{
aImageColumn = new DataGridImageColumn(this->RoomTable->Columns->Item[i]->ColumnName,this->RoomTable,this->dgrdRoom,this->imageList1);
aImageColumn->MappingName = this->RoomTable->Columns->Item[i]->ColumnName;
aImageColumn->HeaderText = this->RoomTable->Columns->Item[i]->ColumnName;
aImageColumn->NullText = S"";
ts->GridColumnStyles->Add(aImageColumn);
}
this->dgrdRoom->TableStyles->Add(ts);
}
private: System::Void btnRefresh_Click(System::Object * sender, System::EventArgs * e)
{
System::Windows::Forms::Label* label;
//清理原有数据
this->ds->Clear();
for(int i = 0;i < this->RoomTable->Rows->Count;i++)
{
for(int j = 0;j < this->RoomTable->Columns->Count;j++)
{
Object* val = this->RoomTable->Rows->Item[i]->Item[j];
if(val != System::DBNull::Value)
{
label = __try_cast<System::Windows::Forms::Label*>(val);
label->Dispose();
}
}
}
this->RoomTable->Clear();
this->RoomTable->Dispose();
this->RoomTable = new DataTable();
this->RoomNumPerFloor->Clear();
//查询客房信息
this->strSQL = S"Select * from 客房信息";
this->strTableName = S"客房信息";
this->MyDataBase->SelectDataBase(this->RoomAdapter,this->ds,this->strSQL,this->strTableName);
//填充[客房类型]的选项
String* tempSQL = S"Select distinct 类型名称,类型编号 from 客房类型";
this->MyDataBase->SelectDataBase(this->ds,tempSQL,S"客房类型");
//添加"全部"选项
DataRow* row = this->ds->Tables->Item[S"客房类型"]->NewRow();
row->Item[S"类型名称"] = S"全部类型";
row->Item[S"类型编号"] = S"All";
this->ds->Tables->Item[S"客房类型"]->Rows->Add(row);
this->cmbRoomType->DataSource = this->ds->Tables->Item[S"客房类型"];
this->cmbRoomType->DisplayMember = S"类型名称";
this->cmbRoomType->ValueMember = S"类型编号";
//填充[楼层]的选项
tempSQL = S"Select 楼层名称,楼层编号 from 楼层信息 Order By 楼层编号";
this->MyDataBase->SelectDataBase(this->ds,tempSQL,S"楼层信息");
//计算每层楼的房间数
this->FloorNum = this->ds->Tables->Item[S"楼层信息"]->Rows->Count;
String* FloorID;
String* Filter;
DataRow* rows[];
for(int i = 0;i < this->FloorNum;i++)
{
FloorID = this->ds->Tables->Item[S"楼层信息"]->Rows->Item[i]->Item[S"楼层编号"]->ToString();
Filter = String::Format(S"楼层编号 = {0}",FloorID);
rows = this->ds->Tables->Item[S"客房信息"]->Select(Filter);
this->RoomNumPerFloor->Add(__box(rows->Length));
}
this->DataGridStateControl();
this->dgrdRoom->Invalidate();
}
//更改客房状态
private: System::Void btnChangeStatus_Click(System::Object * sender, System::EventArgs * e)
{
int row = this->dgrdRoom->CurrentRowIndex;
int col = this->dgrdRoom->CurrentCell.ColumnNumber;
if(row > this->RoomTable->Rows->Count - 1)
return;
Object* val = this->RoomTable->Rows->Item[row]->Item[col];
if(val == System::DBNull::Value)
return;
System::Windows::Forms::Label* label = __try_cast<System::Windows::Forms::Label*>(val);
String* Filter = String::Format(S"客房编号 = '{0}'",label->Text);
DataRow* rows[] = this->ds->Tables->Item[S"客房信息"]->Select(Filter);
if(rows->Length > 0)
{
if(this->radioAboard->Checked == true)
{
rows[0]->Item[S"状态"] = this->radioAboard->Text;
}
else if(this->radioAbort->Checked == true)
{
rows[0]->Item[S"状态"] = this->radioAbort->Text;
}
else if(this->radioBlank->Checked == true)
{
rows[0]->Item[S"状态"] = this->radioBlank->Text;
}
else if(this->radioFixing->Checked == true)
{
rows[0]->Item[S"状态"] = this->radioFixing->Text;
}
else if(this->radioRent->Checked == true)
{
rows[0]->Item[S"状态"] = this->radioRent->Text;
}
else if(this->radioSelfUse->Checked == true)
{
rows[0]->Item[S"状态"] = this->radioSelfUse->Text;
}
//更新数据库
this->MyDataBase->UpdateDataBase(this->RoomAdapter,this->ds,S"客房信息");
btnRefresh_Click(sender,e);
}
}
//显示选中单元的房态信息
private: System::Void dgrdRoom_Click(System::Object * sender, System::EventArgs * e)
{
int row = this->dgrdRoom->CurrentRowIndex;
int col = this->dgrdRoom->CurrentCell.ColumnNumber;
if(row > this->RoomTable->Rows->Count - 1)
return;
Object* val = this->RoomTable->Rows->Item[row]->Item[col];
if(val == System::DBNull::Value)
return;
System::Windows::Forms::Label* label = __try_cast<System::Windows::Forms::Label*>(val);
switch(label->ImageIndex)
{
case 0:
this->radioAboard->Checked = true;
break;
case 1:
this->radioAbort->Checked = true;
break;
case 2:
this->radioBlank->Checked = true;
break;
case 3:
this->radioFixing->Checked = true;
break;
case 4:
this->radioRent->Checked = true;
break;
case 5:
this->radioSelfUse->Checked = true;
break;
}
//显示客房编号
this->tBoxRoomID->Text = label->Text;
//显示客房类型
String* Filter = String::Format(S"客房编号 = '{0}'",label->Text);
DataRow* rows[] = this->ds->Tables->Item[S"客房信息"]->Select(Filter);
if(rows->Length > 0)
{
this->cmbRoomType->SelectedValue = rows[0]->Item[S"类型编号"];
}
}
//选择客房信息
private: System::Void dgrdRoom_DoubleClick(System::Object * sender, System::EventArgs * e)
{
if(IsCallByOther)
{
//如果有其他窗口调用,则返回客房信息
int row = this->dgrdRoom->CurrentRowIndex;
int col = this->dgrdRoom->CurrentCell.ColumnNumber;
if(row > this->RoomTable->Rows->Count - 1)
return;
Object* val = this->RoomTable->Rows->Item[row]->Item[col];
if(val == System::DBNull::Value)
return;
System::Windows::Forms::Label* label = __try_cast<System::Windows::Forms::Label*>(val);
this->strRoomID = label->Text;
String* Filter = String::Format(S"客房编号 = '{0}'",label->Text);
DataRow* rows[] = this->ds->Tables->Item[S"客房信息"]->Select(Filter);
if(rows->Length > 0)
{
this->cmbRoomType->SelectedValue = rows[0]->Item[S"类型编号"];
}
this->strRoomType = this->cmbRoomType->Text;
switch(label->ImageIndex)
{
case 0:
this->strRoomStatus = this->radioAboard->Text;
break;
case 1:
this->strRoomStatus = this->radioAbort->Text;
break;
case 2:
this->strRoomStatus = this->radioBlank->Text;
break;
case 3:
this->strRoomStatus = this->radioFixing->Text;
break;
case 4:
this->strRoomStatus = this->radioRent->Text;
break;
case 5:
this->strRoomStatus = this->radioSelfUse->Text;
break;
}
this->DialogResult = DialogResult::OK;
}
}
//当窗体被激活时更新客房状态
private: System::Void RoomStatus_Activated(System::Object * sender, System::EventArgs * e)
{
btnChangeStatus_Click(sender,e);
}
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -