如何機動產生DBGRID的欄位 |
尚未結案
|
Komuro
一般會員 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
|
junlin
初階會員 發表:66 回覆:94 積分:42 註冊:2002-03-13 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 主題可能說的不太清楚,意思就是假設資料庫有一檔案存了N筆紀錄 在我抓出這N筆之後,將N筆的內容轉成DBGRID的N個欄位TITLE ex. file內容如下(只有一個field) NAME ---- 取得後==>從DBGRID顯示成 A1 A2 A3 ......An A1 -------------------- A2 A3 . . An 煩請各位高手指教,謝Komuro 你好 你的這個需求,應該無法用DBGrid來完成,因為它還要連著DataSet,以反應DataSet的內容,要改變DBGrid最好的方法就是改變DataSet。 如果無法(或不方便),StringGrid可以讓你自由將資料以矩陣的方式陳列,我想這才是你要的吧!它有DBGrid的外觀(預設),每個儲存格(Cell)你都必須自行處理。 以下列出常用的屬性 StringGrid.ColCount := x ;//設定有幾欄 StringGrid.Row := x ;//設定有幾列 StringGrid.Cells[ACol, ARow: Integer] :='xxxxx'// 儲存格的存取 StringGrid.FixedCols:= x ;//設定左邊幾行為固定行 StringGrid.FixedRows:= x ;//設定上邊幾列為固定列 StringGrid.Cols[Index: Integer]: TStrings;//直行的存取 StringGrid.Rows[Index: Integer]: TStrings;//列的存取 ===== 以上兩種屬性滿好玩的 ========== StringGrid.Cols[0].CommaText := 'AA,bb,cc,dd' ;//將第0行由上往下依序填入'AA','bb','cc','dd' |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
建議你一個做法, RumTime Create一個ClientDataSet, 同時依抓出之資料,在RunTime 逐一Create Field
DBGrid可透過DataSource 接向此ClientDataSet, 如此應可達成目的
大致如下
cdtemp:=TClientDataSet.Create(nil); i:=1; while not query1.eof do begin with cdtemp.FieldDefs.AddFieldDef do begin DataType := ftString; size:=20; Name := 'A' inttostr(i); //以'A' 第幾筆record做為fieldname end; inc(i); query1.next; end; cdTemp.CreateDataSet; datasource1.dataset:=cdtemp; dbgrid1.datasource:=datasource1;發表人 - ccchen 於 2004/03/12 09:43:09 |
bruce0211
版主 發表:157 回覆:668 積分:279 註冊:2002-06-13 發送簡訊給我 |
引言: 建議你一個做法, RumTime Create一個ClientDataSet, 同時依抓出之資料,在RunTime 逐一Create Field DBGrid可透過DataSource 接向此ClientDataSet, 如此應可達成目的 大致如下請問 ccchen 長官 這種 ClientDataSet 是否不會產生一個實體檔案 以往我要使用 temp table 時都動態產生一個 paradox table 用完殺掉,他會真實在硬碟上產生一個 table 檔 BDE API 中說有一種 MEMORY TABLE , 但範例說明不完整 從沒測成功過 ...cdtemp:=TClientDataSet.Create(nil); i:=1; while not query1.eof do begin with cdtemp.FieldDefs.AddFieldDef do begin DataType := ftString; size:=20; Name := 'A' inttostr(i); //以'A' 第幾筆record做為fieldname end; inc(i); query1.next; end; cdTemp.CreateDataSet; datasource1.dataset:=cdtemp; dbgrid1.datasource:=datasource1;發表人 - ccchen 於 2004/03/12 09:43:09 |
Komuro
一般會員 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
引言: 這種 ClientDataSet 是否不會產生一個實體檔案 以往我要使用 temp table 時都動態產生一個 paradox table 用完殺掉,他會真實在硬碟上產生一個 table 檔 BDE API 中說有一種 MEMORY TABLE , 但範例說明不完整 從沒測成功過 ...這種 ClientDataSet 是完全在MEMORY中的, 不會產生實體檔案, 不過你可以隨時存檔,存成 .xml或.cds均可. 使用ClientDataset其實有很多好處, 例如可以用DataSet之index功能隨時更改排序方式, 進行locate, 也可以create Aggregate欄位執行各總計算等等. 需要時更可存成實體檔案 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |