PDA

View Full Version : سوال: Rich TextBox



Salar.Shayegan
چهارشنبه 28 تیر 1391, 15:53 عصر
سلام
چند تا سوال داشتم در مورد Rich TextBox

- اگه بخوام تو برنامم با زدن یه Command Button تمام پرانتزهای متن تکست باکس آبی بشن چکار کنم؟

- چرا خاصیت ScrollBars در رابطه با این کنترل عمل نمیکند؟

- کدی که با زدن یه Command Button باعث انتخاب همه ی متن چیه؟

SlowCode
چهارشنبه 28 تیر 1391, 16:10 عصر
- اگه بخوام تو برنامم با زدن یه Command Button تمام پرانتزهای متن تکست باکس آبی بشن چکار کنم؟
به نظر من باید متن رو جستجو کنی بعد هرجا که به پرانتز رسیدی رنگش رو عوض کنی.(البته روش جالبی نیست)

- چرا خاصیت ScrollBars در رابطه با این کنترل عمل نمیکند؟
مال من عمل میکنه.

- کدی که با زدن یه Command Button باعث انتخاب همه ی متن چیه؟
text1.SelStart = 0
text1.SelLength = Len(txt)

محسن واژدی
چهارشنبه 28 تیر 1391, 16:19 عصر
سلام علیکم

- اگه بخوام تو برنامم با زدن یه Command Button تمام پرانتزهای متن تکست باکس آبی بشن چکار کنم؟
روال زیر را در ماژول کد یا فرم کپی کنید:
Public Sub ChngAllTextColor(RTB As RichTextBox, sTarText$, lColor&)
With RTB
Dim lLPos&
.Tag = .SelStart & "|" & .SelLength
Do
lLPos& = .Find(sTarText$, lLPos&)
If lLPos& > -1 Then
.SelColor = lColor&
lLPos& = lLPos& + 1
End If
Loop Until lLPos& = -1
.SetFocus
.SelStart = CLng(Split(.Tag, "|")(0))
.SelLength = CLng(Split(.Tag, "|")(1))

End With
End Sub

برای مثال:
Private Sub Command1_Click()
ChngAllTextColor RichTextBox1, "(", vbBlue
ChngAllTextColor RichTextBox1, ")", vbBlue
End Sub

البته سرعت انجام دستور بسته به حجم متن تغییر میکنه


- چرا خاصیت ScrollBars در رابطه با این کنترل عمل نمیکند؟
اول با انتخاب کنترل از فرم Properties خاصیت ScrollBars را فعال میکنیم


- کدی که با زدن یه Command Button باعث انتخاب همه ی متن چیه؟
Private Sub Command1_Click()
With RichTextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub

البته جناب محسن 15 هم اشاره کردند

موفق باشید

Salar.Shayegan
چهارشنبه 28 تیر 1391, 16:56 عصر
ممنون
من این کار ها رو انجام دادم ولی در مورد پرانتزها، اولین پرانتز رو آدم حسابش نکرد!!!:لبخند:
(اولین پرانتز متن آبی نشد...)

محسن واژدی
چهارشنبه 28 تیر 1391, 17:43 عصر
ممنون
من این کار ها رو انجام دادم ولی در مورد پرانتزها، اولین پرانتز رو آدم حسابش نکرد!!!:لبخند:
(اولین پرانتز متن آبی نشد...)
دوباره همین کد را از پست قبل بررسی کنید انشاءا... درسته

موفق باشید

Salar.Shayegan
چهارشنبه 28 تیر 1391, 17:47 عصر
ممنون حالا ممکنه یه توضیحی در مورد روال بدید چون خیلی پیچیده هست سر در نیاوردم!

محسن واژدی
چهارشنبه 28 تیر 1391, 18:49 عصر
خط 4، موضعیت متن انتخاب شده را موقتا در Tag کنترل ذخیره میکند
خط6، همانطور هم که پیداست جستجو را آغاز میکند، مکان جستجو هم از بعد از مکانیست که آخرین رشته یافت شده
خط9، موقعیت را یک کاراکتر به جلو می بریم در غیر اینصورت تابع Find همچنان موقعیت رشته فعلی یافت شده را برمیگرداند
خط13و14، مجددا رشته ای را که پیش از جستجو انتخاب شده را highlight می کند

موفق باشید