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

寫多語系程式,更換DBGrid 的顯示ColumnTitle 問題

缺席
weiliching
初階會員


發表:53
回覆:77
積分:31
註冊:2003-12-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-11-18 16:38:13 IP:211.23.xxx.xxx 訂閱
我應了一個副程式,用來改變DBGrid 的Title顯示, 目的是要做多語系的Title 
目前拿先將程式改的比較簡單點 用'M_Column1' 改成M_Test 顯示
目前 DBGrid1 是對映DataSource1 到AdoQuery1 上,
var M_Component:TComponent;
K,i,j:Integer;
begin

M_Component := Application.Components[i].FindComponent('DBGrid1');
if (M_Component is TDBGrid) then Begin
for j := 0 to -1 TDBGrid(M_Component).FieldCount do begin
if TDBGrid(M_Component).Fields[j].FieldName= 'M_Column1' then begin
TDBGrid(M_Component).Columns[j].Title.Caption := 'M_Test';
Break;
end;//
end; // for j := 0 to -1 DBGrid1.FieldCount do
end; // if (M_Component is TDBGrid) then Begin


發生的問題
1. 假如我的AdoQuery1 是沒有open , 他就會 TDBGrid(M_Component).FieldCount = 0
將無法執行更換 DBGrid1的Column[j].Title.Caption ='M_Test'
2. 假如我的 取到的AdoQuery1 去資料庫取得的Table 欄位並沒有M_Column1 欄位, 那就會產生亂碼的錯誤.
請問這兩個問題要如何解決?
是否可以不要用TDBGrid(M_Component).FieldCount 與TDBGrid(M_Component).Fields[j].FieldName
因為我發現這兩個都會連扯到AdoQuery 元件, 能否自己去抓自己的DBGrid 就能得到目前我要的資料

副檔是完整的副程式碼,
請個位大大幫忙解惑一下!
謝謝!

203131119
補充說明一下,
我在編譯時, 已經在 DBGrid 裡先用"欄位編輯器" 編輯了 欄位, 我是希望能直接抓我已經編輯好的欄位就可以了,
不需要扯到AdoQuery 元件,

目前我為了防止錯誤產生,就一定要先把AdoQuery 在轉換Title 先open 起來,副程式才能運作,
且抓到的Table 欄位一定要跟欄位編輯器一樣.否則就一定出錯..跳出



編輯記錄
weiliching 重新編輯於 2013-11-18 16:40:23, 註解 無‧
weiliching 重新編輯於 2013-11-19 08:55:41, 註解 無‧
weiliching 重新編輯於 2013-11-19 08:58:11, 註解 無‧
GrandRURU
站務副站長


發表:234
回覆:1651
積分:1742
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-11-18 17:11:48 IP:59.120.xxx.xxx 未訂閱
如果ADOQuery1有SQL有可以開的指令,那可以先用CreateField的方式把ADOQuery1.Fields建立起來

沒有的話

就再等高手的回答了
系統時間:2017-10-21 20:16:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!