View Full Version : سوال: قرار دادن tag بین متن
امین مستانی
شنبه 21 مرداد 1391, 15:42 عصر
با عرض سلام
طاعات و عبادات قبول
بنده دارم روی یک برنامه کار میکنم که میخوام با کلیک بر روی یک دکمه متن انتخاب شده در RichTextBox میان tag ها قرار بگیره برای مثال با کلیک بر روی کامند متن "سلام" به این صورت شود "[b/]سلام[b]"
و همین طور برعکس یعنی با کلیک بر روی یک کامند متن سلام را به صورت بولد برای پیش نمایش نشان دهد .
خودم این نمونه سورس را نوشتم که منتها متن را بهم میریزد
Dim StrInput
If Text2.SelLength = 0 Then
MsgBox "ÇÈÊÏÇ ãÊä ãæÑÏäÙÑ ÑÇ ÇäÊÎÇÈ ˜äíÏ", vbInformation, "Ñä"
Else
StrInput = Text2.SelText
Text2.SelText = ""
Text2.SetFocus
SendKeys "<b>" & StrInput & "</b>"
End If
شما نمونه سورسی برای سوالاتم ندارید؟؟
با تشکر
ramzdar
شنبه 21 مرداد 1391, 16:34 عصر
دو تا دکمه و دو تا RichTextBox بذار روی فرم و اسم RichTextBox ها رو به ترتیب به Text1 و Text2 تغییر بده و کد زیر رو تو بخش کد قرار بده
Private Sub Command1_Click()
Text1.Text = "<b>" & Text1.Text & "</b>"
End Sub
Private Sub Command2_Click()
On Error Resume Next
Dim StrInput As String
StrInput = Split(Text1.Text, "<b>")(1)
StrInput = Split(StrInput, "</b>")(0)
Text2.Text = StrInput
Text2.SelStart = 0
Text2.SelLength = Len(StrInput)
Text2.SelBold = True
End Sub
m.4.r.m
شنبه 21 مرداد 1391, 16:43 عصر
ببین این به کارت میاد ؟
http://uplod.ir/iq4vhen15f4f/TaGG.zip.htm
امین مستانی
شنبه 21 مرداد 1391, 17:00 عصر
ممنون از پاسخ هاتون
ولی من میخوام که متن انتخاب شده در RichTextBox دارای تگ شود نه کل متن
مشکل من با متن انتخاب شده است
m.4.r.m
شنبه 21 مرداد 1391, 17:35 عصر
بیا داداش برات نوشتم اما تشکر یادت نره ها تو تکست باکس متن داخل Richtextbox رو می نویسی مثلا " Salam " بعد کلیک کن نتیجه رو ببین
http://uplod.ir/mmp3u82p10k0/Richtextbox.zip.htm
امین مستانی
شنبه 21 مرداد 1391, 19:44 عصر
ممنون از پاسختون . کارم راه افتاد .
ولی در متن های فارسی حروف جابجا میشوند . راهی برای درست کردن آنها نیست ؟؟
با تشکر
Mr'Jamshidy
یک شنبه 22 مرداد 1391, 01:50 صبح
ممنون از پاسختون . کارم راه افتاد .
ولی در متن های فارسی حروف جابجا میشوند . راهی برای درست کردن آنها نیست ؟؟
با تشکر
نه متاسفانه
چون کامپوننت ها (اکثرا) برای زبان های برای زبان های چپ به راست کانفیگ شده نمیشه کاریش کرد
البته شاید از RightToLeft بتونی جواب بگیری
http://barnamenevis.org/showthread.php?307981-Right-TO-left-%DA%A9%D8%B1%D8%AF%D9%86-%D9%81%D9%88%D8%B1%D9%85&p=1351987&viewfull=1#post1351987
امین مستانی
یک شنبه 22 مرداد 1391, 04:37 صبح
ممنونم
ولی باز هم همانطور به صورت بهم ریخته است
محسن واژدی
یک شنبه 22 مرداد 1391, 05:19 صبح
سلام علیکم
تابع زیر را هم بررسی کنید: Public Sub AddRemoveTag(RTBox As RichTextBox, sStartTag$, sEndTag$)
On Error Resume Next
Dim inpu$
Dim lSS&, lSL&
With RichTextBox1
lSS& = .SelStart
lSL& = .SelLength
If lSL& = 0 Then
MsgBox "ابتدا متن را انتخاب کنيد", vbInformation
Else
If lSS& > Len(sStartTag$) And (lSL& + Len(sEndTag$)) < Len(.Text) Then
If LCase(Mid(.Text, (lSS& - Len(sStartTag$)) + 1, Len(sStartTag$))) = LCase(sStartTag$) Then
If LCase(Mid(.Text, (lSS& + lSL&) + 1, Len(sEndTag$))) = LCase(sEndTag$) Then
.SetFocus
.SelStart = (lSS& - Len(sStartTag$))
.SelLength = lSS& + Len(sEndTag$)
.SelText = Mid(.SelText, Len(sStartTag$) + 1, Len(.SelText) - (Len(sStartTag$) + Len(sEndTag$)))
.SelStart = lSS& - Len(sStartTag$)
.SelLength = lSL& - Len(sEndTag$)
Else
GoTo AddTag
End If
Else
GoTo AddTag
End If
Else
GoTo AddTag
End If
Exit Sub
AddTag:
inpu$ = .SelText
inpu$ = sStartTag$ & inpu$ & sEndTag$
.SelText = inpu$
End If
End With
End Sub
برای مثال: AddRemoveTag RichTextBox1,"", ""
و یا:
AddRemoveTag RichTextBox1,"", ""
البته بایستی اول متن را high-light و سپس تابع را اجرا کنیم، برای کاهش وابستگی تابع به این مورد هم بایستی کمی کدها را اضافه تر کنیم :)
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.