منتدى مصر التقني
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

محاذاة النص على زر الأمر

اذهب الى الأسفل

محاذاة النص على زر الأمر Empty محاذاة النص على زر الأمر

مُساهمة من طرف end.sub الإثنين سبتمبر 30, 2013 4:31 am

بسم الله الرحمن الرحيم
محاذاة النص على زر الأمر فى مشروع الفجوال بيسك 6 كانت من الامور الصعبة لذلك كنا بنستخدم المسافات فى النص لمحاذاة النص سواء كان يمين أو شمال ....الان يمكنك فعل ذلك بسهولة و يمكنك ايضا محاذاه النص أعلى أو اسفل الزر وذلك من خلال بعض الاكواد السهلة و باستدعاء كل من GetWindowLong و SetWindowLong وذلك على النحو التالى :

1_ نقوم بانشاء وحدة برمجية Module1 و كتابة التعليمات البرمجية التالية فيها

_ أستدعاء الوظيفتين كل من GetWindowLong و SetWindowLong على النحو التالى :

الكود:
Option Explicit

Private Declare Function GetWindowLong Lib _
    "user32" Alias "GetWindowLongA" (ByVal hWnd _
    As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib _
    "user32" Alias "SetWindowLongA" (ByVal hWnd _
    As Long, ByVal nIndex As Long, ByVal _
    dwNewLong As Long) As Long
_ نقوم بالاعلان عن الثابت التى سيتم أسخدامها فى تحديد المحاذاة سواء كانت أفقية أو عمودية على النحو التالى :

الكود:
Private Const BS_LEFT As Long = &H100
Private Const BS_RIGHT As Long = &H200
Private Const BS_CENTER As Long = &H300
Private Const BS_TOP As Long = &H400
Private Const BS_BOTTOM As Long = &H800
Private Const BS_VCENTER As Long = &HC00

Private Const BS_ALLSTYLES = BS_LEFT Or BS_RIGHT _
    Or BS_CENTER Or BS_TOP Or BS_BOTTOM Or _
    BS_VCENTER

Private Const GWL_STYLE& = (-16)
_ نقوم بإنشاء Enum لمجموعة المتغيرات التى سيتم التعبير عنها فى محاذاة النص

الكود:
Public Enum bsHorizontalAlignments
    bsLeft = BS_LEFT
    bsRight = BS_RIGHT
    bsCenter = BS_CENTER
End Enum

Public Enum bsVerticalAlignments
    bsTop = BS_TOP
    bsBottom = BS_BOTTOM
    bsVCenter = BS_VCENTER
End Enum
_ سنقوم بانشاء الوظيفة AlignButtonText لاستدعائها فى محاذاة النص على النحو التالى :

الكود:
Public Sub AlignButtonText(cmd As CommandButton, _
    Optional ByVal HStyle As _
    bsHorizontalAlignments = bsCenter, _
    Optional ByVal VStyle As _
    bsVerticalAlignments = bsVCenter)

    Dim oldStyle As Long

   oldStyle = GetWindowLong(cmd.hWnd, GWL_STYLE)
   oldStyle = oldStyle And (Not BS_ALLSTYLES)
   Call SetWindowLong(cmd.hWnd, GWL_STYLE, oldStyle Or HStyle Or VStyle)
    cmd.Refresh
End Sub
_إذن الكود الكامل للوحدة البرمجية على النحو التالى :

الكود:
Option Explicit

Private Declare Function GetWindowLong Lib _
    "user32" Alias "GetWindowLongA" (ByVal hWnd _
    As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib _
    "user32" Alias "SetWindowLongA" (ByVal hWnd _
    As Long, ByVal nIndex As Long, ByVal _
    dwNewLong As Long) As Long

Private Const BS_LEFT As Long = &H100
Private Const BS_RIGHT As Long = &H200
Private Const BS_CENTER As Long = &H300
Private Const BS_TOP As Long = &H400
Private Const BS_BOTTOM As Long = &H800
Private Const BS_VCENTER As Long = &HC00

Private Const BS_ALLSTYLES = BS_LEFT Or BS_RIGHT _
    Or BS_CENTER Or BS_TOP Or BS_BOTTOM Or _
    BS_VCENTER

Private Const GWL_STYLE& = (-16)

Public Enum bsHorizontalAlignments
    bsLeft = BS_LEFT
    bsRight = BS_RIGHT
    bsCenter = BS_CENTER
End Enum

Public Enum bsVerticalAlignments
    bsTop = BS_TOP
    bsBottom = BS_BOTTOM
    bsVCenter = BS_VCENTER
End Enum

Public Sub AlignButtonText(cmd As CommandButton, _
    Optional ByVal HStyle As _
    bsHorizontalAlignments = bsCenter, _
    Optional ByVal VStyle As _
    bsVerticalAlignments = bsVCenter)

    Dim oldStyle As Long

   oldStyle = GetWindowLong(cmd.hWnd, GWL_STYLE)
   oldStyle = oldStyle And (Not BS_ALLSTYLES)
   Call SetWindowLong(cmd.hWnd, GWL_STYLE, oldStyle Or HStyle Or VStyle)
    cmd.Refresh
End Sub

2_ فى النافذة سنقوم باستدعاء الطريقة لمحاذاة النص على النحو التالى :

الكود:
AlignButtonText Command1, bsRight, bsVCenter
حيث أن :

_ Command1 ...وهو الاسم البرمجى لزر الامر المراد محاذاة نصه
_bsRight .........هو اتجاة المحاذاة الافقية للنص
_  bsVCenter .....هو اتجاة المحاذاة العامودية للنص

و النتجية على النحو التالى :

محاذاة النص على زر الأمر 201809532
end.sub
end.sub
.....
.....

تاريخ التسجيل : 15/08/2013
المساهمات : 70
النقاط : 132
التقيم : 10
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى