PDA

View Full Version : تغیر فونت خط خاص RichTextBox1



سپهر-111
چهارشنبه 08 شهریور 1391, 14:22 عصر
سلام دوستان



من با این دستور سایز فونت تغییر میدم




Private Sub Command1_Click()
Dim STR As String
STR = "This is Line "
With RichTextBox1
.SelLength = Len(STR)
.SelFontSize = 20
.Text STR & vbCrLf
End With
Endsub
Private Sub Command2_Click()
Dim STR As String
STR = "This is Line "
With RichTextBox1
.SelLength = Len(STR)
.SelFontSize = 10
.Text STR & vbCrLf
End With
Endsub

Command1 سایز فونتش 10هست
Command2 سایز فونت 20 است

ولی مشکل اینجاست که وقتی Command2 رو فشار میدم ، خط قبلی که به وسیله Command1 تو ریچ تکست ریخته بودم هم سایز فونتش میشه 10 ؟؟؟؟
چکار باید کنم
یه چیز شبیه این میخوام باشه
مثال:
این یک تست است
این یک تست است

چکار کنم بتم توی ریچ تکست باکس اینجوری بنویسم
ممنون میشم یاری نمایید

arenaw
چهارشنبه 08 شهریور 1391, 16:37 عصر
سلام
به خاطر اینکه SelStart رو مشخش نکردین.
SelStart = نقطه شروع انتخاب متن
SelLengh = اندازه متنی که انتخاب میکنه

سپهر-111
چهارشنبه 08 شهریور 1391, 16:46 عصر
سلام
به خاطر اینکه SelStart رو مشخش نکردین.
SelStart = نقطه شروع انتخاب متن
SelLengh = اندازه متنی که انتخاب میکنه


سلام دوست من
ممنون که پاسخ دادی
ولی SelStart هم استفاده کردم ولی جواب نگرفتم
اگه امکان داره این کد رو برام ویراش کنید که این جواب اینطور بشه

این یک تست است
این یک تست است

خدا اجرت بده:تشویق:

سپهر-111
چهارشنبه 08 شهریور 1391, 17:12 عصر
سلام
به خاطر اینکه SelStart رو مشخش نکردین.
SelStart = نقطه شروع انتخاب متن
SelLengh = اندازه متنی که انتخاب میکنه

میخوام خط اول توی ریچ تکست بنویسم
این یک تست است

در خط دوم بنویسم
این یک تست است

برای اینکه این تغییرات در خط اول و دوم داشته باشم
از چه کدی باید استفاده کنم
باتشکر

arenaw
چهارشنبه 08 شهریور 1391, 17:25 عصر
میخوام خط اول توی ریچ تکست بنویسم
این یک تست است

در خط دوم بنویسم
این یک تست است

برای اینکه این تغییرات در خط اول و دوم داشته باشم
از چه کدی باید استفاده کنم
باتشکر



اگه درست متوجه شده باشم:

Dim STR As String
STR = "This is a test"
With RichTextBox1
.Text = STR & vbCrLf & STR
.SelStart = 0
.SelLength = Len(STR)
.SelBold = True
.SelColor = vbBlack
.SelStart = Len(STR & vbCrLf)
.SelLength = Len(STR)
.SelBold = False
.SelColor = vbRed
End With

سپهر-111
چهارشنبه 08 شهریور 1391, 18:46 عصر
از پاسخ جناب arenaw (http://barnamenevis.org/member.php?203395-arenaw) ممنونم:تشویق:

ولی مشکلم هنوز حل نشده:گریه:
دوستان لطفا این کدها رو برسی کنید
(این کد ویرایش شده دوست عزیز kokopark (http://barnamenevis.org/member.php?192916-kokopark) هستش )


Function SelectText(rtb As RichTextBox, LineNumber As Long, lColor As Long, lBold As Boolean)
Dim Txt() As String
Txt = Split(rtb.Text, vbCrLf)
LineNumber = Val(LineNumber) - 1
rtb.SelStart = 0
rtb.SetFocus
rtb.SelStart = rtb.Find(Txt(LineNumber))
rtb.SelLength = Len(Txt(LineNumber))
rtb.SelColor = lColor
If lBold = True Then
rtb.SelBold = True
ElseIf lBold = False Then
rtb.SelBold = False
End If

End Function



Private Sub Command1_Click()
RichTextBox1.Text = "AAA"
Call SelectText(RichTextBox1, 1, vbRed, False)
End Sub


Private Sub Command2_Click()
RichTextBox1.Text = RichTextBox1.Text & vbCrLf & "BBB"
Call SelectText(RichTextBox1, 2, vbBlue, False)
End Sub


Private Sub Command3_Click()
RichTextBox1.Text = RichTextBox1.Text & vbCrLf & "CCC"
Call SelectText(RichTextBox1, 3, vbBlack, True)
End Sub


وقتی کامندیک رو میزنم نوشته اول به رنگ قرمز در میاد

وقتی کامند دو رو میزنم نوشته دوم به رنگ ابی در میاد

وقتی کامند سه رو میزنم نوشته سوم سیاه و نوشته دوم هم به رنگ قرمز در میاد؟؟؟
چرا اینجوری میشه ؟؟؟

ASedJavad
چهارشنبه 08 شهریور 1391, 23:48 عصر
سلام دوست عزیز
شما وقتی میخوای با ریچ تکست باکس کار کنی، برا اینکه کارت درست انجام شه، دو راه کلی داری
راه اول که بهترین راهه، اینه که اول کل متن مورد نظرتو بریزی تو ریچ تکست باکس، بعد شروع کنی به فرمت دهی

راه دوم (که چند تا راه مشابه هم داره) مال وقتیه که نتونی از راه اول استفاده کنی، و مجبوری بعد از اینکه متن درون ریچ تکس رو فرمت دهی کردی، یه متن دیگه رو به یه جای خاص متن ریچ تکست باکس، اضافه کنی.
برا این کار باید اول selStart رو مقدار دهی کنی.
بعد selLegth رو برابر با صفر قرار بدی (که البته ظاهرا با تغییر selStart خود بخود sellength هم صفر میشه)
بعد مقدار RichTextBox.SelText رو (نه RichTextBox.Text) رو برابر متن مورد نظر قرار بدی.

arenaw
چهارشنبه 08 شهریور 1391, 23:58 عصر
ریچ تکست باکس دارای یه مقدار Text هستش که شامل کل متن درونش بدون قالب میشه و یک مقدار TextRTF که شامل کل متن به همراه قالبش میشه.
وقتی شما یک دکمه اضافه میکنی که با هر بار زدنش یه متنی رو به تکست ما اضافه کنه، میای مینویسی :

.Text = .Text & "Matne Shoma"

که این به این معنیه کل قالب متن قبلی از بین میره و و تبدیل به پیشفرضش میشه. حالا یا باید اول کل متنی که قراره داخلش باشه رو قرار بدیم بعدا قالب بندی کنیم یا:
شما باید نحوه قالب بندی توی .TextRTF رو یاد بگیرید و متن جدید رو به اون قسمت منتقل کنید نه به .Text
همچنین اگه قالبی که میخواید بذارید از قبل مشخصه میتونید هربار که متن جدید رو اضافه کردید و قالبش به هم ریخت، قبلی هارو هم باز قالب بندی کنید.
البته راه خیلی بهتر هم اینه که جناب ASedJavad (http://barnamenevis.org/member.php?60645-ASedJavad) گفتند (تا اینجاش نوشته بودم نخواستم دیگه پاکش کنم!)

سپهر-111
پنج شنبه 09 شهریور 1391, 09:39 صبح
سلام و تشکر از راهنمایی دوستان گل




سلام دوست عزیز
شما وقتی میخوای با ریچ تکست باکس کار کنی، برا اینکه کارت درست انجام شه، دو راه کلی داری
راه اول که بهترین راهه، اینه که اول کل متن مورد نظرتو بریزی تو ریچ تکست باکس، بعد شروع کنی به فرمت دهی

راه دوم (که چند تا راه مشابه هم داره) مال وقتیه که نتونی از راه اول استفاده کنی، و مجبوری بعد از اینکه متن درون ریچ تکس رو فرمت دهی کردی، یه متن دیگه رو به یه جای خاص متن ریچ تکست باکس، اضافه کنی.
برا این کار باید اول selStart رو مقدار دهی کنی.
بعد selLegth رو برابر با صفر قرار بدی (که البته ظاهرا با تغییر selStart خود بخود sellength هم صفر میشه)
بعد مقدار RichTextBox.SelText رو (نه RichTextBox.Text) رو برابر متن مورد نظر قرار بدی.


بله دقیقا مشکلم همین مقدار RichTextBox.SelText رو (نه RichTextBox.Text) بود
باتغییر .Text به SelText مشکلم حل شد!







ریچ تکست باکس دارای یه مقدار Text هستش که شامل کل متن درونش بدون قالب میشه و یک مقدار TextRTF که شامل کل متن به همراه قالبش میشه.
وقتی شما یک دکمه اضافه میکنی که با هر بار زدنش یه متنی رو به تکست ما اضافه کنه، میای مینویسی :

.Text = .Text & "Matne Shoma"

که این به این معنیه کل قالب متن قبلی از بین میره و و تبدیل به پیشفرضش میشه. حالا یا باید اول کل متنی که قراره داخلش باشه رو قرار بدیم بعدا قالب بندی کنیم یا:
شما باید نحوه قالب بندی توی .TextRTF رو یاد بگیرید و متن جدید رو به اون قسمت منتقل کنید نه به .Text
همچنین اگه قالبی که میخواید بذارید از قبل مشخصه میتونید هربار که متن جدید رو اضافه کردید و قالبش به هم ریخت، قبلی هارو هم باز قالب بندی کنید.
البته راه خیلی بهتر هم اینه که جناب ASedJavad (http://barnamenevis.org/member.php?60645-ASedJavad) گفتند (تا اینجاش نوشته بودم نخواستم دیگه پاکش کنم!)


بله شما درست میفرمایید ولی من مشکلم اینکه که میخوام خط به خط رشته ها را وارد ریچ باکس کنم
اگه میخواستم به صورت کلی وارد ش کنم بعد با همون دستورات بالا میشد تغییرش داد
ولی مشکلش همون مقدار RichTextBox.SelText رو (نه RichTextBox.Text) بود!
حالا جواب میزارم که شاید کسی من این مشکل پیدا کرد بتونه حلش کنه




Private Sub Command1_Click()

Dim STR As String

STR = "This is Line "

With RichTextBox1
.SelText = STR
.SelLength = Len(STR)
.SelBold = True
.SelColor = vbBlack
.SelFontSize = 20
End With

End Sub

Private Sub Command2_Click()

Dim STR As String

STR = "This is Line "

With RichTextBox1
.SelText = .SelText & vbCrLf & STR
.SelStart = Len(.Text) - Len(STR)
.SelLength = Len(STR)
.SelFontSize = 10
End With

End Sub