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

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

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

مُساهمة من طرف 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 .....هو اتجاة المحاذاة العامودية للنص

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


end.sub
.....
.....

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

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

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


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