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

cxGrid 取自選欄位資料方式請教

答題得分者是:Jasonwong
fireflybug
一般會員


發表:18
回覆:36
積分:15
註冊:2008-07-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-02-21 19:06:16 IP:220.130.xxx.xxx 訂閱
各位大大老,菜鳥小弟最近在學DELPHI 7,使用了cxGrid的元件,HELP看到霧薩薩,又沒有範例,試了很久只試出一些基本功能,例如如何逐一抓取cxGrid內的資料:

//計算出共有多少欄位
cxGrid1DBtableView1.ColumnCount;
//計算共有多少筆資料
cxGrid1DBtableView1.DataController.RecordCount;

//抓第一行第一筆欄位資料
cxGrid1DBtableView1.Controller.SelectedRows[0].DisplayTexts[0];

//取單獨的 行:欄 內的資料(當欄位內的資料是NULL則不算是一個欄位),下面範例取第二行第七個欄位值
//cxGrid1DBtableView1.DataController.GetValue(1,6);

利用這三樣方法配合For迴圈應該就可以把每筆每欄的資料都抓完。

問題來了,目前我開放 cxGrid 可選取多筆資料,例如我按 Ctrl 滑鼠 複選了 第一行與第四行資料,請問我可以用那些方式得知使用者複選了那幾行?抓取相關INDEX?

另外請問我發現使用 CTRL A 可把cxGrid內資料全選,然後再按 Ctrl C 可連同欄位名稱與資料複製到剪貼布,再開啟EXCEL選貼上,資料就完全轉到EXCEL上了,請問用程式有簡易的方式可達成此效果嗎?

另外請問如果要用程式組合如同使用者用手按 Ctrl a 與 Ctrl c 與 Ctrl v 的功能,要怎麼實現呢?

在這裡先謝了。
------
今天的事,留到後天再說....
編輯記錄
fireflybug 重新編輯於 2009-02-21 19:07:13, 註解 無‧
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-02-23 13:43:07 IP:59.120.xxx.xxx 未訂閱
問題來了,目前我開放 cxGrid 可選取多筆資料,例如我按 Ctrl + 滑鼠 複選了 第一行與第四行資料,請問我可以用那些方式得知使用者複選了那幾行?抓取相關INDEX?

cxGrid1DBTableView1.DataController.Controller.Selected // 判斷是否被選取

另外請問我發現使用 CTRL A 可把cxGrid內資料全選,然後再按 Ctrl C 可連同欄位名稱與資料複製到剪貼布,再開啟EXCEL選貼上,資料就完全轉到EXCEL上了,請問用程式有簡易的方式可達成此效果嗎?

ExportGrid4ToExcel // 直接從 CXGRID 輸出到 EXCEL
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
fireflybug
一般會員


發表:18
回覆:36
積分:15
註冊:2008-07-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-02-23 14:03:31 IP:220.130.xxx.xxx 訂閱
感謝大大回覆,看來大大對cxGrid的用法比較熟練,不知大大若有時間,能否寫幾個cxGrid常用的小技巧與功能分享之?

cxGrid1DBTableView1.DataController.Controller.Selected
// 判斷是否被選取

這部份小弟再試試看。

小弟資質愚笨,想再請教 ExportGrid4ToExcel // 直接從 CXGRID 輸出到 EXCEL
這部份如何實現?是否須拉元件或是 USE 什麼才能使用?又它的用法流程是(比方說轉出的檔名之類的)?

找到 ExportGrid4ToExcel 用法,謝謝大大提示^^

uses cxexportgrid4link;

var
SaveDialog: TSaveDialog;
begin
SaveDialog:=TSaveDialog.Create(nil);
with SaveDialog do
begin
Filter := '*.xls|*.xls';
if Execute then
begin
ExportGrid4ToExcel(FileName,vgrid,true,true,true,'xls'); \\ExportGrid4ToEXCEL('d:\wang.xls',cxGrid1,True,True)
end;
end;
SaveDialog.Free;
end;

------
今天的事,留到後天再說....
編輯記錄
fireflybug 重新編輯於 2009-02-23 14:26:15, 註解 無‧
fireflybug 重新編輯於 2009-02-23 14:26:55, 註解 無‧
fireflybug 重新編輯於 2009-02-23 14:28:39, 註解 無‧
fireflybug 重新編輯於 2009-02-23 14:30:05, 註解 無‧
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-02-23 14:32:58 IP:59.120.xxx.xxx 未訂閱
感謝大大回覆,看來大大對cxGrid的用法比較熟練,不知大大若有時間,能否寫幾個cxGrid常用的小技巧與功能分享之?

常用的哦, 你叫我想我想很久還真想不出來耶,

還有, 請記得結案哦...
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
編輯記錄
Jasonwong 重新編輯於 2009-02-23 14:33:56, 註解 無‧
Jasonwong 重新編輯於 2009-02-23 14:34:26, 註解 無‧
fireflybug
一般會員


發表:18
回覆:36
積分:15
註冊:2008-07-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-02-24 16:39:30 IP:220.130.xxx.xxx 訂閱
多行欄位選定後,如何抓取已選取欄位的值,現下我試出範例了:



[code delphi]
procedure TBrDeclRelModeC1Form.OP1Click(Sender: TObject);
var
i:Integer;
SelectedRecordCount:Integer; //記錄使用者選取的資料筆數
begin
//選了幾筆資料
SelectedRecordCount:=cxGrid1DBTableView1.DataController.Controller.SelectedRecordCount;
for i:=0 to (SelectedRecordCount - 1) do //有幾筆資料做幾次回圈
Begin
//若有五筆資料,只選1、3筆資料,則 SelectedRecords[i] i = 0時,
//抓的是第一筆的第二個欄位資料Values[1] ,如此就可以抓自己想要的資料了
showmessage(cxGrid1DBTableView1.DataController.Controller.SelectedRecords[i].Values[1]);
End;
end;
[/code]

另外想請教,若我想用欄位名稱抓值,不知道用啥方式可辦到?
------
今天的事,留到後天再說....
編輯記錄
fireflybug 重新編輯於 2009-02-24 16:42:24, 註解 無‧
fireflybug 重新編輯於 2009-02-24 16:43:10, 註解 無‧
fireflybug 重新編輯於 2009-02-24 16:46:30, 註解 無‧
系統時間:2024-11-23 5:28:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!