PDA

View Full Version : سوال: کد خاصیتهای MaxLength و Alignment برای ابزار ComboBox



Hassan2500
چهارشنبه 03 آبان 1391, 13:03 عصر
سلام

1- کدی میخوام که فقط یک حرف در ComboBox نوشته و پیست بشه راستش این ابزار خاصیت MaxLength رو نداره

2- کدی میخوام که حرف در وسط ComboBox قرار بگیره راستش این ابزار خاصیت Alignment رو نداره

SlowCode
چهارشنبه 03 آبان 1391, 15:03 عصر
سلام
جواب سوال 1: میتونی از کد زیر استفاده کنی. فقط بهتره style کمبوباکس رو روی 2 تنظیم کنی.
Private Sub Combo1_Change()
Combo1.Text = Left(Combo1.Text, 1)
Combo1.SelStart = 1
End Sub

واسه سوال دوم هم نمی دونم راه ساده تری هست یا نه، ولی میتونی از کد زیر استفاده کنی.
Private Sub Form_Load()
Dim StrText As String, IntChar, NullSpaces As Integer
For i = 0 To 10
StrTxt = "Item" & i
IntChar = Int((Combo1.Width) / 45)
NullSpaces = IntChar - Len(StrTxt)
Combo1.AddItem String(NullSpaces / 2.5, " ") & StrTxt
Next
End Sub

توضیح: strText متنیه که قراره وارد کمبوباکس بشه. واسه اینکه بدونیم چندتا کاراکتر توی کمبوباکس میشه نشون داد پهناش رو تقسیم بر پهنای کاراکتر فاصله میکنیم(45) و توی IntChar ذخیره میکنیم. توی NullSpaces هم فضاهای خالی کنترل رو ذخیره میکنیم، یعنی تعداد کل کاراکتر هایی که میشه نشون داد منهای متن کنترل. بعدش هم به اندازه فضاهای خالی فاصله تولید میکنم تا متن مورد نظر بیافته وسط.

محسن واژدی
چهارشنبه 03 آبان 1391, 15:12 عصر
1- کدی میخوام که فقط یک حرف در ComboBox نوشته و پیست بشه راستش این ابزار خاصیت MaxLength رو نداره
سلام علیکم
هم میتوانیم از کد زیر استفاده کنیم:
Private Sub Combo1_Change()
If Len(Combo1) > 1 Then Combo1 = Left$(Combo1, 1): Combo1.SelStart = 1
End Sub


یا API ی زیر:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Const CB_LIMITTEXT = &H141

Private Sub Form_Load()
SendMessage Combo1.hwnd, CB_LIMITTEXT, 1, 0&
End Sub


موفق باشید

Hassan2500
جمعه 05 آبان 1391, 16:45 عصر
واسه سوال دوم هم نمی دونم راه ساده تری هست یا نه، ولی میتونی از کد زیر استفاده کنی.
Private Sub Form_Load()
Dim StrText As String, IntChar, NullSpaces As Integer
For i = 0 To 10
StrTxt = "Item" & i
IntChar = Int((Combo1.Width) / 45)
NullSpaces = IntChar - Len(StrTxt)
Combo1.AddItem String(NullSpaces / 2.5, " ") & StrTxt
Next
End Sub

توضیح: strText متنیه که قراره وارد کمبوباکس بشه. واسه اینکه بدونیم چندتا کاراکتر توی کمبوباکس میشه نشون داد پهناش رو تقسیم بر پهنای کاراکتر فاصله میکنیم(45) و توی IntChar ذخیره میکنیم. توی NullSpaces هم فضاهای خالی کنترل رو ذخیره میکنیم، یعنی تعداد کل کاراکتر هایی که میشه نشون داد منهای متن کنترل. بعدش هم به اندازه فضاهای خالی فاصله تولید میکنم تا متن مورد نظر بیافته وسط.

جناب محسن 15 من منظورم اینه که حرف در وسط خود Combo بدون اینکه فاصله ای قبل و بعدش باشه قرار بگیره نه در وسط List اون قرار بگیره در ضمن در Combo هم فقط یه حرف نوشته میشه

Hassan2500
یک شنبه 07 آبان 1391, 17:20 عصر
کسی نیست پاسخ بده