📄 commfunction.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "CommFunction.h"
#include "SDComboBox.h"
#include "SDEdit.h"
#include "fpanel.h"
#include "waitmsg.h"
#include "gvar.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
AnsiString arrControlGroup[]={"TEdit","TSDComboBox","TCheckBox","TCustomMemo"
,"TDateEdit"};
TControl *TempControl;
const int CONTROLTYPECOUNT=5;
TWaitMsg *FWaitMsg;
__fastcall TControlGroup::TControlGroup()
:TObject()
{
EditAct=true;
BrowseAct=true;
NewAct=true;
}
void __fastcall TControlGroup::SetControlState(bool State)
{
AnsiString CN;
CN=UpperCase((AnsiString)(Compon)->ClassName());
if (CN=="TSDEDIT")
//dynamic_cast<TSDEdit *>(Compon)->ReadOnly=State;
dynamic_cast<TSDEdit *>(Compon)->Enabled=!State;
else if (CN=="TSDCOMBOBOX")
{
dynamic_cast<TSDComboBox *>(Compon)->ReadOnly=State;
dynamic_cast<TSDComboBox *>(Compon)->Enabled=!State;
}
else if (CN=="TCHECKBOX")
dynamic_cast<TCheckBox *>(Compon)->Enabled=!State;
else if (CN=="TSDGRID")
dynamic_cast<TSDGrid *>(Compon)->Enabled=!State;
else if (CN=="TRADIOBUTTON")
dynamic_cast<TRadioButton *>(Compon)->Enabled=!State;
else if (CN=="TBITBTN")
dynamic_cast<TBitBtn *>(Compon)->Enabled=!State;
else if (CN=="TSPEEDBUTTON")
dynamic_cast<TSpeedButton *>(Compon)->Enabled=!State;
else if (CN=="TDATEEDIT")
dynamic_cast<TDateEdit *>(Compon)->Enabled=!State;
else if (CN=="TPANEL")
dynamic_cast<TPanel *>(Compon)->Enabled=!State;
else if (CN=="TMEMO")
dynamic_cast<TMemo *>(Compon)->ReadOnly=State;
else if (CN=="TEDIT")
//dynamic_cast<TEdit *>(Compon)->ReadOnly=State;
dynamic_cast<TEdit *>(Compon)->Enabled=!State;
else if (CN=="TCOMBOBOX")
dynamic_cast<TComboBox *>(Compon)->Enabled=!State;
else if (CN=="TSTRINGGRID")
{
if(State)
dynamic_cast<TStringGrid *>(Compon)->Options>>goEditing;
else
dynamic_cast<TStringGrid *>(Compon)->Options<<goEditing;
}
}
void __fastcall TControlGroup::ChangeCotnrolStates(TControlAction Action)
{
switch(Action)
{
case caAddHead:
if(mSection==1)
SetControlState(NewAct);
if(mSection==2)
SetControlState(true);
break;
case caEditHead:
if (mSection==1)
SetControlState(EditAct);
if(mSection==2)
SetControlState(true);
break;
case caAddBill:
case caGenBill:
case caAddDetail:
if(mSection==1)
SetControlState(true);
if(mSection==2)
SetControlState(NewAct);
break;
case caEditDetail:
case caEditBill:
if(mSection==1)
SetControlState(true);
if (mSection==2)
SetControlState(EditAct);
break;
case caSave:
case caCancel:
SetControlState(BrowseAct);
}
}
/////////////////////////TControlGroups Object Implement////////////////
void __fastcall TControlGroups::AddComponent(int mSection,bool NewAct,bool EditAct,bool BrowseAct,
TComponent *Control,AnsiString Key)
{
int i;
AnsiString CN;
TControlGroup *TempGroup;
CN=UpperCase((AnsiString)Control->ClassName());
if (CN=="TSDEDIT" || CN=="TSDCOMBOBOX" || CN=="TEDIT" || CN=="TDATEEDIT" || CN=="TRADIOBUTTON" ||
CN=="TCOMBOBOX" || CN=="TCHECKBOX" || CN=="TMEMO" ||CN=="TSDGRID" || CN=="TBITBTN" ||
CN=="TPANEL" || CN=="TSPEEDBUTTON" || CN=="TSTRINGGRID" )
{
TempGroup=new TControlGroup;
TempGroup->Section =mSection;
TempGroup->NewAction =NewAct;
TempGroup->EditAction =EditAct;
TempGroup->BrowseAction =BrowseAct;
TempGroup->Control =Control;
TempGroup->Key =Key;
int i=CtlGroup.Length;
CtlGroup.Length=i+1;
CtlGroup[i]=TempGroup;
}
else if (CN=="TGROUPBOX")
{
TGroupBox *TempGb;
TempGb=(TGroupBox *)Control;
for (i=0;i<TempGb->ControlCount;i++)
AddComponent(mSection,NewAct,EditAct,BrowseAct,TempGb->Controls[i],TempGb->Controls[i]->Name);
}
else if(CN=="TRADIOGROUP")
{
TRadioGroup *TempRg;
TempRg=(TRadioGroup *)Control;
for (i=0;i<TempRg->ControlCount;i++)
AddComponent(mSection,NewAct,EditAct,BrowseAct,TempRg->Controls[i],TempRg->Controls[i]->Name);
}
else if(CN=="TPANEL")
{
TPanel *TempPa;
TempPa=(TPanel *)Control;
for (i=0;i<TempPa->ControlCount;i++)
AddComponent(mSection,NewAct,EditAct,BrowseAct,TempPa->Controls[i],TempPa->Controls[i]->Name);
}else if(CN=="TTABSHEET")
{
TTabSheet *TempSheet;
TempSheet=(TTabSheet *)Control;
for (i=0;i<TempSheet->ControlCount;i++)
AddComponent(mSection,NewAct,EditAct,BrowseAct,TempSheet->Controls[i],TempSheet->Controls[i]->Name);
}else if(CN=="TPAGECONTROL")
{
TPageControl *TempPageControl;
TempPageControl=(TPageControl *)Control;
for (i=0;i<TempPageControl->ControlCount;i++)
AddComponent(mSection,NewAct,EditAct,BrowseAct,TempPageControl->Controls[i],TempPageControl->Controls[i]->Name);
}else if(CN=="TFLOATPANEL")
{
TFloatPanel *TempPanel;
TempPanel=(TFloatPanel *)Control;
for (i=0;i<TempPanel->ControlCount;i++)
AddComponent(mSection,NewAct,EditAct,BrowseAct,TempPanel->Controls[i],TempPanel->Controls[i]->Name);
}
}
//if not find the element matched the Key ,
//it will Delete the last element;??_Kallen 2000.5.24
void __fastcall TControlGroups::Remove(AnsiString Key)
{
bool Found=false;
for (int i=0;i<CtlGroup.Length-1;i++)
{
if(Key.UpperCase()==CtlGroup[i]->Key.UpperCase())
Found=true;
if(Found)
CtlGroup[i]=CtlGroup[i+1];
}
CtlGroup.Length =CtlGroup.Length -1;
}
void __fastcall TControlGroups::Clear(void)
{
CtlGroup.Length =0;
}
TControlGroup *__fastcall TControlGroups::GetControl(int Index)
{
return CtlGroup[Index];
}
int __fastcall TControlGroups::GetLength()
{
return CtlGroup.Length ;
}
void __fastcall TControlGroups::SetControlState(TControlAction Action)
{
int i;
for (i=0;i<CtlGroup.Length;i++)
CtlGroup[i]->ChangeCotnrolStates(Action);
}
__fastcall TControlGroups::TControlGroups()
{
Clear();
}
/////////////////////// Comm Function implement here /////////////////////
void SetGridWidth(AnsiString FormName,TSDGrid *Grid,AnsiString IniFile)
{
char S[256];
AnsiString mTemp;
int Len,i;
int CurCol;
CurCol=1;
mTemp="";
Len=GetPrivateProfileString(FormName.c_str(),Grid->Name.c_str(),"",S,256,IniFile.c_str());
for (i=0;i<Len;i++)
{
if (S[i]==',')
{
if (CurCol<Grid->ColCount)
Grid->ColWidths[CurCol]=StrToInt(mTemp);
mTemp="";
CurCol=CurCol+1;
}
else
mTemp=mTemp+S[i];
}
if (mTemp!="")
Grid->ColWidths[CurCol]=StrToInt(mTemp);
}
void WriteGridWidth(AnsiString FormName,TSDGrid *Grid,AnsiString IniFile)
{
int i;
AnsiString iStr;
for (i=1;i<Grid->ColCount;i++)
{
iStr=iStr+IntToStr(Grid->ColWidths[i])+",";
}
iStr.Delete(iStr.Length(),1);
WritePrivateProfileString(FormName.c_str(),Grid->Name.c_str(),iStr.c_str(),IniFile.c_str());
}
void FillComboBox(TSDComboBox *Cbx,AnsiString SqlStr,AnsiString Item0,AnsiString Item1,AnsiString Item2,
AnsiString Item3,AnsiString Item4,AnsiString Item5,AnsiString Item6,AnsiString Key)
{
int ErrNum;
TComResultSet *m_Rst;
try
{
if(!SqlStr.IsEmpty())
{
m_Rst=NewResultSet();
m_Rst->Open(SqlStr,Key);
}
else
m_Rst=g_sdRsGoods;
Cbx->ClearAll();
m_Rst->MoveFirst();
while(m_Rst->Eof==0)
{
if(Item1.IsEmpty())
Cbx->AddItems(m_Rst->FieldByName(Item0));
else if(Item2.IsEmpty())
Cbx->AddItems(m_Rst->FieldByName(Item0),m_Rst->FieldByName(Item1));
else if(Item3.IsEmpty())
Cbx->AddItems(m_Rst->FieldByName(Item0),m_Rst->FieldByName(Item1),
m_Rst->FieldByName(Item2));
else if(Item4.IsEmpty())
Cbx->AddItems(m_Rst->FieldByName(Item0),m_Rst->FieldByName(Item1),
m_Rst->FieldByName(Item2),m_Rst->FieldByName(Item3));
else if(Item5.IsEmpty())
Cbx->AddItems(m_Rst->FieldByName(Item0),m_Rst->FieldByName(Item1),
m_Rst->FieldByName(Item2),m_Rst->FieldByName(Item3),
m_Rst->FieldByName(Item4));
else if(Item6.IsEmpty())
Cbx->AddItems(m_Rst->FieldByName(Item0),m_Rst->FieldByName(Item1),
m_Rst->FieldByName(Item2),m_Rst->FieldByName(Item3),
m_Rst->FieldByName(Item4),m_Rst->FieldByName(Item5));
else
Cbx->AddItems(m_Rst->FieldByName(Item0),m_Rst->FieldByName(Item1),
m_Rst->FieldByName(Item2),m_Rst->FieldByName(Item3),
m_Rst->FieldByName(Item4),m_Rst->FieldByName(Item5),
m_Rst->FieldByName(Item6));
m_Rst->MoveNext();
}
Cbx->ItemIndex =Cbx->Items->Count >0 ? 0:-1;
}
__finally
{
if(!SqlStr.IsEmpty())
delete m_Rst;
}
}
void FillEdit(TSDEdit *Cbx,AnsiString SqlStr,AnsiString Item0,AnsiString Item1,AnsiString Item2,
AnsiString Item3,AnsiString Item4,AnsiString Item5,AnsiString Item6,AnsiString Key)
{
int ErrNum;
TComResultSet *m_Rst;
try
{
if(SqlStr.IsEmpty())
throw Exception("SQL语句不能为空");
m_Rst=NewResultSet();
m_Rst->Open(SqlStr,Key);
Cbx->ClearAll();
m_Rst->MoveFirst();
while(m_Rst->Eof==0)
{
if(Item1.IsEmpty())
Cbx->AddItems(m_Rst->FieldByName(Item0));
else if(Item2.IsEmpty())
Cbx->AddItems(m_Rst->FieldByName(Item0),m_Rst->FieldByName(Item1));
else if(Item3.IsEmpty())
Cbx->AddItems(m_Rst->FieldByName(Item0),m_Rst->FieldByName(Item1),
m_Rst->FieldByName(Item2));
else if(Item4.IsEmpty())
Cbx->AddItems(m_Rst->FieldByName(Item0),m_Rst->FieldByName(Item1),
m_Rst->FieldByName(Item2),m_Rst->FieldByName(Item3));
else if(Item5.IsEmpty())
Cbx->AddItems(m_Rst->FieldByName(Item0),m_Rst->FieldByName(Item1),
m_Rst->FieldByName(Item2),m_Rst->FieldByName(Item3),
m_Rst->FieldByName(Item4));
else if(Item6.IsEmpty())
Cbx->AddItems(m_Rst->FieldByName(Item0),m_Rst->FieldByName(Item1),
m_Rst->FieldByName(Item2),m_Rst->FieldByName(Item3),
m_Rst->FieldByName(Item4),m_Rst->FieldByName(Item5));
else
Cbx->AddItems(m_Rst->FieldByName(Item0),m_Rst->FieldByName(Item1),
m_Rst->FieldByName(Item2),m_Rst->FieldByName(Item3),
m_Rst->FieldByName(Item4),m_Rst->FieldByName(Item5),
m_Rst->FieldByName(Item6));
m_Rst->MoveNext();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -