ورود

View Full Version : سوال: چند سؤال راجع به Text



Hassan2500
پنج شنبه 05 مرداد 1391, 12:56 عصر
سلام

1- چرا این کد رو وقتی در رویداد Change در Text1 مینویسم کار نمیکنه و ارور میده کد صحیحش چی میشه

Text1.ScrollBars = vbVertical

2- چه کدی بنویسم که اگه خط چهارم در Text1 پر شد سپس ScrollBars برای Text1 برابر با Vertical بشه

3- چه کدی بنویسم که وقتی روی یه جمله در تکست1 دوبار کلیک کردم اون کلمه ای که موس روشه آبی بشه و انتخاب بشه و اگه سه بار کلیک کردم کل جمله انتخاب بشه

Hassan2500
پنج شنبه 05 مرداد 1391, 21:09 عصر
کسی نیست جواب بده

the king
پنج شنبه 05 مرداد 1391, 21:30 عصر
سلام

1- چرا این کد رو وقتی در رویداد Change در Text1 مینویسم کار نمیکنه و ارور میده کد صحیحش چی میشه

Text1.ScrollBars = vbVertical

با عرض پوزش بعضی از مشخصه هایی که در کمپوننت های استاندارد قرار داده شده صرفا زمانی که قراره کنترل ساخته بشه (زمان طراحی فرم)
مشخص می شوند و در زمان اجرای کد فقط-خواندنی هستند، این مشخصه ScrollBars هم از همون سری مشخصه ها است که در زمان
اجرای کدتان نمی توانید مقدارش را عوض کنید. اگر واقعا لازمه که در زمان اجرا تغییر داده بشه، بهتره که از قبل چندین TextBox با حالت های
مختلف ScrollBars ایجاد کنید و در زمان اجرای کد هر دفعه صرفا یکی از حالت ها رو نشون بدید و Visible سایر حالت ها رو False کنید.



2- چه کدی بنویسم که اگه خط چهارم در Text1 پر شد سپس ScrollBars برای Text1 برابر با Vertical بشه

متغیر n تعداد سطر های داخل Text1 است به شرطی که MultiLine اش True باشد :

Private Const EM_GETLINECOUNT As Long = &HBA
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long

Private Sub Text1_Change()
Dim n As Long
n = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, ByVal 0&)
End Sub




3- چه کدی بنویسم که وقتی روی یه جمله در تکست1 دوبار کلیک کردم اون کلمه ای که موس روشه آبی بشه و انتخاب بشه و اگه سه بار کلیک کردم کل جمله انتخاب بشه

انتخاب شدن کلمه با دوبار کلیک کردن که خاصیت ذاتی TextBox ها است، می مونه سه بار کلیک.

Private lastTime As Single

Private Sub Text1_DblClick()
lastTime = Timer
End Sub

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
If Timer < lastTime + 0.5 Then
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End If
End If
End Sub

Hassan2500
پنج شنبه 05 مرداد 1391, 22:12 عصر
دستتون درد نکنه کد سؤال3 بخوبی کار میکنه اما در مورد کد سؤال2 در کجای کد تعداد خطهای تکست رو مشخص کنم که اگه از اون بیشتر شد سپس

Text1.ScrollBars = vbVertical

اگه میشه این قسمت رو بیشتر توضیح بدید

(بهتره که از قبل چندین TextBox با حالت های مختلف ScrollBars ایجاد کنید و در زمان اجرای کد هر دفعه صرفا یکی از حالت ها رو نشون بدید و Visible سایر حالت ها رو False کنید)

the king
پنج شنبه 05 مرداد 1391, 22:32 عصر
دستتون درد نکنه کد سؤال3 بخوبی کار میکنه اما در مورد کد سؤال2 در کجای کد تعداد خطهای تکست رو مشخص کنم که اگه از اون بیشتر شد سپس

Text1.ScrollBars = vbVertical

اگه میشه این قسمت رو بیشتر توضیح بدید

(بهتره که از قبل چندین TextBox با حالت های مختلف ScrollBars ایجاد کنید و در زمان اجرای کد هر دفعه صرفا یکی از حالت ها رو نشون بدید و Visible سایر حالت ها رو False کنید)

فکر کنم لازمه مثال پیوستی رو ببینید، توجه داشته باشید که الان روی فرم دو تا TextBox ئه،
دقیقا یک اندازه و روی هم. یکی شون Scrollbar عمودی داره و اون یکی نداره. اما همیشه فقط
یکی شون نمایش داده میشه. وقتی طول سطر ها عوض شد بدون مکث و اختلال جاشون با هم
عوض میشه، یکی مخفی میشه و اون یکی آشکار :

90272

ویرایش : کد Load رو عوض کنید :

Private Sub Form_Load()
Text1_Change 1
End Sub