ديناميكية اثنين أو أكثر من المستويات القائمة الفرعية جيل في VB6

StackOverflow https://stackoverflow.com/questions/901975

  •  05-09-2019
  •  | 
  •  

سؤال

أصدقاء، قل لي كيف توليد أكثر من 1 مستويات من القائمة الفرعية في VB6 في وقت التشغيل؟ اشرح باختصار؟ أي ضوابط محددة هناك؟ لكنني لا أريد استخدام عناصر تحكم خارجية!

هل كانت مفيدة؟

المحلول

يمكنك القيام بذلك مع قوائم VB القياسية، ولكن نظرا لأنك ستحصل على استخدام صفائف التحكم، يجب عليك إنشاء قائمة أول نموذج أولي مع Index = 0 (على سبيل المثال mnuFoo(0)) في وقت التصميم (عادة غير مرئية). يمكنك الآن تحميل عناصر جديدة ديناميكيا.

Call Me.Load(mnuFoo(1)) ' New array member (index 1) '
With mnuFoo(1)
    .Visible = True ' Make it visible
    ' --- Do some settings
End With

نصائح أخرى

يمكنك إنشاء أكثر من مستوى من القائمة الفرعية باستخدام وظيفة API

Private Declare Function CreatePopupMenu Lib "user32" () As Long

Private Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hmenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Declare Function TrackPopupMenu Lib "user32" (ByVal hmenu As Long, ByVal wFlags As Long, ByVal X As Long, ByVal Y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As Any) As Long

Private Declare Function DestroyMenu Lib "user32" (ByVal hmenu As Long) As Long

Private Type POINTAPI
    X As Long
    Y As Long
End Type

Dim hmenu As Long, hSubMenu As Long
Private Const MF_STRING = &H0&
Private Const MF_SEPARATOR = &H800&


  hSubMenu = CreatePopupMenu
  AppendMenu hSubMenu, 0, 121, "Sub Menu1"
  AppendMenu hSubMenu, 0, 122, "Sub Menu2"

  hmenu = CreatePopupMenu
  AppendMenu hmenu, 0, 107, "Menu1"

  AppendMenu hmenu, 0, 106, "Menu2"

  AppendMenu hmenu, MF_POPUP, hSubMenu, "Menu3"
  AppendMenu hmenu, MF_POPUP, hSubMenu, "Menu4"

  AppendMenu hmenu, 0, 101, "Menu5"

لعرضهم

  If Button = vbRightButton Then
    Dim P As POINTAPI
    GetCursorPos P
    TrackPopupMenu hmenu, 0, P.X, P.Y, 0, hwnd, 0

لا يتم عرض القائمة حتى TrackPopupMenu يسمى. يمكن أن تشير قيمة عودتها إلى تحديد عنصر القائمة (إن وجدت). على سبيل المثال، يمكن أن يعود "107" إذا تم اختيار "MENU1".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top