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

請教 StringGrid 如何控制某Col可編輯,另外唯讀?

答題得分者是:P.D.
misjason
一般會員


發表:9
回覆:17
積分:5
註冊:2007-03-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-06-02 01:52:17 IP:123.252.xxx.xxx 訂閱
各位前輩好!

小弟這有一個StringGrid預設Options.goEditing = True
想設定成col in [1,3,5] = 可編輯, else 唯讀,

目前寫在StringGrid.onMouseDown中MouseToCell去判斷是哪個Col再賦予可編輯或唯讀,
但是...... 小弟發現在可編輯的Col編輯完當Mouse點到隔壁的唯讀Col時... 第一次點它還是可編輯
必須在那"唯讀的Col"上下移動, 才會變成唯讀的狀態... 怎麼會這樣呢? 試好久囉~ 不知道有沒有好方法??

小弟曾想過如果把架構改成TClientDataSet DBGrid來做的話是不是會比較好控制...

謝謝各位先進!
------
請多多指教,謝謝!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-06-02 02:39:32 IP:61.67.xxx.xxx 未訂閱
如下:
[code delphi]
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if ACol in [1,3,5] then stringgrid1.Options:= stringgrid1.Options [goEditing]
else stringgrid1.Options:= stringgrid1.Options-[goEditing];
end;

[/code]

使用dbgrid 反而控制上更麻煩, 不過資料連結上是容易的多!
但如果你的資料很大, 不建議用strginggrid, 因為本身stringgrid 就是使用類似陣列buffer來處理物件, 很吃資源的!
編輯記錄
P.D. 重新編輯於 2008-06-02 02:40:28, 註解 無‧
P.D. 重新編輯於 2008-06-02 02:50:52, 註解 無‧
misjason
一般會員


發表:9
回覆:17
積分:5
註冊:2007-03-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-06-02 08:16:45 IP:211.79.xxx.xxx 訂閱
感謝PD大犧牲睡眠時間替小弟解答!

小弟真是豬頭啊~ 沒注意到SelectCell有ACol & ARow可以用,之前直接找StringGrid1.Col or Row發現有時候抓到的數值是錯的~
經PD大指點後已經很OK了! 感謝再感謝~

請收下小弟的分數,謝謝!
------
請多多指教,謝謝!
系統時間:2024-04-24 4:05:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!