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

Mouse點treeview問題

答題得分者是:andychang1690
kenbcb
中階會員


發表:171
回覆:129
積分:60
註冊:2003-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-16 13:51:39 IP:220.130.xxx.xxx 未訂閱
請問: 我在treeview中用了二個右鍵選單, 當(mouse右鍵或左鍵)點到空白時顯示"右鍵選單A" ,點到有內容時,顯示"右鍵選單B" 但我在操作時,按右鍵選擇時,都沒有正確選到,我有把TreeView的RightClickSelect = true, 請問要如何解決呢???
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-16 16:31:02 IP:211.76.xxx.xxx 未訂閱
kenbcb你好:    在右鍵按下的事件中,使用GetNodeAt這個函式判斷是否有按到內容。    
TreeNode* Node = GetNodeAt(X,Y);
if(Node)
    {
    ...
    }
 
kenbcb
中階會員


發表:171
回覆:129
積分:60
註冊:2003-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-16 17:05:05 IP:61.222.xxx.xxx 未訂閱
我有用,但右鍵的動作不卻實,明明用右鍵選了,結果是上一次的
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-21 15:58:31 IP:219.130.xxx.xxx 未訂閱
當你按下滑鼠右鍵時,PopupMenu事件已經觸發,所以你程式所顯示的
PopupMenu是上一次按下右鍵的成果。    將PopupMenu的AutoPopup設為false。在TreeView的MouseDown事件做如下處理    void __fastcall TForm1::TreeView1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
  if (Button == mbRight) { // 按下滑鼠右鍵
    int xX,yY;   
    TPoint p;
    GetCursorPos(&p);  // 抓取滑鼠於螢幕實際的X,Y值
    xX=p.x;
    yY=p.y;
    TTreeNode* Node = TreeView1->GetNodeAt(X,Y); 
    if(Node)
      PopupMenu1->Popup(xX,yY);
    else
      PopupMenu2->Popup(xX, yY);
  }
}
請參考
Andy Chang
------
Andy Chang
系統時間:2024-05-10 9:34:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!