zoukankan      html  css  js  c++  java
  • C++Builder中的一些公共函数

     

    //C++Builder中的一些公共函数

    //根据SQL语句返回记录集

    int __fastcall TGlobalFun::GetRecordCount(AnsiString sql)

    {

         int ret=0;

          ptquery->Active = false;

         ptquery->SQL->Text =  sql;

         try

         {

                  ptquery->Open();

                  ret= ptquery->RecordCount;

         }catch (Exception &e)

         {

                  Application->ShowException(&e);

                  ret = 0;

         }

          ptquery->Active = false;

         return ret;

    }

     

    //将表中的数据填充到下拉列表框中

     

    void __fastcall TGlobalFun::FillComBox(TComboBox *cmb,AnsiString tableName,AnsiString colName)

    {

         if(tableName == "" || colName == "") return;

         AnsiString sql;

         sql = "select distinct  "+colName+"  as col from "+tableName;

         ptquery->Active = false;

         ptquery->SQL->Text =  sql;

         ptquery->Open();

         if(ptquery->RecordCount<1) return;

         //Ìî³ä

         cmb->Clear();

         cmb->Items->Add("");

         ptquery->RecNo = 1;

         do

         {

           if(ptquery->FieldByName("col")->AsString != "")

            cmb->Items->Add(ptquery->FieldByName("col")->AsString);

            ptquery->Next();

         }

         while(!ptquery->Eof);

         ptquery->Active = false;

       return;

    }

     

    //应用举例

    //调用全局函数FillComBoxcmbSafeItem为下拉列表框的name , P_Safety为表名,SafeItem / /为列名

    g_Global.FillComBox(cmbSafeItem,"P_Safety","SafeItem");

     

    对于下拉列表框还有个属性stytle:设置下拉列表的样式,比如只能选择等

     

    //检查数据的合法性:

     

    //控制txtCarId控件只能输入数字和退格 需要引进#include <Qt.hpp>头文件

    void __fastcall TFrm_Permit::txtCarIdKeyPress(TObject *Sender, char &Key)

    {

       if(( Key >= Key_0)&&(Key <= Key_9) || (Key =='\b'))

       {

       }

       else

       {

           Key = Key_Escape;

       }

    }

     

    //控制txtBuyMoney控件只能输入数字和退格和小数点

    void __fastcall TFrm_Permit::txtBuyMoneyKeyPress(TObject *Sender,

          char &Key)

    {

       if (( Key >= Key_0)&&(Key <= Key_9) || (Key == '.') ||(Key =='\b' ))

       {

       }

       else

       {

           Key = Key_Escape;

       }

    }

     

    //函数CheckEmpty

    bool    __fastcall TGlobalFun::CheckEmpty(TWinControl *com,AnsiString str,const int param)

     {

        bool ret=true;

        AnsiString value="";

        int len=0;

        //获取控件中要检验的值

     

        if(AnsiString(com->ClassName())== "TEdit")

         {

            TEdit *pt = (TEdit *)com;

            value = pt->Text;

            len   = pt->MaxLength/2;

         } else

         if(AnsiString(com->ClassName())== "TComboBox")

         {

           TComboBox *cb = (TComboBox *)com;

            value = cb->Text;

            len   = cb->MaxLength/2;

         }

          //检查是否为空

           if ((param & _EMPTY) == 0x01){

                if(value == "")

                {

                    MessageBox(NULL,(str+"不能为空!").c_str(),"提示",MB_OK|MB_ICONERROR);

                   if(AnsiString(com->Parent->ClassName()) != "TForm")

                      com->Parent->Show();

                    com->SetFocus();

                    return false;

                }

            }

            if(value == "") return true;

            //检查是否是数字

            if ((param & _NUM) == 0x02)

            {

                try{

                     StrToInt(value);

                }catch(...)

                {

                    MessageBox(NULL,(str+"请用数字输入!").c_str(),"提示",MB_OK|MB_ICONERROR);

                    if(AnsiString(com->Parent->ClassName()) != "TForm")

                      com->Parent->Show();

                    com->SetFocus();

                    return false;

                }

            }

            //检查是否float类型

            if ((param & _FLOAT) == 0x04)

            {

                try{

                     StrToFloat(value);

                }catch(...)

                {

                    MessageBox(NULL,(str+"输入不正确!").c_str(),"提示",MB_OK|MB_ICONERROR);

                    if(AnsiString(com->Parent->ClassName()) != "TForm")

                      com->Parent->Show();

                    com->SetFocus();

                    return false;

                }

            }

            //检查数据是否为Date类型

            if ((param & _DATE) == 0x08)

            {

                try{

                     StrToDate(value);

                }catch(...)

                {

                    MessageBox(NULL,(str+"请用正确的日期格式输入!").c_str(),"提示",MB_OK|MB_ICONERROR);

                    if(AnsiString(com->Parent->ClassName()) != "TForm")

                      com->Parent->Show();

                    com->SetFocus();

                    return false;

                }

            }

             //检查长度是否合法,根据控件的maxlength

            if ((param & _LENGTH) == 0x10)

            {

                if(WideString(value).Length() > len)

                {

                    MessageBox(NULL,(str+"输入长度不合法!").c_str(),"提示",MB_OK|MB_ICONERROR);

                    if(AnsiString(com->Parent->ClassName()) != "TForm")

                      com->Parent->Show();

                    com->SetFocus();

                    return false;

                }

            }

        return ret;

     }

     

    //应用举例

        if(g_Global.CheckEmpty(txtItemMoney,"±£ÏÕ½ð¶î",_EMPTY)==false) return;

    if(g_Global.CheckEmpty(txtBeginTime,"ÆðʼÈÕÆÚ",_DATE)==false) return;

     

    //获得TableName表中FieldsName字段的新编号

    int     __fastcall TGlobalFun::GetNewID(AnsiString TableName,AnsiString FieldsName)

    {

        AnsiString  strSQL;

        int         mNewID = 0,mID;

     

        strSQL = "select " + FieldsName + " from " + TableName +" where DepID = '" + g_Global.g_SysInfor.DepID + "' order by " + FieldsName + " Asc";

        ptquery->Active     = false;

        ptquery->SQL->Text  =  strSQL;

        try

        {

              ptquery->Open();

              if(ptquery->RecordCount>0)

              {

                    ptquery->RecNo = 1;

                    mNewID = 0;

                    do

                    {

                        mID = ptquery->FieldByName(FieldsName)->AsInteger;

                        if (mNewID != mID)

                            break;

                        mNewID++;

                        ptquery->Next();

                    }

                    while(!ptquery->Eof);

              }

        }

        catch(...)

        {;}

       ptquery->Active = false;

       return mNewID;

    }

     

  • 相关阅读:
    多重背包POJ1276不要求恰好装满 poj1014多重背包恰好装满
    哈理工1053完全背包
    求最小公倍数与最大公约数的函数
    Bus Pass ZOJ 2913 BFS 最大中取最小的
    POJ 3624 charm bracelet 01背包 不要求装满
    HavelHakimi定理(判断一个序列是否可图)
    z0j1008Gnome Tetravex
    ZOJ 1136 Multiple BFS 取模 POJ 1465
    01背包 擎天柱 恰好装满 zjut(浙江工业大学OJ) 1355
    zoj 2412 水田灌溉,求连通分支个数
  • 原文地址:https://www.cnblogs.com/long/p/226273.html
Copyright © 2011-2022 走看看