工具:VB6.0 SP6
環境:WIN7 64X
問題:表單置頂、父表單、子表單、選單、有效值。
描述:
1:建立FORM1,建立FORM2,建立FORM3。
2:FROM1中放置一個按鈕或者其他方法,調出FORM2,方法是:Form2.Show 1
3:FROM2中有右擊選單,可以正常顯示。
4:FROM2中用調出FORM3,方法是:FORM3.SHOW 1
5:在FROM3中放置一個選單,然而無法調出右擊選單,右擊無效。
備注:SHOW 1的方法,有效的制止了表單上下的問題,被SHOW的表單始終在SHOW表單之上,有效的防止了在作業系統中按下ALT+TAB而引起表單亂序。
SHOW1的方法也有效的控制了下層表單的可控制性,是一個不可操作的表單。
但是唯獨SHOW1的方法無法使用右擊選單,導致第三層SHOW表單不人性化。
疑問:為什么非要用SHOW 1?
答:首先控制了表單因為切換而亂序,其次下層表單不可控制,也有效的防止了上層表單提取下層表單資料的準確性。
請求大神:在多層表單中,能如同SHOW1的方法一樣,防止修改和操作下層表單(可以用Form.Enabled = False,但是會引起切換程式后導致VB程式表單亂序。),并且在多層表單中能夠使用右擊選單?
這個問題問了很多次了,但是沒有一個滿意答案,有很多大神說用API函式建立右擊選單。但是不會用,API選單函式不是太了解,實驗很多次,用SHOW1的第三個表單依然是無效的右擊。
再次謝謝大神解答!
uj5u.com熱心網友回復:
工具:VB6.0 SP6環境:WIN2003 32X
測驗了一下,只有當上一級的彈出選單被彈出的情況下,下一層的視窗才會彈不出來
MSDN檔案上說法是
每次只能顯示一個彈出式選單,因此,如果已經顯示了一個彈出式選單或打開了一個下拉式選單時,該方法的其它呼叫將被忽略。
我懷疑你是不是彈出了選單,但沒有取消掉,導致了后續選單不能被彈出
模式視窗彈出的時候很有可能視窗層會在選單層之上,擋掉了彈出選單的顯示
uj5u.com熱心網友回復:
的確如此,比如:右擊選擇一個人,查看個人資訊,彈出來一個表單,這個第二個。
比如,在個人資訊中右擊查看他的(考勤、工資、入職等等某一個專案),再彈出來一個,這個第三個就無法右擊了,這個應該如何解決?
右擊選單彈出表單后,關閉選單嗎?怎么關閉啊?
uj5u.com熱心網友回復:
剛剛實驗一下,托管方式1:建立一個按鈕,按鈕內容是 xx.show 1右擊選單直接回應按鈕,但是XX右擊選單依然無效。
托管方式2:建立一個TIME,在TIME中數值是0,當右擊選單回應時,TIME數值100
代碼如下:
Private Sub pup_Click()
Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
Timer1.Interval = 0
Form3.Show 1
End Sub
這個代碼可以有效的彈出FORM3的右擊選單,但是。。是不是有點太繁瑣而且不容易直觀代碼,時間稍微長寫,都感覺莫名其妙了,大神有什么高招?
uj5u.com熱心網友回復:
并且,用TIME方法也不太好,右擊選單動則幾條,幾十條,調出表單有很多個,用一大堆TIME顯然不合適,只能用傳遞代碼的方式,比如Private Sub pup_Click()
S="個人綜合"
Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
Timer1.Interval = 0
select case S
case "個人綜合"
Form3.Show 1
case "其他1"
其他1.show 1
case "其他2"
......
....
end select
End Sub
代繁瑣,容易誤解,大神是否有更好的方法?
uj5u.com熱心網友回復:
用一個form代替默認選單,同樣用show 1方式顯示如何?uj5u.com熱心網友回復:
用彈出視窗代替彈出選單,覺得還是這辦法可行uj5u.com熱心網友回復:
動態添加選單個人感覺不是很難啊轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/79577.html
標籤:VB基礎類
下一篇:有誰懂得vb對IE開發的求教下
