View Full Version : مبتدی: تغییر اندازه خودکار تکست باکس
_mojitaba_
جمعه 18 بهمن 1392, 13:01 عصر
دوستان سلام من یه سوالی داشتم
شما در نظر بگیرید من یه تکست باکسی دارم با اندازه مشخص
حالا میخوام اگه متنی که من وارد میکنم از اندازه تکست باکس بیشتر شد به طول و عرض تکست باکس اضافه بشه
یعنی اگه Enter زدم و اومدم خط بعدی رو بنویسم به ارتفاع تکست باکس اضافه بشه
و اگه مثلا 100 کاراکتر نوشتم اندازه تکست باکسم به اندازه 101 کاراکتر بشه
نمیدونم متوجه منظورم میشید یانه؟
ممنون میشم کسی جواب بده به سوالم :قلب:
Mr.305
جمعه 18 بهمن 1392, 16:09 عصر
اینو امتحان کن:
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
Text1.Height = Text1.Height + 50
End If
End Sub
سید حمید حق پرست
جمعه 18 بهمن 1392, 16:34 عصر
سلام علیکم
کد مورد نظر شما :
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 Form_Load()
Set Me.Font = Text1.Font
Text1.Text = vbNullString
End Sub
Private Sub Text1_Change()
SetTextHeight Text1
End Sub
Private Sub SetTextHeight(txtBox As TextBox)
Dim lHeight As Long, lLineCount As Long
With txtBox
lLineCount = SendMessageLong(.hWnd, EM_GETLINECOUNT, 0&, 0&)
lHeight = 90 + lLineCount * Me.TextHeight("A")
If Not lHeight = .Height Then .Height = lHeight
End With
End Sub
موفق باشید.
یا علی (ع)
_mojitaba_
جمعه 18 بهمن 1392, 17:11 عصر
سید حمید حق پرست دستتون درد نکنه اما کد فقط برای تنظیم height کار میکنه همین کارو میشه رو width هم انجام بدید
سید حمید حق پرست
جمعه 18 بهمن 1392, 18:19 عصر
برای Width هم از کد زیر استفاده کنید :
Private Sub Text1_Change()
SetTextWidth Text1
End Sub
Public Sub SetTextWidth(tbox As TextBox)
tbox.Width = TextWidth(tbox & String(5, " "))
End Sub
موفق باشید.
یا علی (ع)
سید حمید حق پرست
جمعه 18 بهمن 1392, 18:58 عصر
یک روش ساده تر برای هردو (Width و Height) :
Private Sub SetTextSize(TxtBox As TextBox)
TxtBox.Width = TextWidth(TxtBox.Text) + 120
TxtBox.Height = TextHeight(TxtBox.Text) + 120
End Sub
Private Sub Text1_Change()
SetTextSize Text1
End Sub
موفق باشید.
یا علی (ع)
vbhamed
جمعه 18 بهمن 1392, 19:22 عصر
برای Width هم از کد زیر استفاده کنید :
Private Sub Text1_Change()
SetTextWidth Text1
End Sub
Public Sub SetTextWidth(tbox As TextBox)
tbox.Width = TextWidth(tbox & String(5, " "))
End Sub
سلام
البته در اين روش شما از متدهاي TextWidth و TextHeight مربوط به فرم استفاده كردين و اگر فونت فرمتون مشابه فونت تكست باكس نباشه به مشكل برميخوريد
براي رفع اين مشكل بهتره يك PictureBox مخفي روي فرم بزاريد و فونت و سايز اون رو دقيقا براي فونت تكست باكس بزاريد و از متدهاي TextWidth و TextHeight اون استفاده كنيد مثلا به شكل زير
Picture1.TextWidth(txtBox.text)
سید حمید حق پرست
جمعه 18 بهمن 1392, 19:27 عصر
سلام
البته در اين روش شما از متدهاي TextWidth و TextHeight مربوط به فرم استفاده كردين و اگر فونت فرمتون مشابه فونت تكست باكس نباشه به مشكل برميخوريد
براي رفع اين مشكل بهتره يك PictureBox مخفي روي فرم بزاريد و فونت و سايز اون رو دقيقا براي فونت تكست باكس بزاريد و از متدهاي TextWidth و TextHeight اون استفاده كنيد مثلا به شكل زير
Picture1.TextWidth(txtBox.text)
بله درست میگید (با کد Font = TxtBox.Font هم میشه مشکل حل کرد)، مشکل دیگه این کد اینه که با کد پست 3 هماهنگ نیست و تکست بهم میخوره
روش پست 6 بهتر هستش، برای فونت هم به شکل زیر دیگه مشکلی وجود نداره :
Private Sub SetTextSize(TxtBox As TextBox)
Font = TxtBox.Font
TxtBox.Width = TextWidth(TxtBox.Text) + 120
TxtBox.Height = TextHeight(TxtBox.Text) + 120
End Sub
Private Sub Text1_Change()
SetTextSize Text1
End Sub
یا علی (ع)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.