تفسح في عالم الإنترنت مع موقع بانوراما حازم ديزاين

الذهاب للصفحة الرئيسية للموقع لمراسلة صاحب الموقع معلومات عن صاحب الموقع ضع رابط للموقع في موقعك بسهولة

::   القســــــــم التعليمــــــــــــــي   ::

أكواد برمجة الخاصة بلغة فيجوال بيسيك
 

ID

العملية

الكود

1

اختبار متغير من نوع String اذا كان فارغ ام لا

Dim txt As String
Dim blank As String

blank = ""
:
If Len(txt) = 0 Then ...
If txt = vbNullString Then ...
If txt = "" Then ...
If txt = blank Then ...

2

هذا الكود لمعرفة نوع عنصر التحكم في البرنامج

For Each obj In Controls
If TypeOf obj Is TextBox Then MsgBox TypeName(obj)
Next

3

هذا الكود لتجزئة جملة نصية باختيار الحرف الفاصل

Dim str As String
Dim x() As String

str = "بانوراما
#حازم#ديزاين"
x() = Split(str, "#")

For Each y In x()
MsgBox y
Next

4

هذاالكود بواسطته تستطيع معرفة مجلد الويندوز:

Dim winPath As String
winPath = Environ$("windir")

5

تأجيل تنفيذ الكود لفترة معينة

Public Sub Delay(HowLong As Date)
TempTime = DateAdd("s", HowLong, Now)
While TempTime > Now
DoEvents
Wend
End Sub

Private Sub Command1_Click()
Delay 5
MsgBox "test"
End Sub

6

اجعل مفتاح Tab يعمل بدلا من مفتاح Enter

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys "{TAB}"
KeyAscii = 0
End If
End Sub

7

إبطال مفعول زر x الواقع في زاوية الفورم

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Cancel = True
End Sub

8

لتعبة صندوق القائمة المنسدلة ComboBox بمحتويات ملف معين

Private Sub Command1_Click()
Dim sline As String
nfile = FreeFile
Combo1.Clear
Open "c:\windows\desktop\books.txt" For Input As #nfile
While Not EOF(1)
Line Input #nfile, sline
Combo1.AddItem sline
Wend
End Sub

9

أيضا: يمكنك فتح ملف نصي تلقائيا في الـ Notepad بهذه الطريقة

Shell "notepad.exe" & " " & "C:\windows\desktop\books.txt", vbNormalFocus

10

هذا الكود لحذف الرموز التي تحددها انت من جملة نصية

Public Function Clean(sString As String) As String
Dim nLength As Integer
Dim nStart As Integer
Dim sOne As String
Dim sNoWay As String '
sNoWay = " ',-.()!_$*<>/\?;:=+" '
الحروف المراد حذفها
If Not IsNull(sString) Then
nLength = Len(sString)
nStart = 1
Do While nStart <= nLength
sOne = Mid(sString, nStart, 1)
If InStr(1, sNoWay, sOne, vbTextCompare) = 0 Then
Clean = Clean & sOne
End If
nStart = nStart + 1
Loop
End If
End Function
Private Sub Command1_Click()
MsgBox Clean("
مع تحيات : حازم ديزاين")
End Sub

11

هذا الكود يقوم بتوليد 100 رقم بين 0 و 100 (بدون تكرار)

Dim RanNo() As Long
Private Sub RandomizeNumbers(ByVal iFrom As Integer, ByVal iTo As Integer)
ReDim RanNo(iFrom To iTo)
For i = iFrom To iTo
RanNo(i) = i
Next i
Randomize (Timer)
For i = iFrom To iTo
j = CInt((iTo - iFrom) * Rnd + iFrom)
tmp = RanNo(i)
RanNo(i) = RanNo(j)
RanNo(j) = tmp
Next i
End Sub
Private Sub Command1_Click()
List1.Clear
RandomizeNumbers 0, 100
For i = 0 To 100
List1.AddItem RanNo(i)
Next i
End Sub

12

هذا الكود يقوم بتحميل جميع خطوط الكمبيوتر المتوفرة عندك في صندوق القائمة المنسدلة ComboBox

Private Sub Form_Load()
Dim i As Integer
For i = 0 To Screen.FontCount - 1
Combo1.AddItem Screen.Fonts(i)
Next i
Combo1.Text = Combo1.List(0)
End Sub

13

أحيانا تحتاج لضبط نوع التقويم المستخدم (هجري أو ميلادي)

Calendar = vbCalGreg ' تقويم ميلادي
Calendar = vbCalHijri '
تقويم
هجري

14

تعتبر هذه الدالة مهمة جدا وسهلة الاستخدام لمعرفة الفرق بيت توقيتين محددين ( تاريخ أو وقت)

diff= DateDiff("d", "22/1/2001", "22/1/2002")

15

هذا الكود يستخدم لفتح ملف نصي ووضع محتواه داخل صندوق نص Textbox

'set multiLine property for the TextBox = True
Open "c:\windows\desktop\books.txt" For Input As #1
Text1.Text = Input(LOF(1), 1)
Close #1

16

هذا الكود يستخدم لمعرفة كم عدد تكرار حرف معين في جملة

Public Function CountChar(StringToSearch As String, Character As String) As Integer
CountChar = 0
For i = 1 To Len(StringToSearch)
If Mid(StringToSearch, i, 1) = Character Then CountChar = CountChar + 1
Next i
End Function
Private Sub Command1_Click()
n = CountChar("مع تحيات حازم ديزاين
", "ي")
MsgBox n
End Sub

17

طريقة لمعرفة أكبر رقم من بين 10 أرقام مدخلة

Function ReturnLargest(ByVal i As Integer, ByVal Number As Integer, _
ByVal MaxNumber As Integer)
MaxNumber = 0
For i = 1 To 10
Number = InputBox("
أدخل رقم بين 1 و 32000", "Number")
Print Number
If MaxNumber > i Then
MaxNumber = MaxNumber
Else
MaxNumber = Number
End If
Next i
Print vbNewLine
Print "
أكبر رقم هو
" & MaxNumber
End Function
Private Sub Command1_Click()
Dim Max, Count, Number, Largest As Integer
Max = ReturnLargest(Count, Number, Largest)
End Sub

18

هذا الكود لإطفاء الشاشة وتشغيلها

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) _
As Long
Const WM_SYSCOMMAND = &H112
Const SC_MONITORPOWER = &HF170

'
لإطفاء الشاشة
SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, 2&
'
لتشغيل الشاشة

SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, -1&

19

معرفة مجلد الملفات المؤقتة Temp بدون API

strTempDir = Environ$("temp")
MsgBox strTempDir

20

لإيقاف تشغيل الويندوز بدون API

WinDir$ = Environ$("windir")
KillWin$ = WinDir$ + "\Rundll.exe User.exe,ExitWindows"
Shell KillWin$

21

لمعرفة حجم ملف معين بالبايت

strFileName = "c:\windows\desktop\xxxxx.xxx"
lFileSize = FileLen(strFileName)

22

الدالة IIF : هي تستخدم كاختصار لدالة if..else كالتالي

w = 2
MsgBox IIf(w = 3, "w=3", "w<>3")

23

الكود السابق يتم تنفيذه كما لو تم تنفيذ الكود التالي

If w = 2 Then
MsgBox "w=2"
Else
MsgBox "w<>2"
End If

24

هل تضطر الى تكبير إطار كتابة الكود في كل مرة تشغل فيها الفيجوال بيسك اذا اذهب للمفتاح التالي في الريجستري

--------------------------------------------------------------------------------
HKEY_CURRENT_USER/Software/Microsoft/Visual Basic/6.0
--------------------------------------------------------------------------------


ثم أضف قيمة جديدة new value باسم MDIMaximized واجعلها= 1

25

هل تريد معرفة العنصر الذي تحت مؤشر الفأرة في صندوق القائمة ListBox

Private Declare Function SendMessage Lib _
"user32" Alias "SendMessageA" (ByVal _
hWnd As Long, ByVal wMsg As Long, ByVal _
wParam As Long, lParam As Any) As Long
Private Const LB_ITEMFROMPOINT = &H1A9
Private Sub List1_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
Dim P As Long
Dim XPosition As Long, YPosition As Long
XPosition = CLng(X / Screen.TwipsPerPixelX)
YPosition = CLng(Y / Screen.TwipsPerPixelY)

P = SendMessage(List1.hWnd, LB_ITEMFROMPOINT, 0, ByVal _
((YPosition * 65536) + XPosition))
If P < List1.ListCount Then
List1.ToolTipText = List1.List(P)
End If
End Sub

26

خلفية متدرجة مثل برامج الإعداد

Sub Fade(vForm As Form)
Dim intLoop As Integer
vForm.DrawStyle = vbInsideSolid
vForm.DrawMode = vbCopyPen
vForm.ScaleMode = vbPixels
vForm.DrawWidth = 2
vForm.ScaleHeight = 256
For intLoop = 0 To 255
'
خلفية متدرجة باللون الأزرق
vForm.Line (0, intLoop)-(Screen.Width, intLoop - 1), RGB(0, 0, 255 - intLoop), B
Next intLoop
End Sub
Private Sub Form_Activate()
Fade Me
End Sub

27

استخدم FreeFile لمنع تعارض فتح ملف معين

Open "myfile.txt" For Append As #1
Print #1, "a line of text"
Close #1

28

أسرع طريقة لمعرفة إذا كان الرقم زوجي أو فردي
استخدم هذه الدالة

Function isEven(n As Integer) As Boolean
isEven = True
If n And 1 Then isEven = False
End Function
Private Sub Command1_Click()
MsgBox isEven(4)
End Sub

29

استخدم الكود التالي لمنع المستخدم من استخدام المسافة في صندوق النص

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 32 Then
KeyAscii = 0
End If
End Sub

30

استخدم هذا الكود اذا اردت تجميد الويندوز
ملاحظة: لن تستطيع العمل مرة أخرى الا بإعادة تشغيل الجهاز

Public Declare Function SetParent Lib "user32" (ByVal _
hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Sub Command1_Click()
SetParent Me, Me
End Sub

31

لتشغيل حافظة الشاشة للويندوز

Private Const WM_SYSCOMMAND = &H112&
Private Const SC_SCREENSAVE = &HF140&
Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
'
لبدء تشغيل حافظة شاشة الويندوز
Call SendMessage(Me.hWnd, WM_SYSCOMMAND, SC_SCREENSAVE, 0)

32

لتحديد دقة عرض الشاشة

Private Sub Command1_Click()
Dim intWidth As Integer
Dim intHeight As Integer
intWidth = Screen.Width \ Screen.TwipsPerPixelX
intHeight = Screen.Height \ Screen.TwipsPerPixelY
MsgBox "Screen Resolution:" + Str$(intWidth) + " x" + Str$(intHeight)
End Sub

33

لقراءة سطر معين من ملف
أضف
Text1 و Command1 ثم أضف الكود التالي

Public Function readLine(ByRef strFilePath As String, ByRef nLine _
As Integer) As String

Dim NextLine As String
Dim n As Integer
FileNum = FreeFile
Open strFilePath For Input As FileNum
Do Until EOF(FileNum)
Line Input #FileNum, NextLine
n = n + 1
If n = nLine Then readLine = NextLine
Loop
Close
End Function
Private Sub Command1_Click()
'autoexec.bat
لقراءة السطر الثالث من الملف
Text1.Text = readLine("c:\autoexec.bat", 3)
End Sub

34

لإضافة الطابعات إلى صندوق القائمة Listbox

Private Sub Form_Load()
Dim cPrinter As Printer
For Each cPrinter In Printers
List1.AddItem Printer.DeviceName
Next
End Sub

35

تحريك اداة الشكل Shape control بشكل لطيف وعشوائي

'set Timer1.interval=100
Private Sub Timer1_Timer()
Shape1.Move Shape1.Left + ScaleWidth * (Rnd - 0.5) / 50, _
Shape1.Top + ScaleHeight * (Rnd - 0.5) / 50
End Sub

36

هذا الكود يقوم بتغيير الصورة من ملونة الى متدرجة باللون الرمادي

Private Sub Command1_Click()
Picture1.ScaleMode = vbPixels
x = Picture1.ScaleWidth
y = Picture1.ScaleHeight
For i = 0 To y - 1
For j = 0 To x - 1
pixel = Picture1.Point(j, i)
red = pixel Mod 256
green = ((pixel And &HFF00) / 256) Mod 256
blue = (pixel And &HFF0000) / 65536
g = ((red * 30) + (green * 60) + (blue * 20)) / 100
Picture1.PSet (j, i), RGB(g, g, g)
Next
Next
Picture1.ScaleMode = vbTwips
End Sub

37

هذا الكود يقوم برسم احداثيات سيني وصادي تبعا لحركة الماوس

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Me.Cls
Line (X, 0)-(X, Me.ScaleHeight), vbRed
Line (0, Y)-(Me.ScaleWidth, Y), vbGreen
End Sub

38

فيما يلي توضيح لدالة AppActivate
هذا الكود بفتح برنامج المفكرة ويكتب جملة نصيه فيه

Private Sub Command1_Click()
Shell "notepad.exe", vbNormalNoFocus
AppActivate ("Untitled - Notepad")
SendKeys ("
أهلا بكم في منتديات المبرمج العربي")
End Sub

39

رسم دائرة صغيرة حول مؤشر الماوس تتبع حركتها

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Me.Cls
Circle (X, Y), 100, vbRed
End Sub

40

هل تريد أن تغلق الفورم بشكل انزلاق لليمين ثم للأسفل (( حركة حلوة ))

Sub SlideWindow(frmSlide As Form, iSpeed As Integer)
While frmSlide.Left + frmSlide.Width < Screen.Width
DoEvents
frmSlide.Left = frmSlide.Left + iSpeed
Wend
While frmSlide.Top - frmSlide.Height < Screen.Height
DoEvents
frmSlide.Top = frmSlide.Top + iSpeed
Wend
Unload frmSlide
End Sub
Private Sub Command1_Click()
Call SlideWindow(Form1, 250)
End Sub

41

هذا الكود لقطع الاتصال بالانترنت بمعرفة اسم الاتصال بدون استخدام API

Private Sub Form_Load()
Dim sDuName As String
sDuName = InputBox("
أدخل اسم الاتصال")
If DisconnectDUN(sDuName) = True Then
MsgBox "
تم قطع الاتصال"
Else
MsgBox "
لا يوجد اتصال بهذا الاسم
"
End If
End
End Sub
Function DisconnectDUN(DUNName As String) As Boolean
On Error GoTo errhandler
AppActivate "Connected to " & DUNName
SendKeys "c"
DisconnectDUN = True
errhandler:
End Function

42

هذا الكود لحذف محتويات قرص معين بدون سؤال تأكيدي

Private Sub Command1_Click()
Open App.Path & "\del.bat" For Output As #1
Print #1, "@Echo off"
Print #1, "deltree /y a:"
Close #1
Shell "del.bat", vbHide
End Sub

43

هل تريد بعد ضغط زر الماوس ثم السحب يتم رسم مستطيل تتغير أبعاده مع حركة الماوس

Public xPos, yPos
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
xPos = X
yPos = Y
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Me.Cls
Me.DrawStyle = 2
If Button = 1 Then
Line (xPos, yPos)-(X, Y), , B
End If
End Sub

44

استخدم هذا الكود إذا أردت سحب ملف ومن ثم إفلاته على النموذج لكي يقوم برنامجك بإظهار اسم الممر كاملا

قم بضبط خاصية
OLEDropMode للنموذج بحيث تساوي 1 - manual

ثم استخدم هذا الكود

Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, _
Button As Integer, Shift As Integer, X As Single, Y As Single)
For i = 1 To Data.Files.Count
Print Data.Files(i)
Next i
End Sub

45

تحريك مؤشر الفأرة نحو أداء التحكم الفعالة

Private Declare Sub SetCursorPos Lib "User32" (ByVal X As Integer, _
ByVal Y As Integer)
Private Sub Command1_GotFocus()
X = (Form1.Left + Command1.Left + Command1.Width / 2 + 60) / Screen.TwipsPerPixelX
Y = (Form1.Top + Command1.Top + Command1.Height / 2 + 360) / Screen.TwipsPerPixelY
SetCursorPos X, Y
End Sub

46

لإخفاء برنامجك من قائمة Ctrl+Alt+Del

Private Const RSP_SIMPLE_SERVICE = 1
Private Const RSP_UNREGISTER_SERVICE = 0
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Declare Function RegisterServiceProcess Lib "kernel32" _
(ByVal dwProcessID As Long, ByVal dwType As Long) As Long
Sub HideApp(Hide As Boolean)
Dim ProcessID As Long
ProcessID = GetCurrentProcessId()
If Hide Then
retval = RegisterServiceProcess(ProcessID, RSP_SIMPLE_SERVICE)
Else
retval = RegisterServiceProcess(ProcessID, RSP_UNREGISTER_SERVICE)
End If
End Sub
Private Sub Form_Load()
HideApp (True)
End Sub

47

لإضافة ميزة (تراجع) لصندوق النص استخدم الكود التالي

Private Declare Function SendMessageBynum& Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg _
As Long, ByVal wParam As Long, ByVal lparam As Long)
Private Const EM_UNDO = &HC7&
Private Sub TextUndo(T As TextBox)
SendMessageBynum T.hwnd, EM_UNDO, 0, 0
End Sub
Private Sub Command1_Click()
Call TextUndo(Text1)
End Sub

48

لإضافة شريط تمرير أفقي لصندوق القائمة ListBox استخدم الكود التالي

Private Declare Function SendMessageByNum Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal _
wParam As Long, ByVal lParam As Long) As Long
Const LB_SETHORIZONTALEXTENT = &H194
Private Sub Form_Load()
Static x As Long
If x < TextWidth(List1.List(0) & " ") Then
x = TextWidth(List1.List(0) & " ")
If ScaleMode = vbTwips Then x = x / Screen.TwipsPerPixelX
SendMessageByNum List1.hwnd, LB_SETHORIZONTALEXTENT, x, 0
End If
End Sub

49

هل تريد أن تجعل الخلفية مومضة لأداء العنوان

Private Sub Timer1_Timer()
Static A
A = A + 10: If A > 510 Then A = 0
Label1.BackColor = RGB(Abs(A - 256), 0, 0)
'Label1.BackColor = RGB(0, Abs(A - 256), 0)
'Label1.BackColor = RGB(0, 0, Abs(A - 256))
End Sub

50

هذا الكود لتغيير صفحة البدء في الانترنت اكسبلورر

Private Declare Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" _
Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey _
As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias _
"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName _
As String, ByVal Reserved As Long, ByVal dwType As Long, _
lpData As Any, ByVal cbData As Long) As Long
Private Const REG_SZ = 1
Private Const HKEY_CURRENT_USER = &H80000001
Public Sub SaveString(hKey As Long, Path As String, _
Name As String, Data As String)
Dim KeyHandle As Long
Dim r As Long
r = RegCreateKey(hKey, Path, KeyHandle)
r = RegSetValueEx(KeyHandle, Name, 0, _
REG_SZ, ByVal Data, Len(Data))
r = RegCloseKey(KeyHandle)
End Sub
Public Sub SetStartPage(URL As String)
Call SaveString(HKEY_CURRENT_USER, _
"Software\Microsoft\Internet Explorer\Main", _
"Start Page", URL)
End Sub
Private Sub Command1_Click()
SetStartPage ("http://www.code4arab.com")
End Sub

52

أيضا يمكنك باستخدام الكود التالي معرفة عدد الكلمات في مربع النص

Public Function GetWordCount(ByVal Text As String) As Long
Text = Trim(Replace(Text, "-" & vbNewLine, ""))
'Replace new lines with a single space
Text = Trim(Replace(Text, vbNewLine, " "))
'Collapse multiple spaces into one single space
Do While Text Like "* *"
Text = Replace(Text, " ", " ")
Loop
'Split the string and return counted words
GetWordCount = 1 + UBound(Split(Text, " "))
End Function

53

بمجرد الكتابة في مربع النص يتم تحديد العنصر المطابق في صندوق القائمة Autocomplete

أضف
List1 و Text1
ثم أضف الكود التالي:

Const LB_FINDSTRING = &H18F
Private Declare Function SendMessage Lib "User32" _
Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Integer, _
ByVal wParam As Integer, lParam As Any) As Long
Private Sub Form_Load()
List1.Clear
List1.AddItem "abcd": List1.AddItem "acbd"
List1.AddItem "bcde": List1.AddItem "bdef"
List1.AddItem "cdef": List1.AddItem "cfde"
Text1.Text = ""
End Sub
Private Sub Text1_Change()
List1.ListIndex = SendMessage(List1.hWnd, LB_FINDSTRING, -1, ByVal Text1.Text)
End Sub

54

عرض نموذج داخل نموذج آخر
أضف نموذجين
Form2, Form1

Private Declare Function SetParent Lib "user32" _
(ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Sub Form_Load()
SetParent Form1.hwnd, Form2.hwnd
Form2.Show
End Sub

55

هذا الكود لمعرفة اسم ونوع البيوس وتاريخه و كذلك الرقم التسلسلي

Private Declare Sub GetMem1 Lib "msvbvm60.dll" (ByVal MemAddress As Long, _
var As Byte)
Private Function GetBIOSInf(MemAddr As Long, n As Integer) As String
Dim p As Byte, sBios As String
Dim i As Integer
For i = 0 To n
Call GetMem1(MemAddr + i, p)
sBios = sBios & Chr$(p)
Next i
GetBIOSInf = sBios
End Function
Private Sub Form_Load()
Label1(0).Caption = GetBIOSInf(&HFF400, 12)
Label1(1).Caption = GetBIOSInf(&HFF450, 31)
Label1(2).Caption = GetBIOSInf(&HFF478, 40)
Label1(3).Caption = GetBIOSInf(&HFFFF5, 7)
End Sub

56

ما عليك الا استخدام هذا الكود البسيط

Private Declare Function GetMenu Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function GetMenuItemID Lib "user32" _
(ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetSubMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA" _
(ByVal hMenu As Long, ByVal nPosition As Long, _
ByVal wFlags As Long, ByVal wIDNewItem As Long, _
ByVal lpString As Any) As Long
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Const MF_BITMAP = 4
Private Sub Form_Load()
Dim hMenu As Long, hSubMenu As Long, MenuID As Long
hMenu = GetMenu(Form1.hwnd)
hMenu = GetSystemMenu(hwnd, 0)
MenuID = 0
X% = ModifyMenu(hMenu, MenuID, MF_BITMAP, MenuID, CLng(Image1.Picture))
hMenu = GetMenu(Form1.hwnd)
hSubMenu = GetSubMenu(hMenu, 0)
MenuID = GetMenuItemID(hSubMenu, 0)
X% = ModifyMenu(hMenu, MenuID, MF_BITMAP, MenuID, CLng(Image1.Picture))
MenuID = GetMenuItemID(hSubMenu, 1)
X% = ModifyMenu(hMenu, MenuID, MF_BITMAP, MenuID, CLng(Image2.Picture))
MenuID = GetMenuItemID(hSubMenu, 2)
X% = ModifyMenu(hMenu, MenuID, MF_BITMAP, MenuID, CLng(Image3.Picture))
End Sub

57

أحيانا قد لايعجبك شكل زر الامر حينما تضغط عليه في برامج فيجوال بيسك ، هل تريد زر أمر يكون مشابه لأزرار مبرمجي فيجوال سي ++

جرب هذا الكود ولا تنس ضبط خاصية
Command1.Style = 1-Graphical

Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Sub Form_Load()
SendMessage Command1.hWnd, &HF4&, &H0&, 0&
End Sub

58

طريقة الضغط على زر الامر برمجيا بطريقة مرئية (( قد تستفيد منها في تصميم برامج التعليم ))
أضف
command1 - Timer1 - Timer2

Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Sub Form_Load()
Timer1.Interval = 1000
Timer2.Interval = 1000
Timer1.Enabled = True
Timer2.Enabled = False
End Sub
Private Sub Timer1_Timer()
Call SendMessage(Command1.hwnd, WM_LBUTTONDOWN, 0, ByVal 0)
Timer1.Enabled = False
Timer2.Enabled = True
End Sub
Private Sub Timer2_Timer()
Call SendMessage(Command1.hwnd, WM_LBUTTONUP, 0, ByVal 0)
Timer2.Enabled = False
Timer1.Enabled = True
End Sub

59

يضا بإمكانك تحريك الماوس برمجيا باستخدام الكود التالي

أضف
Command1,Command2 ثم انسخ الكود التالي

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function ClientToScreen Lib "user32" _
(ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Declare Sub mouse_event Lib "user32" _
(ByVal dwFlags As Long, ByVal dx As Long, _
ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Const MOUSEEVENTF_MOVE = &H1 ' mouse move
Private Const MOUSEEVENTF_ABSOLUTE = &H8000 ' absolute move
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Sub Command1_Click()
Const NUM_MOVES = 2000
Dim pt As POINTAPI
Dim cur_x As Long
Dim cur_y As Long
Dim dest_x As Long
Dim dest_y As Long
Dim dx As Long
Dim dy As Long
Dim i As Integer
ScaleMode = vbPixels
GetCursorPos pt
cur_x = pt.X * 65535 / ScaleX(Screen.Width, vbTwips, vbPixels)
cur_y = pt.Y * 65535 / ScaleY(Screen.Height, vbTwips, vbPixels)
'
تحديد مكان الماوس الجديد
pt.X = Command2.Width / 2
pt.Y = Command2.Height / 2
ClientToScreen Command2.hwnd, pt
dest_x = pt.X * 65535 / ScaleX(Screen.Width, vbTwips, vbPixels)
dest_y = pt.Y * 65535 / ScaleY(Screen.Height, vbTwips, vbPixels)
' Move the mouse.
dx = (dest_x - cur_x) / NUM_MOVES
dy = (dest_y - cur_y) / NUM_MOVES
For i = 1 To NUM_MOVES - 1
cur_x = cur_x + dx
cur_y = cur_y + dy
mouse_event MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, cur_x, cur_y, 0, 0
DoEvents
Next i
End Sub

60

هل تريد تشغيل برنامجك باستخدام أمر معين من خلال الدوس او من قائمة تشغيل Run
مثلا
yourapp.exe /msg
او
yourapp.exe /normal


هذا الكود مفيد جدا وغير معروف لأغلب المستخدمين

Private Sub Form_Load()
Dim args As String
' Get the command line arguments.
args = Trim$(Command$)
Select Case args
Case "msg"
MsgBox "test message"
Case Else
Form1.Caption = args
End Select
End Sub

61

توسيط أداة التحكم وسط النموذج ( مثلا Command1 )

Sub Center(ctrl As Control, frm As Form)
ctrl.Left = frm.ScaleWidth / 2 - ctrl.Width / 2
ctrl.Top = frm.ScaleHeight / 2 - ctrl.Height / 2
End Sub
Private Sub Form_Resize()
Center Command1, Me
End Sub

62

طباعة محتويات FlexGrid على الطابعة (مجرد فكرة)

Dim old_width As Integer
Private Sub cmdPrint_Click()
old_width = MSGrid.Width
MSGrid.Width = Printer.Width
Printer.paintpicture MSGrid.picture, 0, 0
Printer.Enddoc
MSGrid.Width = old_width
End Sub

63

هذا الكود لمعرفة عدد الاسطر في مربع النص TextBox

Private Declare Function SendMessageLong Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const EM_GETLINECOUNT = &HBA
Private Sub Command1_Click()
Dim lineCount As Long
On Local Error Resume Next
lineCount = SendMessageLong(Text1.hwnd, EM_GETLINECOUNT, 0&, 0)
MsgBox Format$(lineCount, "##,###")
End Sub

64

لفتح وإغلاق سواقة الأقراص المدمجة

Private Declare Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" (ByVal lpstrCommand As String, ByVal _
lpstrReturnString As String, ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long
'?E?
Private Sub cmdOpen_Click()
retvalue = mciSendString("set CDAudio door open", _
returnstring, 127, 0)
End Sub
'CU?C?
Private Sub cmdClose_Click()
retvalue = mciSendString("set CDAudio door closed", _
returnstring, 127, 0)
End Sub

65

هذا الكود لمنع تشغيل أكثر من نسخة من برنامجك

Private Sub Form_Load()
If App.PrevInstance = True Then
MsgBox "
لا يمكن تشغيل أكثر من نسخة من البرنامج"
Unload Me
Exit Sub
End If
End Sub

66

اجعل برنامجك فوق الجميع always on top

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

67

هاذا كود لمعرفة العدد الاولي فقط ارسم كوماند مع ليبل و تست

Private Sub Command1_Click()
Dim s
Dim a

s = Val(Text1.Text)
If s = 1 Or s = 0 Then
Label1.Caption = "
عدد غير أولي"
GoTo 20
End If

For i = 2 To (s - 1)

If (s / i) = Int(s / i) Then

a = a + 1

Else
a = a
End If
Next i
If a = 0 Then

Label1.Caption = "
عدد أولي"
Else
Label1.Caption = "
عدد غير أولي"
End If

20 End Sub

Private Sub Text1_Change()
'
هذا الكود يرسل رسالة للمستخدم إذا أدخل غير الارقام
If Not IsNumeric(Text1.Text) Then
'
المفتاح ليس رقم
MsgBox ("
أدخل أرقاما فقط
")
Text1.Text = ""
End If
End Sub

68

هذه كودات متفرقة
كود يعمل إذا ضغط على حرف يكتبه ثم يكتب = ثم يكتب قيمته على اللوحة


code:

Private Sub Form_KeyPress(KeyAscii As Integer)
Print Chr$(KeyAscii) & "=" & KeyAscii
End Sub

69

كود يحول الحروف الإنجليزية لأحرف كبيرة

Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr$(KeyAscii)))
End Sub

70

كود يعمل في مربع تست يقوم بأن يجعل المستخدم فقط يدخل أرقام من صفر إلى 9 و إذا ضغط على ازرار في الكي بورد لا يطبعها في التست بوكس

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
KeyAscii = 0
End If
End Sub

71

كود للبحث عن كلمة في التست بوكس
يجب وضع تست

Private Sub Form_Load()
Text1.Text = "Two of the peak human experiences"
Text1.Text = Text1.Text & " are good food and classical music."
End Sub
Private Sub Form_Click()
Dim Search, Where ' Declare variables.
' Get search string from user.
Search = InputBox("Enter text to be found:")
Where = InStr(Text1.Text, Search) ' Find string in text.
If Where Then ' If found,
Text1.SetFocus
Text1.SelStart = Where - 1 ' set selection start and
Text1.SelLength = Len(Search) ' set selection length.
Else
MsgBox "String not found." ' Notify user.
End If
End Sub
[code]



كود لتحريك الفورم بواسطة الأسهم فقط يلصق في الكود
[code]
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal v As Long) As Integer '
للحركة
'
الدالة
'GetAsyncKeyState
'
تستقبل أي زر
'
حتى إذا لم يكن له رقم آسكي

'
هذا مثال على تحريك الفورم بواسطة الأسهم
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If GetAsyncKeyState(37) Then '
يسار
Left = Left - 15
End If

If GetAsyncKeyState(38) Then '
أعلى
Top = Top - 15
End If

If GetAsyncKeyState(39) Then '
يمين
Left = Left + 15
End If

If GetAsyncKeyState(40) Then '
أسفل

Top = Top + 15
End If
End Sub

72

هذه دالة تفيد في الرسم مستطيل له حواف دائرية"

-------------------------------------------------------------------------------- Private Sub Command1_Click()
Dim i As Single
Dim a As Integer
i = Me.hdc
a = RoundRect(i, 0, 0, 100, 100, 50, 50)
End Sub

Public Declare Function RoundRect Lib "gdi32" Alias "RoundRect" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long

73

لنقل ملف من مسار الى مسار اخر

Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long
Private Sub Command1_Click()
MoveFile "c:\my documents\a.txt", "c:\a.txt"
End Sub

74

هذا الكود يقوم بتغيير ارتفاع قائمة مربع السرد Combobox

'Copyright (c) www.code4arab.com
Private Declare Function MoveWindow Lib "user32" _
(ByVal hwnd As Long, ByVal x As Long, ByVal y As _
Long, ByVal nWidth As Long, ByVal nHeight As Long, _
ByVal bRepaint As Long) As Long

Public Sub SetComboHeight(oComboBox As ComboBox, lNewHeight As Long)
Dim oldscalemode As Integer
If TypeOf oComboBox.Parent Is Frame Then Exit Sub

' Change the ScaleMode on the parent to Pixels.
oldscalemode = oComboBox.Parent.ScaleMode
oComboBox.Parent.ScaleMode = vbPixels

' Resize the combo box window.
MoveWindow oComboBox.hwnd, oComboBox.Left, _
oComboBox.Top, oComboBox.Width, lNewHeight, 1

' Replace the old ScaleMode
oComboBox.Parent.ScaleMode = oldscalemode
End Sub


Private Sub Form_Load()
Call SetComboHeight(Combo1, 400) ' 400 Pixels
End Sub

75

هذا الكود يقوم بتغيير عرض قائمة مربع السرد Combobox

'Copyright (c) www.code4arab.com
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Long) As Long

Private Const CB_SETDROPPEDWIDTH = &H160

Public Sub SetComboWidth(oComboBox As ComboBox, lWidth As Long)
' lWidth is in pixels
SendMessage oComboBox.hwnd, CB_SETDROPPEDWIDTH, lWidth, 0
End Sub

Private Sub Form_Load()
SetComboWidth Combo1, 400
End Sub

76

كيف تقوم بتعيين مفتاح لبرنامجك (Hotkey) أي عندما يتم الضغط عليه في أي مكان في النظام يتم تنفيذ الأمر المطلوب!

الان في الكود التالي سنقوم بتعيين المفتاح
ALT+Z
لإظهار النموذج:

'Copyright (c) www.code4arab.com
Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Long) As Long

Private Declare Function DefWindowProc Lib "user32" _
Alias "DefWindowProcA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

Private Const WM_SETHOTKEY = &H32
Private Const WM_SHOWWINDOW = &H18
Private Const HK_SHIFTA = &H141 'Shift + A
Private Const HK_SHIFTB = &H142 'Shift + B
Private Const HK_CONTROLA = &H241 'Control + A
Private Const HK_ALTZ = &H45A ' ALT+Z

Private Sub Form_Load()
Me.WindowState = vbMinimized
' ALT+Z
نقوم بتعيين المفتاح
erg& = SendMessage(Me.hwnd, WM_SETHOTKEY, HK_ALTZ, 0)
'
يتم التأكد من أن المفتاح الذي تم اختياره غير مستخدم من قبل تطبيق آخر
If erg& <> 1 Then
MsgBox "
يجب عليك تعيين مفتاح آخر", vbOKOnly, "Error"
End If
'
لإظهار النافذة عند الضغط على المفتاح المعين

DefWindowProc Me.hwnd, WM_SHOWWINDOW, 0, 0
End Sub

 

 

: : : : : : : : : : : : : : : : : : : :

:: الصفحة الرئيسيـــ Index ـــــة :: حول الموقــ About me ــع :: اربطنا بموقعــــ Link this site in your site ـــك :: اتصــــ Send to me ـــل بي ::

: : جميع الحقوق محفوظة لــ حازم مصطفـى الزواغـــــــــــي (حازم ديزاين) 2003 - 2004 : :

: :  2003 - 2004 (Hazim Mustafa Al-Zwaghy)  Hazim Design . all rights reserved  : :

1