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

動態生成二層PopupMenu時,滑鼠移到第一層會自動調用OnClick

缺席
pcernet
初階會員


發表:69
回覆:113
積分:41
註冊:2002-11-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-01 09:16:19 IP:61.218.xxx.xxx 未訂閱
已爬過文,或許沒有精確使用關鍵字,所以並沒有找到相關文章,別人似乎也有這個問題,只是沒有解決?
http://topic.csdn.net/t/20020802/19/919653.html

每個Item都指到相同的OnClick,依照不同的Tag或HInt執行出不同的結果,雖然可以實現,但當滑鼠移動到第一層時,在無按下滑鼠左鍵的情況下,OnClick會自動被調用,但如果這個Item只有一層時,就不會有這種情況!

不知道先進同好是否知道這個問題,謝謝!
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-01 19:45:08 IP:220.141.xxx.xxx 訂閱
做一個上傳求助檔案區給我們測吧!
資料庫用Access就好,有時候也很懶,回人家問題,連測試資料也要自己做,很那個委屈的呢。
------
努力會更接近成功
pcernet
初階會員


發表:69
回覆:113
積分:41
註冊:2002-11-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-01 22:17:36 IP:61.218.xxx.xxx 未訂閱
謝謝您的關注

這樣開兩個主題,沒關係吧,請轉到
https://delphi.ktop.com.tw/board.php?cid=31&fid=97&tid=95850

其實這沒有資料庫,只是很單純的PopupMenu的問題,當有SubItem時,滑鼠移到Item時,會自動觸發Item的On-Click,
能否不讓它自動觸發呢?

謝謝!
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-01 22:25:26 IP:220.141.xxx.xxx 訂閱
對了,程式都在w2k上試的,也許您的問題在於作業系統(Vista)。
第一次,用Delphi7測,除了要刪除一行外,沒有你說的問題。

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
Application.Initialize;
Application.MainFormOnTaskbar := True; // d7 這行會錯,故把它刪掉 抱歉D2009說你程式是用D2007編的而且可以用這行,但我並不知這行做什用的???給Vista用的啦!
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
第二次測試,用D2009,也沒有您說的問題,對不起,沒有D2007版本可以測。
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-11-01 22:27:42, 註解 無‧
pceyes 重新編輯於 2008-11-01 22:29:50, 註解 無‧
pceyes 重新編輯於 2008-11-01 22:39:34, 註解 無‧
pcernet
初階會員


發表:69
回覆:113
積分:41
註冊:2002-11-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-11-01 22:40:50 IP:61.218.xxx.xxx 未訂閱
謝謝答覆

我是用Delphi2007 Update4 沒錯,執行起來確實有問題,PopupMenu沒有On-mouse-over,但當有SubItem時,滑鼠移到Item上確實會自動觸發Item的On-Click,我重新上傳了檔案 http://delphi.ktop.com.tw/download.php?download=upload/490c64194c935_test.rar,謝謝。

P.S:檔案下載之後,請將副檔名.rar改成.exe,~

編輯記錄
pcernet 重新編輯於 2008-11-01 22:43:18, 註解 無‧
pcernet 重新編輯於 2008-11-01 22:44:25, 註解 無‧
pcernet
初階會員


發表:69
回覆:113
積分:41
註冊:2002-11-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-11-02 00:34:03 IP:61.218.xxx.xxx 未訂閱
How to stop a TMenuitem OnClick firing when children are displayed?
http://coding.derkeiler.com/Archive/Delphi/comp.lang.pascal.delphi.misc/2006-08/msg00136.html

謝謝!
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-11-02 07:52:46 IP:220.141.xxx.xxx 訂閱
真的吔,您的exe檔在w2k電腦中,按右鍵移至item-1,Form1.caption隨即變為item-1,雖然Subitem也出現了,但很怪,您確定第一個上傳的版本在您電腦編譯後也會這樣嗎?
建議改一個Delphi版本測,反正D2009還可以下載。

===================引 用 pcernet 文 章===================
謝謝答覆

我是用Delphi2007 Update4 沒錯,執行起來確實有問題,PopupMenu沒有On-mouse-over,但當有SubItem時,滑鼠移到Item上確實會自動觸發Item的On-Click,我重新上傳了檔案 http://delphi.ktop.com.tw/download.php?download=upload/490c64194c935_test.rar,謝謝。

P.S:檔案下載之後,請將副檔名.rar改成.exe,~
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-11-02 08:06:38, 註解 無‧
pceyes 重新編輯於 2008-11-02 08:09:13, 註解 無‧
pcernet
初階會員


發表:69
回覆:113
積分:41
註冊:2002-11-29

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-11-02 09:32:29 IP:61.218.xxx.xxx 未訂閱
真的很感謝您的答覆,沒錯,這個Exe檔就是用給您的程式所編譯的,我找過很多網路文章,都是只有問題,沒有答案。
我也裝過Delphi2009,或許是開始支援Unicode,所以有些控件安裝上都出現問題,因此暫時就不用了,
VCL裡頭,應該是一個命令一個動作,但PopupMenu卻出現沒有On-Mouse-over事件,卻在有SubItem的Item上,能在滑鼠移到上面時執行的卻又是On-Click,真的很奇怪,是Bug嗎?真的不行,我會考慮您的建議,裝回Delphi2009....
Tks~
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-11-02 10:57:40 IP:59.126.xxx.xxx 訂閱
我試了一下,d7 、d2007 Update 4 、d2009 update1 都是一樣的問題
不知道是不是 windows 訊息機制的問題

===================引 用 pcernet 文 章===================
真的很感謝您的答覆,沒錯,這個Exe檔就是用給您的程式所編譯的,我找過很多網路文章,都是只有問題,沒有答案。
我也裝過Delphi2009,或許是開始支援Unicode,所以有些控件安裝上都出現問題,因此暫時就不用了,
VCL裡頭,應該是一個命令一個動作,但PopupMenu卻出現沒有On-Mouse-over事件,卻在有SubItem的Item上,能在滑鼠移到上面時執行的卻又是On-Click,真的很奇怪,是Bug嗎?真的不行,我會考慮您的建議,裝回Delphi2009....
Tks~
------
價值的展現,來自於你用哪一個角度來看待它!!
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-11-02 14:00:52 IP:220.141.xxx.xxx 訂閱
careychen 兄,本來就想請您試一下,您都用d2007的,但你們的OS應都是XP的,獨我的是W2K,我測是j都有問題的(d7,d2009),pcernet 給我的Source以w2k編譯是沒問題的,但他編譯完後的程式,在w2k上是有問題的。
===================引 用 careychen 文 章===================
我試了一下,d7 、d2007 Update 4 、d2009 update1 都是一樣的問題
不知道是不是 windows 訊息機制的問題

===================引 用 pcernet 文 章===================
真的很感謝您的答覆,沒錯,這個Exe檔就是用給您的程式所編譯的,我找過很多網路文章,都是只有問題,沒有答案。
我也裝過Delphi2009,或許是開始支援Unicode,所以有些控件安裝上都出現問題,因此暫時就不用了,
VCL裡頭,應該是一個命令一個動作,但PopupMenu卻出現沒有On-Mouse-over事件,卻在有SubItem的Item上,能在滑鼠移到上面時執行的卻又是On-Click,真的很奇怪,是Bug嗎?真的不行,我會考慮您的建議,裝回Delphi2009....
Tks~
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-11-02 14:38:18, 註解 無‧
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#11 引用回覆 回覆 發表時間:2008-11-02 14:31:23 IP:220.141.xxx.xxx 訂閱
慘了,剛才用C++Builder6(w2k)試了一下,真的會有問題,滑鼠才移過去,Caption就變了,真的是Borland的Bug。
[code cpp]
//---------------------------------------------------------------------------

#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Item11Click(TObject *Sender)
{
Caption = "Item-1";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Subitem1Click(TObject *Sender)
{
Caption = "Subitem";
}
//---------------------------------------------------------------------------

[/code]
------
努力會更接近成功
系統時間:2024-11-23 0:07:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!