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

📄 datadict.cpp

📁 速达开源ERP系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "DataDict.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "BillBaseForm"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"
TfrmDataDict *frmDataDict;
//---------------------------------------------------------------------------
__fastcall TfrmDataDict::TfrmDataDict(TComponent* Owner)
        : TBillBaseForm(Owner,euSdTable,"")
{

}

void __fastcall TfrmDataDict::InitEditControl()
{
    ClientGroup->AddComponent(1,false,false,true, FloatPanel1,FloatPanel1->Name);
    ClientGroup->AddComponent(2,false,false,true,FloatPanel2,FloatPanel2->Name);
    ClientGroup->AddComponent(1,false,false,false,seTableName,seTableName->Name);
    FillComboBox(scFieldReferTable,"SELECT TABLENAME FROM SDTABLE order by tablename","TABLENAME");
    scFieldReferTable->ItemIndex=-1;
    FillComboBox(scTableType,"SELECT ClassName,CLASSID FROM SDCLASS","ClassName","CLASSID");
}

void __fastcall TfrmDataDict::ClearControl(int Section,bool BringToNext)
{
    if (Section==1)
    {
       if (! BringToNext)
       {
         seTableName->Text="";
         seTableDesc->Text="";
         scTableType->ItemIndex=0;
         seTableClassId->Text=scTableType->ItemData[1];
         seTableMDate->Text="";
         chkTableSysFlg->Checked=false;
       }
       sgDataDict->RowCount=1;
       if(seTableName->Enabled==true && FloatPanel1->Enabled==true)
         seTableName->SetFocus();
    }
    else if (Section==2)
    {
        if (!BringToNext)
        {
            seFieldNo->Text=AnsiString(comServer->ItemCount+1);
            seFieldName->Text="";
            seFieldDesc->Text="";
            scFieldType->ItemIndex=0;
            seFieldWidth->Text="18";
            seFieldDecimal->Text="0";

            seFieldMemo->Text="";
            scHandWriting->ItemIndex=0;
            scFieldStyle->ItemIndex=0;
            seFieldDefault->Text ="";
            chkFieldPrimaryKey->Checked=false;
            chkFieldNull->Checked=false;
            chkFieldIdentity->Checked=false;

            chkFieldForeignKey->Checked=false;
            scFieldReferTable->ItemIndex=-1;
            scFieldReferTable->Enabled=false;
            scFieldReferField->Clear();
            scFieldReferField->ItemIndex=-1;
            scFieldReferField->Enabled=false;
            chkFieldAutoNo->Checked=false;
            scFieldNumbering->ItemIndex=0;
            scFieldNumbering->Enabled=false;
            if(seFieldNo->Visible==true&&FloatPanel2->Visible==true)
              seFieldNo->SetFocus();
        }
    }

}
void __fastcall TfrmDataDict::GetDataFromComObject(int Section)
{
    AnsiString mStr;
    if(Section==1){
       seTableName->Text=GetTableValue(fiTableName);
       seTableDesc->Text=GetTableValue(fiTableDesc);
       mStr=GetTableValue(fiTableClassID);
       scTableType->LocateKey(mStr);
       seTableClassId->Text=scTableType->ItemData[1];
       seTableMDate->Text=GetTableValue(fiTableMDate);
       chkTableSysFlg->Checked=GetTableValue(fiTableSysFlag)=="1";
    }
    else{
       seFieldNo->Text=GetFieldValue(fiFieldNo);
       seFieldName->Text=GetFieldValue(fiFieldName);
       seFieldDesc->Text=GetFieldValue(fiFieldDesc);

       mStr=GetFieldValue(fiFieldType);
       scFieldType->LocateKey(mStr);

       seFieldWidth->Text=GetFieldValue(fiFieldWidth);
       seFieldDecimal->Text=GetFieldValue(fiFieldDecimal);

       mStr=GetFieldValue(fiFieldHandWriting);
       scHandWriting->LocateKey(mStr);
       mStr=GetFieldValue(fiFieldStyle);
       scFieldStyle->LocateKey(mStr);
       seFieldDefault->Text=GetFieldValue(fiFieldDefault);
       seFieldMemo->Text=GetFieldValue(fiFieldMemo);

       chkFieldPrimaryKey->Checked=GetFieldValue(fiFieldPrimaryKey)=="1";
       chkFieldNull->Checked=GetFieldValue(fiFieldNull)=="1";
       chkFieldIdentity->Checked=GetFieldValue(fiFieldIdentity)=="1";

       chkFieldForeignKey->Checked=GetFieldValue(fiFieldForeignKey)=="1";
       scFieldReferTable->Text=GetFieldValue(fiFieldReferTableName);
       scFieldReferField->Text=GetFieldValue(fiFieldReferFieldName);
       chkFieldAutoNo->Checked=GetFieldValue(fiFieldAutoNo)=="1";
       mStr=GetFieldValue(fiFieldNumbering);
       scFieldNumbering->LocateKey(mStr);
     }
}

void __fastcall TfrmDataDict::SendDataToComObject(int Section)
{
        if (Section==1){
          SetTableValue(fiTableName,seTableName->Text );
          SetTableValue(fiTableDesc,seTableDesc->Text);
          SetTableValue(fiTableClassID,scTableType->ItemData[1]);
          SetTableValue(fiTableSysFlag,chkTableSysFlg->Checked ? "1":"0");
        }
        else{
          SetFieldValue(fiFieldTableName,seTableName->Text);
          SetFieldValue(fiFieldNo,seFieldNo->Text);
          SetFieldValue(fiFieldName,seFieldName->Text);
          SetFieldValue(fiFieldDesc,seFieldDesc->Text);
          SetFieldValue(fiFieldType,scFieldType->ItemData[1]);
          SetFieldValue(fiFieldWidth,seFieldWidth->Text);
          SetFieldValue(fiFieldDecimal,seFieldDecimal->Text);

          SetFieldValue(fiFieldForeignKey,chkFieldForeignKey->Checked ? "1":"0");
          SetFieldValue(fiFieldReferTableName,scFieldReferTable->Text);
          SetFieldValue(fiFieldReferFieldName,scFieldReferField->Text);
          SetFieldValue(fiFieldAutoNo,chkFieldAutoNo->Checked?"1":"0");
          SetFieldValue(fiFieldNumbering,scFieldNumbering->ItemData[1]);

          SetFieldValue(fiFieldMemo,seFieldMemo->Text);
          SetFieldValue(fiFieldHandWriting,scHandWriting->ItemData[1]);
          SetFieldValue(fiFieldStyle,scFieldStyle->ItemData[1]);
          SetFieldValue(fiFieldPrimaryKey,chkFieldPrimaryKey->Checked ? "1":"0");
          SetFieldValue(fiFieldNull,chkFieldNull->Checked ? "1":"0");
          SetFieldValue(fiFieldIdentity,chkFieldIdentity->Checked ? "1":"0");
          SetFieldValue(fiFieldDefault,seFieldDefault->Text);
        }
}

void __fastcall TfrmDataDict::WaitUserInput(int Section)
{
        if (Section ==1)
           seTableName->SetFocus();
        else
        {
           sgDataDict->Visible=false;
           sgDataDict->Align=alNone;
           FloatPanel2->Visible=true;
           FloatPanel2->Align=alClient;
           seFieldNo->SetFocus();
           if(CurrentState==caAddDetail||CurrentState==caAddBill)
            btnOK->Enabled=true;
           else
            btnOK->Enabled=false;
        }

}

void __fastcall TfrmDataDict::RefreshGridData(int mAction)
{
        AnsiString ItemStr;
        int i;
        switch(mAction){
        case 0:
             ItemStr="\t"+GetFieldValue(fiFieldNo)+"\t"+GetFieldValue(fiFieldName)+"\t"+
                GetFieldValue(fiFieldDesc)+"\t"+GetFieldValue(fiFieldType)+"\t"+GetFieldValue(fiFieldWidth)+"\t"+
                GetFieldValue(fiFieldDecimal)+"\t"+((GetFieldValue(fiFieldPrimaryKey)=="1")?AnsiString("*"):AnsiString(""))+"\t"+
                GetFieldValue(fiFieldReferTableName)+"\t"+GetFieldValue(fiFieldReferFieldName);
             sgDataDict->AddItem(ItemStr);
             break;
        case 1:
             i=sgDataDict->Row;
             ItemStr="\t"+GetFieldValue(fiFieldNo)+"\t"+GetFieldValue(fiFieldName)+"\t"+
                GetFieldValue(fiFieldDesc)+"\t"+GetFieldValue(fiFieldType)+"\t"+GetFieldValue(fiFieldWidth)+"\t"+
                GetFieldValue(fiFieldDecimal)+"\t"+((GetFieldValue(fiFieldPrimaryKey)=="1")?AnsiString("*"):AnsiString(""))+"\t"+
                GetFieldValue(fiFieldReferTableName)+"\t"+GetFieldValue(fiFieldReferFieldName);
             sgDataDict->RemoveItem(i);
             sgDataDict->AddItem(ItemStr,i);
             break;

        case 2:
            sgDataDict->RemoveItem(sgDataDict->Row);
        }
}

void __fastcall TfrmDataDict::DisplayBill()
{
        GetDataFromComObject(1);
        FillGridWithData();
}

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

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

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

      sgDataDict->RowCount=1;
      for (i=0;i<comServer->ItemCount;i++)
      {
          comServer->LocateItemByIndex(i);
          RefreshGridData(0);
      }
}


AnsiString __fastcall TfrmDataDict::GetTableValue(int Index)
{
        return ReadFieldValue(comServer,Index);
}

AnsiString __fastcall TfrmDataDict::GetFieldValue(int Index)
{
        return ReadItemValue(comServer,Index);
}

void __fastcall TfrmDataDict::SetTableValue(int Index,AnsiString Value)
{
       WriteFieldValue(comServer,Index,Value);
}

void __fastcall TfrmDataDict::SetFieldValue(int Index,AnsiString Value)
{
       WriteItemValue(comServer,Index,Value);
}
//---------------------------------------------------------------------------


void __fastcall TfrmDataDict::btnOKClick(TObject *Sender)
{
    if (CurrentState==caAddDetail||CurrentState==caAddBill)
    {
      if(DetailState==caAddDetail)
        comServer->AddItem();
      SendDataToComObject(2);
      comServer->AddToObject();
      ClearControl(2,false);
    }
    else
      ChangeToBrowseState(true);
}

void __fastcall TfrmDataDict::ChangeToBrowseState(bool Browse)

⌨️ 快捷键说明

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