線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1602
推到 Plurk!
推到 Facebook!

StringGridMouseWheelUp如何取Row??

尚未結案
yoyo12345
一般會員


發表:33
回覆:77
積分:22
註冊:2003-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-18 15:08:39 IP:60.248.xxx.xxx 未訂閱
請教在StringGridMouseUp Event取Col與Row,可用MouseToCell(X, Y, Column, Row) 那在MouseWheelUp怎麼取Row??謝謝~~ (我試過同樣的方法,但取不到正確值)
lo
初階會員


發表:8
回覆:69
積分:25
註冊:2003-01-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-18 21:09:37 IP:203.70.xxx.xxx 未訂閱
曾參與用bcb討論的類似問題請參考看看 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41869 順利
yoyo12345
一般會員


發表:33
回覆:77
積分:22
註冊:2003-03-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-19 09:08:12 IP:203.69.xxx.xxx 未訂閱
您好 謝謝您的回覆 試了您說的方法 在MouseUp行的通~ 不過 放在MouseWheelUp所取到的值 就會有誤差~~~~ 在MouseWheelUp裡,我用MousePox.X取座標再除欄高,但 有誤差。 不知在MouseWheelUp Event要怎麼取座標??算出來的值才會正確。 MouseWheelUp(Sender: TObject;Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
lo
初階會員


發表:8
回覆:69
積分:25
註冊:2003-01-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-19 13:42:04 IP:203.70.xxx.xxx 未訂閱
請問為何用MouseWheelUp事件 事實我不知如何觸發MouseWheelUp 學習中 發表人 - lo 於 2005/01/19 13:56:55
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-21 22:30:36 IP:61.31.xxx.xxx 未訂閱
如果您有Trace 源碼,就應知道為什麼了?    MousePos 並未有參考的數據。 直接用 Col,Row 就可以了。(無須轉換 MouseToCell)    
function TCustomGrid.DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean;
begin
  Result := inherited DoMouseWheelDown(Shift, MousePos);
  if not Result then
  begin
    if Row < RowCount - 1 then Row := Row   1;
    Result := True;
  end;
end;    function TCustomGrid.DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean;
begin
  Result := inherited DoMouseWheelUp(Shift, MousePos);
  if not Result then
  begin
    if Row > FixedRows then Row := Row - 1;
    Result := True;
  end;
end;
yoyo12345
一般會員


發表:33
回覆:77
積分:22
註冊:2003-03-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-24 19:01:37 IP:60.248.xxx.xxx 未訂閱
觸發OnMouseWheelUp,滑鼠滾輪往上就行了。 另 我曾嘗試用TStringGRid(sender).Row取值,不過每次固定的row取出來的值並不一樣。
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-24 19:18:51 IP:61.31.xxx.xxx 未訂閱
引言: 觸發OnMouseWheelUp,滑鼠滾輪往上就行了。 另 我曾嘗試用TStringGRid(sender).Row取值,不過每次固定的row取出來的值並不一樣。
是不會這樣的,主要會有這樣的現象。 是StringGrid 先觸發 OnMouseWheelUp 事件。 而在事件後修改 ROW 值。 故取得的值,只會延後或推前。 事實上,您可以依據 OnMouseWheelUP 的 AROW := ROW -1 在 OnMouseWheelDown 的 AROW := ROW 1; 這樣 AROW 就是正確的值了。當然也需要判斷AROW的合理範圍。
yoyo12345
一般會員


發表:33
回覆:77
積分:22
註冊:2003-03-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-25 08:53:32 IP:61.220.xxx.xxx 未訂閱
不知道是我的問題還是?? 總覺得 它每次取出來的值 並不一定 當我停在row15時 有時取出來的值是14 有時是15 若固定加一減一,值還是不一定。 附上我的code(我放了一個StringGrid及ListBox) procedure TForm1.FormCreate(Sender: TObject); var i:Integer; begin for i:=1 to AdvStringGrid1.RowCount-1 do AdvStringGrid1.Cells[1,i]:=inttostr(i); end; procedure TForm1.AdvStringGrid1MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin listbox1.items.Add('UP' Format('=%3.3d',[TAdvStringGrid(Sender).Row-1])); end; procedure TForm1.AdvStringGrid1MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin listbox1.items.Add('Down' Format('=%3.3d',[TAdvStringGrid(Sender).Row 1])); end;
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-25 10:22:59 IP:61.31.xxx.xxx 未訂閱
可能是您用了 AdvStringGrid 元件的關係。 如果有源碼的話,查一下吧! 我以 TStringGrid 測試是正常的。 除了在第一項及最末項,使用 UP 及 Down 會有一點不正確。 主要是沒判斷範圍的關係。
yoyo12345
一般會員


發表:33
回覆:77
積分:22
註冊:2003-03-19

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-25 13:50:27 IP:210.68.xxx.xxx 未訂閱
嗚~~我竟一開始沒想到是這個問題,謝謝你!!!!!!!!!!!
系統時間:2024-11-23 12:34:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!