M.T.P
یک شنبه 22 فروردین 1389, 19:56 عصر
با توجه به اینکه سوالات متعددی در رابطه با عنوان این تاپیک در این تالار وجود داره و پاسخ های متفاوتی هم از طرف دوستان به این سوال داده شده (ضمن احترام به نظر کاربران) از مدیران عزیز خواهشمندم چنانچه این پست رو لازم و مفید میدونن به عنوان یک پست کلیدی در رابطه با این موضوع به کاربران معرفی کنند و یا صورت لزوم این پست رو به انتهای تاپیک مشابه دیگه منتقل کنید.
بهترین روش و استاندارد ترین روش برای این کار استفاده از API و استاندارد خود ویندوز هست.
کد زیر رو به برنامه اضافه کنید.
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
Const GWL_STYLE = (-16)
Const ES_NUMBER = &H2000&
Function TextBox_NumberMode(txt As TextBox, Flag As Boolean)
Dim curstyle As Long
Dim newstyle As Long
Dim SetNoNums As Long
curstyle = GetWindowLong(txt.hwnd, GWL_STYLE)
If Flag Then
curstyle = curstyle Or ES_NUMBER
Else
curstyle = curstyle And (Not ES_NUMBER)
End If
SetNoNums = SetWindowLong(txt.hwnd, GWL_STYLE, curstyle)
txt.Refresh
End Function
با فرض اینکه TextBox شما اسمش Text1 باشه روش استفاده از این تابع بصورت زیر میباشد:
TextBox_NumberMode Text1,True
چنانچه از Theme ویندوز در برنامه خود استفاده کرده باشید در صورت وارد نمودن حروف در تکس باکس بجای عدد با پیغامی از طرف ویندوز به شکل زیر مواجه خواهید شد.(عکس ضمیمه)
بهترین روش و استاندارد ترین روش برای این کار استفاده از API و استاندارد خود ویندوز هست.
کد زیر رو به برنامه اضافه کنید.
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
Const GWL_STYLE = (-16)
Const ES_NUMBER = &H2000&
Function TextBox_NumberMode(txt As TextBox, Flag As Boolean)
Dim curstyle As Long
Dim newstyle As Long
Dim SetNoNums As Long
curstyle = GetWindowLong(txt.hwnd, GWL_STYLE)
If Flag Then
curstyle = curstyle Or ES_NUMBER
Else
curstyle = curstyle And (Not ES_NUMBER)
End If
SetNoNums = SetWindowLong(txt.hwnd, GWL_STYLE, curstyle)
txt.Refresh
End Function
با فرض اینکه TextBox شما اسمش Text1 باشه روش استفاده از این تابع بصورت زیر میباشد:
TextBox_NumberMode Text1,True
چنانچه از Theme ویندوز در برنامه خود استفاده کرده باشید در صورت وارد نمودن حروف در تکس باکس بجای عدد با پیغامی از طرف ویندوز به شکل زیر مواجه خواهید شد.(عکس ضمیمه)