全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1000
推到 Plurk!
推到 Facebook!

如何改寫VCL元件

尚未結案
隆妹
一般會員


發表:6
回覆:12
積分:8
註冊:2003-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-09 17:15:36 IP:203.204.xxx.xxx 未訂閱
因為TADOQuery的SQL是AnsiString 因為傳入的字串包含UNICODE 要如何把Type改成WideString??    我改了ADODB.HPP裡TADOQuery的部分如下所示  
class DELPHICLASS TADOQuery;
class PASCALIMPLEMENTATION TADOQuery : public TCustomADODataSet 
{
        typedef TCustomADODataSet inherited;
        
private:
        TntClasses::TTntStrings* FSQL;
        //Classes::TStrings* FSQL;
        int FRowsAffected;
        TntClasses::TTntStrings* __fastcall GetSQL(void);
        //Classes::TStrings* __fastcall GetSQL(void);
        void __fastcall SetSQL(const TntClasses::TTntStrings* Value);
        //void __fastcall SetSQL(const Classes::TStrings* Value);
        
protected:
        //void __fastcall QueryChanged(TntSystem::Tobject* Sender);
        void __fastcall QueryChanged(System::TObject* Sender);
        
public:
        __fastcall virtual TADOQuery(TntClasses::TComponent* AOwner);
        //__fastcall virtual TADOQuery(Classes::TComponent* AOwner);
        __fastcall virtual ~TADOQuery(void);
        int __fastcall ExecSQL(void);
        __property int RowsAffected = {read=FRowsAffected, nodefault};
        
__published:
        __property CommandTimeout  = {default=30};
        __property DataSource ;
        __property EnableBCD  = {default=1};
        __property ParamCheck  = {default=1};
        __property Parameters ;
        __property Prepared  = {default=0};
        __property TntClasses::TTntStrings* SQL = {read=GetSQL, write=SetSQL};
        //__property Classes::TStrings* SQL = {read=GetSQL, write=SetSQL};
};    備註解的為原來的code
若將__property Classes::TStrings* SQL = {read=GetSQL, write=SetSQL};用成註解時
就會看不到TADOQuery裡面的SQL    能否請教是哪邊出了問題呢
而且能讓原來的AnsiString type 變成WideString type???
還是有其他要修改的部分呢     
發表人 - Gemi0305 於 2003/10/09 21:00:36
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-20 09:54:27 IP:211.75.xxx.xxx 未訂閱
你為何只改H檔 你還要重新Compiler VCL相關的Source Code 還有你確定你的程式只在NT架構下執行嗎? 9x有Unicode ,但除非你對Edit Control有特殊處理,否則你是不可能輸入Unicode的阿
隆妹
一般會員


發表:6
回覆:12
積分:8
註冊:2003-10-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-22 20:21:32 IP:203.204.xxx.xxx 未訂閱
引言: 你為何只改H檔 你還要重新Compiler VCL相關的Source Code 還有你確定你的程式只在NT架構下執行嗎? 9x有Unicode ,但除非你對Edit Control有特殊處理,否則你是不可能輸入Unicode的阿
謝謝你的回應 我有去下面的網頁下載有支援Unicode的元件 http://home.ccci.org/wolbrink/tnt/delphi_unicode_controls.htm 請問除了改H檔之外 應該還要在修改哪些相關檔案呢 已TADOQuery這為例 能否給於指教呢 不好意思想問問分數要怎樣給呢 給了就要結束這個問題嗎 發表人 - 隆妹 於 2003/10/22 20:24:28
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-22 20:54:04 IP:140.135.xxx.xxx 未訂閱
隆妹您好:  我來插花一下,如何給分可以參考下面連結  http://delphi.ktop.com.tw/topic.php?TOPIC_ID=22190 給分就表示您對這問題已有滿意的答覆了
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-23 10:48:30 IP:211.75.xxx.xxx 未訂閱
具我所知,TNT那套Component也只是繼承TCustomEdit後做些修改,如此做法在NT架構下確實能寫入與顯示Unicode,但在9x下就又恢復成原來的情況. 之前我也在找能在9x下正確顯示與寫入Unicode的Component,但都不便宜. 其實在9x底下顯示Unicode簡單,但輸入就難多了. 好在我們公司有專家,在其協助下最後是自己寫,
隆妹
一般會員


發表:6
回覆:12
積分:8
註冊:2003-10-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-23 10:56:38 IP:203.204.xxx.xxx 未訂閱
如要我自己寫好像太勉強了 畢竟還算是新手 看來只好在想想其他辦法來代替囉
solnone
中階會員


發表:2
回覆:97
積分:69
註冊:2003-05-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-01 02:38:16 IP:203.66.xxx.xxx 未訂閱
你可以改用 TADODataSet1 它的 CommandText 就是 WideString 就不用改了
隆妹
一般會員


發表:6
回覆:12
積分:8
註冊:2003-10-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-09 18:38:00 IP:203.204.xxx.xxx 未訂閱
不好意思 後來我也發現ADODataSet就能支援到了說 看來以後要多注意一下元件每項屬性囉
系統時間:2024-05-16 0:04:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!