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

📄 vdatadict.cpp

📁 速达开源ERP系统
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "VDataDict.h"
#include "func.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "BillBaseForm"
#pragma link "DateEdit"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"

TfrmVDataDict *frmVDataDict;
//---------------------------------------------------------------------------
__fastcall TfrmVDataDict::TfrmVDataDict(TComponent* Owner)
        : TBillBaseForm(Owner,euSdView,"")
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmVDataDict::InitEditControl()
{
    ClientGroup->AddComponent(1,false,false,true, FloatPanel1,FloatPanel1->Name);
    ClientGroup->AddComponent(2,false,false,true,FloatPanel2,FloatPanel2->Name);
    ClientGroup->AddComponent(1,false,true,false,seViewName,seViewName->Name);
    FillComboBox(scViewClassID,"SELECT ClassName=ClassID+Space(18-len(ClassID))+'|'+ClassName,CLASSID FROM SDCLASS","ClassName","CLASSID");
        scVFieldType->ClearAll();
        scVFieldType->AddItems("C-字符型","C");
        scVFieldType->AddItems("F-浮点型","F");
        scVFieldType->AddItems("L-长整型","L");
        scVFieldType->AddItems("N-整型","N");
        scVFieldType->AddItems("S-短整型","S");
        scVFieldType->AddItems("D-日期型(字符)","D");
        scVFieldType->AddItems("B-布尔型","B");
        scVFieldType->AddItems("M-文本型","M");
        scVFieldType->AddItems("T-时间型","T");

}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::ClearControl(int Section,bool BringToNext)
{
    if (Section==1)
    {
       if (! BringToNext)
       {
         seViewName->Text="";
         seViewDesc->Text="";
         scViewClassID->ItemIndex=0;
         lbViewDate->Caption=FormatDateTime("YYYY-MM-DD",Date());
         memViewWhere->Text="";
         memViewGroup->Text="";
         memViewTable->Text="";
         memViewOrder->Text="";
       }
       sgVDataDict->RowCount=1;
       if(seViewName->Enabled==true && FloatPanel1->Enabled==true)
         seViewName->SetFocus();
    }
    else if (Section==2)
    {
        if (!BringToNext)
        {
            seVFieldNo->Text=AnsiString(comServer->ItemCount+1);
            seVFieldName->Text="";
            seVFieldDesc->Text="";
            scVFieldType->ItemIndex=0;
            seVFieldWidth->Text="18";
            seVFieldScale->Text="0";

            memVFieldMemo->Text="";
            memVFieldExpr->Text ="";
            chkVFieldFlg->Checked=false;
//            if(seVFieldNo->Visible==true&&FloatPanel2->Visible==true)
//              seVFieldNo->SetFocus();
        }
    }

}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::GetDataFromComObject(int Section)
{
    AnsiString mStr;
    if(Section==1){
       seViewName->Text=GetHeadValue(fiViewName);
       seViewDesc->Text=GetHeadValue(fiViewDesc);
       scViewClassID->LocateKey(GetHeadValue(fiViewClassID));
       lbViewDate->Caption=GetHeadValue(fiViewDate);
       memViewWhere->Text=GetHeadValue(fiViewWhere);
       memViewGroup->Text=GetHeadValue(fiViewGroup);
       memViewTable->Text=GetHeadValue(fiViewTable);
       memViewOrder->Text=GetHeadValue(fiViewOrder);

    }
    else{
       seVFieldNo->Text=GetDetailValue(fiVFieldNo);
       seVFieldName->Text=GetDetailValue(fiVFieldName);
       seVFieldDesc->Text=GetDetailValue(fiVFieldDesc);
       scVFieldType->LocateKey(GetDetailValue(fiVFieldType));
       seVFieldWidth->Text=GetDetailValue(fiVFieldWidth);
       seVFieldScale->Text=GetDetailValue(fiVFieldScale);
       memVFieldMemo->Text=GetDetailValue(fiVFieldMemo);
       chkVFieldFlg->Checked=GetDetailValue(fiVFieldFlg)=="1";
       memVFieldExpr->Text=GetDetailValue(fiVFieldExpr);
       memVFieldMemo->Text=GetDetailValue(fiVFieldMemo);
     }
}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::SendDataToComObject(int Section)
{
        if (Section==1){
          SetHeadValue(fiViewName,seViewName->Text );
          SetHeadValue(fiViewDesc,seViewDesc->Text);
          SetHeadValue(fiViewClassID,scViewClassID->ItemData[1]);
          SetHeadValue(fiViewWhere,memViewWhere->Text);
          SetHeadValue(fiViewGroup,memViewGroup->Text);
          SetHeadValue(fiViewTable,memViewTable->Text);
          SetHeadValue(fiViewOrder,memViewOrder->Text);

        }
        else{
          SetDetailValue(fiVFieldView,seViewName->Text);
          SetDetailValue(fiVFieldNo,seVFieldNo->Text);
          SetDetailValue(fiVFieldName,seVFieldName->Text);
          SetDetailValue(fiVFieldDesc,seVFieldDesc->Text);
          SetDetailValue(fiVFieldType,scVFieldType->ItemData[1]);
          SetDetailValue(fiVFieldWidth,seVFieldWidth->Text);
          SetDetailValue(fiVFieldScale,seVFieldScale->Text);

          SetDetailValue(fiVFieldMemo,memVFieldMemo->Text);
          SetDetailValue(fiVFieldType,scVFieldType->ItemData[1]);
          SetDetailValue(fiVFieldFlg,chkVFieldFlg->Checked ? "1":"0");
          SetDetailValue(fiVFieldExpr,memVFieldExpr->Text);
        }
}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::WaitUserInput(int Section)
{
        if (Section ==1)
         {
          if(seViewName->Enabled)
           seViewName->SetFocus();
          }
        else
        {
           sgVDataDict->Visible=false;
           sgVDataDict->Align=alNone;
           FloatPanel2->Visible=true;
           FloatPanel2->Align=alClient;
           seVFieldNo->SetFocus();
           if(CurrentState==caAddDetail||CurrentState==caAddBill)
            btnOK->Enabled=true;
           else
            btnOK->Enabled=false;
        }

}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::RefreshGridData(int mAction)
{

        AnsiString ItemStr;
        int i;
        switch(mAction){
        case 0:
             ItemStr="\t"+GetDetailValue(fiVFieldNo)+"\t"+GetDetailValue(fiVFieldName)+"\t"+
                GetDetailValue(fiVFieldDesc)+"\t"+GetDetailValue(fiVFieldType)+"\t"+GetDetailValue(fiVFieldWidth)+"\t"+
                GetDetailValue(fiVFieldScale)+"\t"+((GetDetailValue(fiVFieldFlg)=="1")?AnsiString("*"):AnsiString(""));
             sgVDataDict->AddItem(ItemStr);
             break;
        case 1:
             i=sgVDataDict->Row;
             ItemStr="\t"+GetDetailValue(fiVFieldNo)+"\t"+GetDetailValue(fiVFieldName)+"\t"+
                GetDetailValue(fiVFieldDesc)+"\t"+GetDetailValue(fiVFieldType)+"\t"+GetDetailValue(fiVFieldWidth)+"\t"+
                GetDetailValue(fiVFieldScale)+"\t"+((GetDetailValue(fiVFieldFlg)=="1")?AnsiString("*"):AnsiString(""));
             sgVDataDict->RemoveItem(i);
             sgVDataDict->AddItem(ItemStr,i);
             break;

        case 2:
            sgVDataDict->RemoveItem(sgVDataDict->Row);
        }
}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::DisplayBill()
{
        GetDataFromComObject(1);
        FillGridWithData();
}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::GetBill(AnsiString BillID)
{
       int eRow;

       eRow=comServer->Find("ViewName='"+BillID+"'");
       if (eRow>0)      //found this bill
       {
           DisplayBill();
       }
       else
           if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
           {
               AddHeadRecord();
           }
}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::FillGridWithData()
{
      int i;
      AnsiString ItemStr;

      sgVDataDict->RowCount=1;
      if(comServer->RecordCount<1)
       return;
      for (i=0;i<comServer->ItemCount;i++)
      {
          comServer->LocateItemByIndex(i);
          RefreshGridData(0);
      }
       comServer->LocateItemByIndex(0);
}
//---------------------------------------------------------------------------

AnsiString __fastcall TfrmVDataDict::GetHeadValue(int Index)
{
        WideString S;
        S = ReadFieldValue(comServer,Index);
        return S;
}
//---------------------------------------------------------------------------

AnsiString __fastcall TfrmVDataDict::GetDetailValue(int Index)
{
        WideString S;
        S = ReadItemValue(comServer,Index);
        return S;
}
//---------------------------------------------------------------------------
void __fastcall TfrmVDataDict::SetHeadValue(int Index,AnsiString Value)
{
       WriteFieldValue(comServer,Index,WideString(Value));
}
//---------------------------------------------------------------------------
void __fastcall TfrmVDataDict::SetDetailValue(int Index,AnsiString Value)
{
       WriteItemValue(comServer,Index,WideString(Value));
}
//---------------------------------------------------------------------------



void __fastcall TfrmVDataDict::FormShow(TObject *Sender)
{
//       InitEditControl();
       ClearControl(1,false);
       ClearControl(2,false);
       TBillBaseForm::MoveToFirst();
       ChangeToBrowseState(true);
}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::sgVDataDictSelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
    if (ARow == 0)
    {
       return;
    }
    comServer->LocateItemByKey(WideString(sgVDataDict->TextMatrix[ARow][1]));
    if (!comServer->Eof)
    {
       GetDataFromComObject(2);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::sgVDataDictDblClick(TObject *Sender)
{
    int iRow;
    iRow=sgVDataDict->Row;
    if (iRow == 0)
    {
       return;
    }
    comServer->LocateItemByKey(WideString(sgVDataDict->TextMatrix[iRow][2]));

    if (!comServer->Eof)
    {
       GetDataFromComObject(2);
       sgVDataDict->Visible=false;
       FloatPanel2->Visible=true;
       btnCancel->Enabled=true;
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::ChangeToBrowseState(bool Browse)
{
       FloatPanel2->Visible=false;
       FloatPanel2->Align=alNone;
       btnOK->Enabled=false;
       btnCancel->Enabled=false;
       sgVDataDict->Visible=true;
       sgVDataDict->Align=alClient;
//       sgVDataDict->SetFocus();
}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::btnOKClick(TObject *Sender)
{

   if ((CurrentState==caAddDetail)||(CurrentState==caAddBill))
       {
          if(DetailState==caAddDetail)
            comServer->AddItem();
           SendDataToComObject(2);
           comServer->AddToObject();
           ClearControl(2,false);
       }
       else
       ChangeToBrowseState(false);
}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::btnCancelClick(TObject *Sender)
{
        CancelChange();
}
//---------------------------------------------------------------------------
int __fastcall TfrmVDataDict::GetMaxItemLineValue()
{
     comServer->LocateItemByIndex(comServer->ItemCount-1);
     return StrToInt(GetDetailValue(fiSogdLine))+1;
}
void __fastcall TfrmVDataDict::RefreshUpdateData(int MsgSrc,int MsgType)
{
}
void __fastcall TfrmVDataDict::scVFieldTypeExit(TObject *Sender)
{
    switch(scVFieldType->ItemIndex)
    {
      case 0:
        seVFieldWidth->Enabled=true;
        seVFieldWidth->Text="18";
        seVFieldScale->Enabled=false;
        seVFieldScale->Text="0";
        break;
      case 1:
        seVFieldWidth->Enabled=true;
        seVFieldWidth->Text="12";
        seVFieldScale->Enabled=true;
        seVFieldScale->Text="0";
        break;
      case 2:
        seVFieldWidth->Enabled=false;
        seVFieldWidth->Text="10";
        seVFieldScale->Enabled=false;
        seVFieldScale->Text="0";
        break;
      case 3:
        seVFieldWidth->Enabled=false;
        seVFieldWidth->Text="5";
        seVFieldScale->Enabled=false;
        seVFieldScale->Text="0";
        break;
      case 4:
        seVFieldWidth->Enabled=false;
        seVFieldWidth->Text="1";
        seVFieldScale->Enabled=false;
        seVFieldScale->Text="0";
        break;
      case 5:
        seVFieldWidth->Enabled=false;
        seVFieldWidth->Text="10";
        seVFieldScale->Enabled=false;
        seVFieldScale->Text="0";
        break;
      case 6:
        seVFieldWidth->Enabled=false;
        seVFieldWidth->Text="1";
        seVFieldScale->Enabled=false;
        seVFieldScale->Text="0";
        break;
      case 7:
        seVFieldWidth->Enabled=false;
        seVFieldWidth->Text="10";
        seVFieldScale->Enabled=false;
        seVFieldScale->Text="0";
        break;
      case 8:
        seVFieldWidth->Enabled=false;
        seVFieldWidth->Text="8";
        seVFieldScale->Enabled=false;
        seVFieldScale->Text="0";
        break;
    }

}
//---------------------------------------------------------------------------

void __fastcall TfrmVDataDict::seViewNameKeyDown(TObject *Sender,
      WORD &Key, TShiftState Shift)
{
    if(Key==13 && CurrentState==caNormal)
    {
      comServer->LocateByKey(WideString(seViewName->Text));
      DisplayBill();
    }  
}
//---------------------------------------------------------------------------



⌨️ 快捷键说明

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