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

خطاء في كود

مغلق
بدأه بدر2009 في 16 أكتوبر 2006 · 2 رد · 469 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هذا الكود يجعل الفروم بالمقدهه

حتى بعد ضغط الزر الويدوز بالكيبور يجعل شريط ابداء خلف

كان يشتغل في فجول بيك 6

بس الحين ابي اشغله في جول 2005 وطلع لي خطاء واحد

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal CX As Long, ByVal CY As Long, ByVal wFlags As Long) As Long
Private Const SWP_NOMOVE = 2
Private Const SWP_NOSIZE = 1
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2

Public Sub SetOnTop(ByVal hwnd As Long, ByVal bSetOnTop As Boolean)
Dim lR As Long
If bSetOnTop Then
   lR = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
Else
   lR = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
End If
End Sub

Private Sub Form_Load()
   SetOnTop Form1.hwnd, True
End Sub

الخطاء في هذا

SetOnTop Form1.hwnd, True

يطلع لي خطاء تحت كلمة Form1.hwnd

يالتي تعطوني الحل

#2

- إذا كنت تريد التعامل مع Form1 من داخل الكلاس الخاص بـ Form1 يجب استخدام الكلمة me وليس Form1 ولهذا أعطاك الخطأ

- يجب عليك استخدام معالج تحديث الكود من VB6 إلى VB .net فكما لاحظت تعريف الإجراء لديك مازال بصيغة VB6 مثلا Long في VB6 أصبح Integer في VB .net

- إليك كودك محول جاهز

	Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Integer, ByVal hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal CX As Integer, ByVal CY As Integer, ByVal wFlags As Integer) As Integer
	Private Const SWP_NOMOVE As Short = 2
	Private Const SWP_NOSIZE As Short = 1
	Private Const HWND_TOPMOST As Short = -1
	Private Const HWND_NOTOPMOST As Short = -2

	Public Sub SetOnTop(ByVal hwnd As Integer, ByVal bSetOnTop As Boolean)
		Dim lR As Integer
		If bSetOnTop Then
			lR = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
		Else
			lR = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
		End If
	End Sub

	Private Sub Form_Load()
		SetOnTop(Me.Handle.ToInt32, True)
	End Sub

- يمكن استبدال الكود كله في vb.net بسطر واحد لـ from1 من داخل form1

Me.TopMost = True

- لـ form2 من داخل Form1

		' In VB2005 Only
		Form2.TopMost = True

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#3

بعد التحويل الكود ضبط

بس ليس بقوة عمله في فجول 6

الكود هذا

Me.TopMost = True

اعرفه

بس غير فعال

لان اذ ضغط احد زر الويندوز في الكيبورد وانفتح شريط ابداء يكون فوق الفروم

الكود السابق يمنع شريط ابداء من الظهور فوقه في فجول 6

يعطيك العافيه

اقتباس
Me.TopMost = True

تم تعديل هذه المشاركة بواسطة بدر2009 في 16 أكتوبر 2006 في 23:54

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

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