الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ادراج كومند

مغلق
بدأه سوبر في 27 يناير 2002 · 2 رد · 692 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل بالامكان ادراج زر command بواسطة الكود

او ادراج ليبل بواسطة الكود

#2

يمكنك انشاء الأدوات وقت التشغيل في فيجوال بيسك بأكثر من طريقة .. وفيما يلي توضيح لهذه الطرق.. مع ملاحظة ان الامثلة التوضيحية ستكون على الأدوات من نوع windowless

أ- باستخدام امكانيات فيجوال بيسك

1 - باستخدام العبارة Load مع مصفوفة أدوات (وهي الأقدم)

ويجب أن تتوفر نسخة أولية من الأداة عبارة عن عنصر أولي في مصفوفة... لاحظ المثال

أدرج Command Button وغير الخاصية Index له إلى 0 ثم استخدم الكود..

Private Sub Form_Load()
  Me.ScaleMode = vbPixels
  'تحميل نسخة جديدة
  Load Command1(1)
  'تحديد الموقع والابعاد
  Command1(1).Move 10, 10, 100, 30
  'اظهار الأداة
  Command1(1).Visible = True
  'Unload ويمكنك حذفها باستخدام العبارة
  'Unload Command1(1)
End Sub
ويمكنك معالجة الاحداث لزر الامر الناتج بالطريقة التقليدية..
Private Sub Command1_Click(Index As Integer)
 MsgBox Index
End Sub

2- باستخدام الطريقة Add التابعة للمجموعة Controls التي ظهرت في الاصدار السادس..

'نصرح عن متغير الأداة في قسم التصريحات العامة
'حتى يمكننا التعامل مع الأحداث
'نصرح عن متغير الأداة في قسم التصريحات العامة
'حتى يمكننا التعامل مع الأحداث
Dim WithEvents MyButton As VB.CommandButton

Private Sub Form_Load()
 Set MyButton = Me.Controls.Add("VB.CommandButton", _
  "cmdMyButton")
 MyButton.Move 150, 150
 MyButton.Visible = True
 MyButton.Caption = "MyButton"
'Remove ولحذف العنصر نستخدم الطريقة
'ونمرر الاسم
' Me.Controls.Remove "cmdMyButton"
End Sub

'معالجة الاحداث
Private Sub MyButton_Click()
 MsgBox "You clicked me!!"
End Sub

ب- باستخدام اجراءات واجهة برمجة التطبيقات API ..

ويمكننا تنفيذ المهمة من خلال الدالة CreateWindowEx وهذه الطريقة أكثر مرونة لكنها تتطلب المزيد من العمل ... وهذا مثال فقط للتوضيح ويمكنك الرجوع إلى MSDN لقراءة المزيد والاطلاع على بعض النقاط التي تجاهلتها في المثال.. مثل أنماط الاداة وغيرها..

Private Const WS_CHILD = &H40000000
Private Declare Function CreateWindowEx Lib "user32" Alias _
 "CreateWindowExA" (ByVal dwExStyle As Long, ByVal _
 lpClassName As String, ByVal lpWindowName As String, _
 ByVal dwStyle As Long, ByVal x As Long, ByVal y _
 As Long, ByVal nWidth As Long, ByVal nHeight As _
 Long, ByVal hWndParent As Long, ByVal hMenu As _
 Long, ByVal hInstance As Long, lpParam As Any) _
 As Long
Private Declare Function DestroyWindow Lib _
 "user32" (ByVal hwnd As Long) As Long
Private Declare Function ShowWindow Lib "user32" _
 (ByVal hwnd As Long, ByVal nCmdShow As Long) _
 As Long

Private Sub Form_Load()
 Dim lng_hwnd&
 'انشاء زر أمر
 lng_hwnd = CreateWindowEx(0, "Button", "My Button", _
  WS_CHILD, 10, 10, 100, 30, hwnd, 0, App.hInstance, _
  ByVal 0&)
 'اظهار الزر
 ShowWindow lng_hwnd, 1
 'ولازالة الأداة
 'DestroyWindow lng_hwnd
End Sub

و لمعالجة الاحداث نستطيع استخدام التصنيف الفرعي فمثلا لاصطياد حدث النقر نعدل المثال السابق ...

في وحدة نمطية..

'الثوابت والتصريحات
Public Const GWL_WNDPROC = (-4)
Public Const WS_CHILD = &H40000000
Public Declare Function CreateWindowEx Lib "user32" Alias _
 "CreateWindowExA" (ByVal dwExStyle As Long, ByVal _
 lpClassName As String, ByVal lpWindowName As String, _
 ByVal dwStyle As Long, ByVal x As Long, ByVal y _
 As Long, ByVal nWidth As Long, ByVal nHeight As _
 Long, ByVal hWndParent As Long, ByVal hMenu As _
 Long, ByVal hInstance As Long, lpParam As Any) _
 As Long
Public Declare Function ShowWindow Lib "user32" _
 (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Public Declare Function CallWindowProc Lib "user32" _
 Alias "CallWindowProcA" (ByVal lpPrevWndFunc As _
 Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal _
 wParam As Long, ByVal lParam As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias _
 "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex _
 As Long, ByVal dwNewLong As Long) As Long
Public lpPrevWndProc&

Public Sub Hook(hwnd As Long)
 lpPrevWndProc = SetWindowLong(hwnd, GWL_WNDPROC, _
  AddressOf ButtonProc)
End Sub

Function ButtonProc(ByVal hwnd As Long, ByVal uMsg As Long, _
 ByVal wParam As Long, ByVal lParam As Long) As Long
 'رسالة النقر
 If uMsg = 533 Then MsgBox "You clicked me!!"
 ButtonProc = CallWindowProc(lpPrevWndProc, hwnd, _
  uMsg, wParam, lParam)
End Function

في النموذج

Private Sub Form_Load()
 Dim lng_hwnd&
 'انشاء زر أمر
 lng_hwnd = CreateWindowEx(0, "Button", "My Button", _
  WS_CHILD, 10, 10, 100, 30, hwnd, 0, App.hInstance, _
  ByVal 0&)
 'اظهار الزر
 ShowWindow lng_hwnd, 1
 'Hook ضبط الـ
 Hook lng_hwnd
End Sub
#3

اشكرك على هذا المجهود

وسوف اجرب واشوف ايش النتيجة

هذا الموضوع مغلق.

مواضيع مشابهة