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

📄 umain.cpp

📁  基于C++Builder 6的医药类单据打印系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "uMain.h"
#include "uCommon.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "frxClass"
#pragma link "frxPreview"
#pragma link "WinSkinData"
#pragma link "frxDBSet"
#pragma link "frxDesgn"
#pragma resource "*.dfm"
TfrmMain *frmMain;
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
    : TForm(Owner)
{
    //
    Caption = g_strAppTitle;
    Application->Title = g_strAppTitle;
    // 使用皮肤
    sknMain->Active = true;
    // 连接数据库
    con->Connected = false;
    con->ConnectionString = String("Provider=Microsoft.Jet.OLEDB.4.0;")
            + "Data Source=" + ExtractFilePath(ParamStr(0)) + "data.mdb;"
            + "Persist Security Info=False";
    con->Connected = true;
    //
    tblTemp->Open();
    // 默认为欢迎页面
    pgcMain->ActivePageIndex = 0;
    //
    lblAppTitle->Caption = g_strAppTitle;
    lblAppTitle->Left = (Width - lblAppTitle->Width) / 2;
    lblAppVer->Caption = g_strAppVer;
    lblAppVer->Left = lblAppTitle->Left + (lblAppTitle->Width - lblAppVer->Width);
    //
    dtpGenBillDate->Date = Now();
    dtpQueryStart->Date = Now();
    dtpQueryEnd->Date = Now();
    //
    // frReport->AddFunction("function NumToRMBStr(fValue: DOUBLE): String;", "Myfunction", "小写金额转大写的函数");
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnCloseOrderClick(TObject *Sender)
{
    pgcMain->ActivePageIndex = 0;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::miExitAppClick(TObject *Sender)
{
    Close();    
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::miShowOrderClick(TObject *Sender)
{
    pgcMain->ActivePageIndex = 1;
    if(!tblTemp->Active)
        tblTemp->Active = true;
    if(tblTemp->RecordCount)
    {
        tblTemp->First();
        while(!tblTemp->Eof)
            tblTemp->Delete();
    }
    CrnClearOrderForm();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::miShowQueryClick(TObject *Sender)
{
    pgcMain->ActivePageIndex = 2;
    btnQueryAllClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::miPrintBillClick(TObject *Sender)
{
    if(qryOrder->Active && qryOrder->RecordCount)
    {
        if(MessageBox(Handle,
                String().sprintf("确定要打印单据号为 %s 的这条记录吗? ",
                qryOrder->FieldByName("fBillNumber")->AsString).c_str(),
                g_strAppName.c_str(),
                MB_YESNO | MB_ICONQUESTION) == IDYES)
        {
            frReport->LoadFromFile(ExtractFilePath(ParamStr(0)) + "Report.fr3");

            ((TfrxMemoView *)frReport->FindObject("mmoTitle"))->Memo->Text =
                    qryOrder->FieldByName("fTitle")->AsString; // + "     ";;
            ((TfrxMemoView *)frReport->FindObject("mmoBillNumber"))->Memo->Text =
                    qryOrder->FieldByName("fBillNumber")->AsString; //  + "     ";;
            ((TfrxMemoView *)frReport->FindObject("mmoClient"))->Memo->Text =
                    qryOrder->FieldByName("fClient")->AsString; //  + "     ";;
            ((TfrxMemoView *)frReport->FindObject("mmoGenBillDate"))->Memo->Text =
                    FormatDateTime("yyyy-mm-dd",
                    qryOrder->FieldByName("fGenBillDate")->AsDateTime);
            ((TfrxMemoView *)frReport->FindObject("mmoOpera"))->Memo->Text =
                    qryOrder->FieldByName("fOpera")->AsString; //  + "     ";
            ((TfrxMemoView *)frReport->FindObject("mmoBillAuthor"))->Memo->Text =
                    qryOrder->FieldByName("fBillAuthor")->AsString; //  + "     ";
            ((TfrxMemoView *)frReport->FindObject("mmoDiscount"))->Memo->Text =
                    String("让利 ¥") + FormatFloat("#0.00#",
                    qryOrder->FieldByName("fDiscount")->AsFloat);

            ((TfrxMemoView *)frReport->FindObject("Memo30"))->Memo->Text =
                    qryOrder->FieldByName("fAddress")->AsString;
            ((TfrxMemoView *)frReport->FindObject("Memo32"))->Memo->Text =
                    qryOrder->FieldByName("fTel")->AsString;
            ((TfrxMemoView *)frReport->FindObject("Memo34"))->Memo->Text =
                    qryOrder->FieldByName("fGath")->AsString;
            ((TfrxMemoView *)frReport->FindObject("Memo36"))->Memo->Text =
                    qryOrder->FieldByName("fIssue")->AsString;
            ((TfrxMemoView *)frReport->FindObject("Memo38"))->Memo->Text =
                    qryOrder->FieldByName("fCheck")->AsString;
            ((TfrxMemoView *)frReport->FindObject("Memo40"))->Memo->Text =
                    qryOrder->FieldByName("fHotLine")->AsString;

            float fSumValue = 0.0;
            qryDetail->First();
            for(int i=0; i<qryDetail->RecordCount; i++)
            {
                fSumValue += qryDetail->FieldByName("fSum")->AsFloat;
                qryDetail->Next();
            }

            ((TfrxMemoView *)frReport->FindObject("mmoSumValue"))->Memo->Text =
                    FormatFloat("#0.00#", fSumValue);
            ((TfrxMemoView *)frReport->FindObject("mmoRMBStr"))->Memo->Text =
                    NumToRMBStr(fSumValue);
                    
            qryDetail->First();
            frReport->ShowReport();
        }
    }
    else
    {
        MessageBox(Handle, "请先选择一条订单再选择打印",
                g_strAppName.c_str(), MB_OK | MB_ICONINFORMATION);
        pgcMain->ActivePageIndex = 2;
        btnQueryAllClick(Sender);
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::miShowAboutClick(TObject *Sender)
{
    MessageBox(Handle,
            (g_strAppTitle + g_strAppVer + "\r\n"
            + "-------------------------\r\n"
            + "by CrazyCamel(CrazyCamel@126.com)\r\n"
            + "2006.12 - -#").c_str(),
            g_strAppName.c_str(),
            MB_OK | MB_ICONINFORMATION);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormKeyPress(TObject *Sender, char &Key)
{
    if(Key == VK_RETURN)
    {
        Key = 0;
        SelectNext(ActiveControl, true, true);
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::tmrClockTimer(TObject *Sender)
{
    stbMain->Panels->Items[1]->Text = FormatDateTime(" yyyy-mm-dd hh:nn:ss", Now());
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::CrnClearOrderForm()
{
    for(int i=0; i<ComponentCount; i++)
    {
        if(Components[i]->ClassNameIs("TLabeledEdit"))
            if(((TLabeledEdit *)Components[i])->Parent == tsOrder)
                ((TLabeledEdit *)Components[i])->Text = "";
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnContinueDetailClick(TObject *Sender)
{
    if(edtTitle->Text.Trim().Length() < 1)
    {
        MessageBox(Handle, "单据标题必须填写!",
                g_strAppName.c_str(),
                MB_OK | MB_ICONWARNING);
        pgcMain->ActivePageIndex = 1;
        return;
    }
    pgcMain->ActivePageIndex = 2;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnOrderInfoClick(TObject *Sender)
{
    pgcMain->ActivePageIndex = 1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnSaveAndPrintClick(TObject *Sender)
{
    qryOrder->Close();
    qryOrder->SQL->Text = String().sprintf(
            "select top 1 * from tblOrder where fBillNumber='%s'",
            edtBillNumber->Text);
    qryOrder->Open();
    if(qryOrder->RecordCount)
    {
        MessageBox(Handle, "已经存在相同单据号的订单记录!",
                g_strAppName.c_str(), MB_OK | MB_ICONWARNING);
        edtBillNumber->SetFocus();
        return;
    }
    if(tblTemp->RecordCount < 1)
    {
        MessageBox(Handle, "至少要输入一条药品明细记录!",
                g_strAppName.c_str(), MB_OK | MB_ICONWARNING);
        dbgrdTemp->SetFocus();
        return;
    }

    qryOrder->Append();

    qryOrder->FieldByName("fBillNumber")->AsString = edtBillNumber->Text;
    qryOrder->FieldByName("fGenBillDate")->AsDateTime = dtpGenBillDate->Date;
    qryOrder->FieldByName("fClient")->AsString = edtClient->Text;
    qryOrder->FieldByName("fOpera")->AsString = edtOpera->Text;
    qryOrder->FieldByName("fBillAuthor")->AsString = edtBillAuthor->Text;
    qryOrder->FieldByName("fAddress")->AsString = edtAddress->Text;
    qryOrder->FieldByName("fTel")->AsString = edtTel->Text;
    qryOrder->FieldByName("fGath")->AsString = edtGath->Text;
    qryOrder->FieldByName("fIssue")->AsString = edtIssue->Text;
    qryOrder->FieldByName("fCheck")->AsString = edtCheck->Text;
    qryOrder->FieldByName("fHotLine")->AsString = edtHotLine->Text;

⌨️ 快捷键说明

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