2
因为很多窗体需要使用到基本相同的控件还有部分方法,我做了一个模板,因为我发现所有的窗体都是传入的Sql 语句不同而已,我在基类写了一个public的构造方法如下:

__fastcall Tfrm_HTTemplate::Tfrm_HTTemplate(const String& s_ShowSql)
       : TForm(Owner)
{
       #ifdef AUTO_PTRDB

               std::auto_ptr hzy_db(new hzy_Database(HeTongMain->SqlServerAddress,HeTongMain->SqlServerUserName,HeTongMain->SqlServerPassword,HeTongMain->SqlServerDatabase));
       #else
               hzy_db = new hzy_Database(HeTongMain->SqlServerAddress,HeTongMain->SqlServerUserName,HeTongMain->SqlServerPassword,HeTongMain->SqlServerDatabase);
               _adoq = new TADOQuery(this);
               //_adoq->Connection = hzy_db->
       #endif
               hzy_db->hzy_OpenSQL(_adoq,s_ShowSql);
               this->DataSource1->DataSet = _adoq;
               flag = true;
               for(int i = 0 ; i < suiDBGrid1->Columns->Count ; i++){
                       suiDBGrid1->Columns->Items[i]->Width=65;
               }
}


然后我开始写我的上层类,都是如下方法:

class Tfrm_HTTTiaoKuanXinXi : public Tfrm_HTTemplate

然后,开始使用了

String s_SelectTiaoKuanXinXiSql = "SELECT HT_ID AS 合同ID FROM HT_TiaoKuanXX";
       frm_HTTTiaoKuanXinXi = new Tfrm_HTTTiaoKuanXinXi(s_SelectTiaoKuanXinXiSql);
       frm_HTTTiaoKuanXinXi->ShowModal();
       delete frm_HTTTiaoKuanXinXi;

竟然告诉我没有这个方法!!!!

显然是C++的基础知识了,构造函数从基类继承的话,应该有了那个构造函数的,可是就是不可见,或者我访问不到,不晓得是C++的问题还是........



虽然我通过另外的方法解决的,但是这个问题我很奇怪!大家发表一下!


下面是精简代码,麻烦感兴趣的兄弟帮我测试一下




Tags: | 引用(0)
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]