Dbgrid 欄位移動問題 |
尚未結案
|
miguel
一般會員 發表:26 回覆:20 積分:9 註冊:2002-03-30 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
miguel
一般會員 發表:26 回覆:20 積分:9 註冊:2002-03-30 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 請您將兩個DBGrid的Option屬性中的dgAlwaysShowSelection屬性值設定為True﹐以用作觀察兩個DBGrid的的當前欄位顯示﹒ 在DataSource1元件(對應DBGrid1)的OnDataChange事件中﹕
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin DBGrid2.SelectedField := DBGrid1.SelectedField; end;當您在移動DBGrid1中的欄位時﹐DBGrid2中的欄位也會做對應的移動﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/09/24 14:19:04
------
忻晟 |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
試試看 :
type DumClass=class(TCustomGrid); procedure TForm1.DBGrid1ColEnter(Sender: TObject); begin if TDBGrid(Sender).Name = 'DBGrid1' then begin DumClass(DBGrid2).FGridState := gsSelecting; DumClass(DBGrid2).FocusCell(DumClass(Sender).Col,DumClass(DBGrid2).Row,True); DumClass(DBGrid2).FGridState := gsNormal; end else begin DumClass(DBGrid1).FGridState := gsSelecting; DumClass(DBGrid1).FocusCell(DumClass(Sender).Col,DumClass(DBGrid1).Row,True); DumClass(DBGrid1).FGridState := gsNormal; end; end;DBGrid1 及 DBGrid2 的 OnColumnEnter 都可以接向此 Procedure. |
miguel
一般會員 發表:26 回覆:20 積分:9 註冊:2002-03-30 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 沒動﹖不會吧﹐小弟有試過無誤﹒
小弟的測試環境如下﹕
1﹒一個ADOTable元件(ADOTable1并通過ADOConnection元件正常連接上資料庫﹐處開啟狀態)
2﹒兩個DataSource元件(DataSource1和DataSource2)都連接上ADOTable11
3﹒兩個DBGrid元件(DBGrid1和DBGrid2)﹐分別對應DataSource1和DataSource2﹐并將其Option屬性中的dgAlwaysShowSelection屬性值設為True. 以上設定完成之后﹐即可在DBGrid1和DBGrid2中正常顯示同樣內容的資料﹐再將如下程式碼寫在DataSource1的OnDataChange事件中﹕
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin DBGrid2.SelectedField := DBGrid1.SelectedField; end;當您在移動DBGrid1的當前資料時﹐DBGrid2中的當前資料也會做對應的移動﹒小弟是以DBGrid1的移動來帶動DBGrid2的移動﹐看您的問題好像是當在DBGrid2中移動時帶動DBGrid1的移動﹐若是這樣的話﹐請您做适當的調整﹒ 小弟看您的貼圖中﹐似乎有整行選中的情況﹐請將DBGrid元件Option屬性中的dgRowSelection屬性值設為Flase. 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟 |
miguel
一般會員 發表:26 回覆:20 積分:9 註冊:2002-03-30 發送簡訊給我 |
感謝 cashxin2002 再次回覆 THANKS
可能是 我表達的 不清楚 !! 2﹒兩個DataSource元件(DataSource1和DataSource2)都連接上ADOTable11 DataSource1 使用 Query1 SQL 做 SUM 合計
DataSource2 連上 ADOTable1 當USER在dbgrid2 A055欄位輸入時, dbgrid1(合計) 的欄位 也在 A055
這樣 USER 就不用移動dbgrid1 游標移動到 A055 欄位了!! 希望 這樣表達 能 更清楚些!!
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
如果你希望的是, 二個 DBGrid, 的欄位完全一致...修改一下 :
type DumClass=class(TCustomGrid); procedure TForm1.DBGrid1ColEnter(Sender: TObject); var LC : integer; begin LC:=DumClass(Sender).LeftCol; if TDBGrid(Sender).Name = 'DBGrid1' then begin DumClass(DBGrid2).FGridState := gsSelecting; DumClass(DBGrid2).FocusCell(DumClass(Sender).Col,DumClass(DBGrid2).Row,True); DumClass(DBGrid2).FGridState := gsNormal; DumClass(DBGrid2).LeftCol := LC; end else begin DumClass(DBGrid1).FGridState := gsSelecting; DumClass(DBGrid1).FocusCell(DumClass(Sender).Col,DumClass(DBGrid1).Row,True); DumClass(DBGrid1).FGridState := gsNormal; DumClass(DBGrid1).LeftCol := LC; end; end; |
miguel
一般會員 發表:26 回覆:20 積分:9 註冊:2002-03-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |