📄 datadict.cpp
字号:
//---------------------------------------------------------------------------
#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 + -