⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wage.cpp

📁 供销存软件
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "wage.h"
#include "DataModule.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TwageForm *wageForm;
//---------------------------------------------------------------------------
__fastcall TwageForm::TwageForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

void __fastcall TwageForm::SpeedButton1Click(TObject *Sender)
{
        str=Date1->Date.DateString();
        AnsiString str1=str.SubString(1,4);
        str=str.SubString(6,str.Length()-5);
        AnsiString str2=str.SubString(1,str.Pos('-')-1);
        str=str1+"年"+str2+"月";
        //ShowMessage(str);
        int n=Now().CurrentDate()-Date1->Date;
        if(n<0)
        {
                  ShowMessage("日期超限");
                  return;
        }
        DM->ADOQ->Close();
        DM->ADOQ->SQL->Clear();
        AnsiString query="select * from 工资信息表 where 月份='";
        query+=str;
        query+="'";
        DM->ADOQ->SQL->Add(query);
        DM->ADOQ->Open();
        if(DM->ADOQ->RecordCount==0)
        {
                DM->ADOQ->Last();
                DM->ADO_YG->Close();
                DM->ADO_YG->SQL->Clear();
                DM->ADO_YG->SQL->Add("select 姓名,部门 from 员工信息表");
                DM->ADO_YG->Open();
                while(!DM->ADO_YG->Eof){
                        DM->ADOQ->Insert();
                        DM->ADOQ->FieldByName("月份")->AsString=str;
                        DM->ADOQ->FieldByName("部门")->AsString=DM->ADO_YG->FieldByName("部门")->AsString.Trim();
                        DM->ADOQ->FieldByName("姓名")->AsString=DM->ADO_YG->FieldByName("姓名")->AsString.Trim();
                        DM->ADOQ->Post();
                        DM->ADO_YG->Next();
               }
        }
        DBGrid1->DataSource=DM->DS;
}
//---------------------------------------------------------------------------

void __fastcall TwageForm::BitBtn1Click(TObject *Sender)
{
        DM->ADOQ->First();
        while(!DM->ADOQ->Eof){
                 DM->ADOQ->Edit();
                 DBGrid1->Fields[5]->AsInteger=DBGrid1->Fields[2]->AsInteger+DBGrid1->Fields[3]->AsInteger-DBGrid1->Fields[4]->AsInteger;
                 DM->ADOQ->Next();
        }
}
//---------------------------------------------------------------------------

void __fastcall TwageForm::BitBtn3Click(TObject *Sender)
{
      Close();
}
//---------------------------------------------------------------------------

void __fastcall TwageForm::BitBtn2Click(TObject *Sender)
{
        Variant vExcelApp, vSheet;
        try
        {
                vExcelApp = Variant::CreateObject("Excel.Application");
        }
        catch(...)
        {
                MessageBox(0, "启动 Excel 出错, 可能是没有安装Excel.","DBGrid2Excel", MB_OK | MB_ICONERROR);
                return;
        }
        // Excel界面
        vExcelApp.OlePropertySet("Visible", true);
        // 新建一个工作表
        vExcelApp.OlePropertyGet("Workbooks").OleFunction("Add", 1); // 工作表
        // 操作这个工作表
        vSheet = vExcelApp.OlePropertyGet("ActiveWorkbook").OlePropertyGet("Sheets", 1);
        // 设置Excel文档的字体
        vSheet.OleProcedure("Select");
        vSheet.OlePropertyGet("Cells").OleProcedure("Select");
        vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Size", DBGrid1->Font->Size);
        vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Name",DBGrid1->Font->Name.c_str());
        vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("FontStyle", "常规");
        vSheet.OlePropertyGet("Cells", 1, 1).OleProcedure("Select");
        // 表格的行数
        int nRowCount(DBGrid1->DataSource->DataSet->RecordCount + 1);
        nRowCount = nRowCount < 2? 2: nRowCount;
        // 表格的列数
        int nColCount(DBGrid1->Columns->Count);
        nColCount = nColCount < 1? 1: nColCount;
        // 设置单元格的宽度
        for(int i=0; i<nColCount; i++)
        {
                int nColWidth = DBGrid1->Columns->Items[i]->Width;
                vExcelApp.OlePropertyGet("Columns", i + 1).OlePropertySet("ColumnWidth", nColWidth / 7);
        }
        // 先将列名写入Excel表格
        for(int j=0; j<DBGrid1->Columns->Count; j++)
        {
                // 标题行的行高
                vExcelApp.OlePropertyGet("Rows", 1).OlePropertySet("RowHeight", 20);
                vSheet.OlePropertyGet("Cells", 1, j + 1).OlePropertySet("Value", DBGrid1->Columns->Items[j]->FieldName.c_str());
                // 设置列名单元格的背景色
                Variant vInter = vSheet.OlePropertyGet( "Cells", 1, j + 1).OlePropertyGet("Interior");
                vInter.OlePropertySet("ColorIndex", 15); // 灰色
                vInter.OlePropertySet("Pattern", 1); // xlSolid
                vInter.OlePropertySet("PatternColorIndex", -4105); // xlAutomatic
        }
        // 将DBGrid中的数据写入Excel表格
        DBGrid1->DataSource->DataSet->First();
        for(int i=0; i<nRowCount; i++)
        {
                // 普通数据行的行高16
                vExcelApp.OlePropertyGet("Rows", i + 2).OlePropertySet("RowHeight", 16);
                // 63 63 72 75 6E 2E 63 6F 6D
                for(int j=0; j<DBGrid1->Columns->Count; j++)
                {
                        vSheet.OlePropertyGet("Cells", i + 2, j + 1).OlePropertySet("Value",
                        DBGrid1->DataSource->DataSet->FieldByName(DBGrid1->Columns->Items[j]->FieldName)->AsString.c_str());
                }
                DBGrid1->DataSource->DataSet->Next();
        }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -