怎麼鎖定string grid中的cell? |
尚未結案
|
diary
一般會員 發表:6 回覆:4 積分:2 註冊:2002-08-05 發送簡訊給我 |
我是用一個string grid讀出一個文字檔
string grid的前兩欄是放的是可以讓使用者可以選擇的yes或no的圖,當使用按下cell內的值為1,圖為yes的欄位後,值會變成0,圖也會變成no。可是我有很問題是無論我按的是第一欄或是第二欄,當我動了滑鼠上的滾輪後,第一欄的值也會觸動selectcell中的程式,把第一欄中cell的值跟圖都換掉。請問各位高手是不是我程式寫錯了? procedure TfmDisplay.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
if (ACol = 1) and (ARow <> 0) then
begin
if (StrToInt(StringGrid1.Cells[1,ARow])) = 1 then
begin
StringGrid1.Canvas.Draw(Rect.Left, Rect.Top ,ImgYes.Picture.Bitmap);
end
else
StringGrid1.Canvas.Draw(Rect.Left, Rect.Top, ImgNo.Picture.Bitmap);
end
else if (ACol = 2) and (ARow <> 0) then
begin
if (StrToInt(StringGrid1.Cells[2,ARow])) = 1 then
StringGrid1.Canvas.Draw(Rect.Left, Rect.Top ,ImgYes.Picture.Bitmap)
else
StringGrid1.Canvas.Draw(Rect.Left, Rect.Top, ImgNo.Picture.Bitmap);
end;
end; procedure TfmDisplay.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var
StrActive : String; begin if ((StrToInt(StringGrid1.Cells[ACol,ARow])) = 1) and (StringGrid1.Col <> 3 ) then begin
StrActive := '0'
end
else if ((StrToInt(StringGrid1.Cells[ACol,ARow])) = 0) and (StringGrid1.Col <> 3 ) then begin
StrActive := '1';
end;
if StringGrid1.Col <> 3 then
StringGrid1.Cells[ACol,ARow] := StrActive;
end;
這是我還沒點選前的畫面
這是我選了第二欄第7個cell後的畫面
這個是我用了滑鼠上的滾輪後,第一欄的第5個跟第6個cell從原來的no變成yes的圖 ~謝謝大家的幫忙~
|
Royce520
高階會員 發表:18 回覆:157 積分:100 註冊:2002-09-13 發送簡訊給我 |
diary 你好,
我的建議有二,
(1)
在StringGridMouseWheelUp, StringGridMouseWheelDown 函數中,
將 Handled 設為 已處理(true 吧)
(2)
另外個方法是, 在 MouseDown 裏 記錄在哪個cell被 click了(當然,
這要寫程式判斷), 然後紀錄這些值以便配合 SelectCell 使用(這樣
可以增加其他控制花樣)
------
不要忘記呼吸,不要忘記編程! ∩__∩ |
diary
一般會員 發表:6 回覆:4 積分:2 註冊:2002-08-05 發送簡訊給我 |
謝謝回答~
我的問題已經解決了
不過在試royce先生的第一個建議之前
我有試過用全域參數flgcol跟flgrow來記錄mousedom的事件滑鼠所點選的cell位置,
不過很奇怪的是程式在run的時候一定會先去執行selectcell的事件後
才會執行mousedown,所以selectcell的事件中我看到的flgcol值都會是空的
mousedown的值一直都傳不進selectcell中。
最後我是用royce先生說的在wheelup跟wheeldown中把handled值數為true才解決這個問題的。
如果可以的話,是不是有人可以回答一下mousedown要怎麼把col跟row的值正確的傳到selectcell中?
|
Royce520
高階會員 發表:18 回覆:157 積分:100 註冊:2002-09-13 發送簡訊給我 |
|
Royce520
高階會員 發表:18 回覆:157 積分:100 註冊:2002-09-13 發送簡訊給我 |
|
diary
一般會員 發表:6 回覆:4 積分:2 註冊:2002-08-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |