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

📄 commfunction.cpp

📁 速达开源ERP系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//---------------------------------------------------------------------------
#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 + -