PDA

View Full Version : رنگی کردن اعراب عبارت عربی!



mbshareat
چهارشنبه 14 مهر 1389, 22:53 عصر
من متن عربی دارم که اعراب هم داره می خوام رنگ اعراب متفاوت باشه.:متعجب:
ایده اولیه ای که به نظرم رسید این بود:
اول کل عبارت رو با رنگ اعراب بنویسم بعد عبارت را با حذف اعراب روی همون جا بنویسم.
اما در عمل متوجه شدم اعراب هم در طول عبارت تأثیر داره.
بعد متوجه کارکترهایی در Insert Symbol محیط Word شدم بعضیها حروف را بزرگ یا کوچک می کردند ولی چیزی که می خواستم پیدا نکردم که کهرکتر ثابتی به جای اعراب بذارم که نامرئی باشه.
راستش فکر نمی کنم جوابی برای مسأله باشه. اگر در نرم افزارهای مرکز تحقیقات علوم اسلامی قم دیده باشید!، اعراب رنگ متمایز داره؛ اما فکر می کنم علتش اینه که قلم رو هم خودشون طراحی کردن.:قهقهه:
در هر صورت اگه کسی ایده ای داره ممنون می شم من رو راهنمای کنه.:بوس:
---
قدر خود بشناس و مشمر سرسری خویش را کز هر چه گویم برتری
آن که دست قدرتش خاکت سرشت حرف حکمت بر دل پاکت نوشت

tdkhakpur
چهارشنبه 14 مهر 1389, 23:28 عصر
اسلامی قم دیده باشید!، اعراب رنگ متمایز داره؛ اما فکر می کنم علتش اینه که قلم رو هم خودشون طراحی کردن.
در هر صورت اگه کسی ایده ای داره ممنون می شم من رو راهنمای کنه.

نه اینطور نیست!
اعراب هم جزو کاراکتر محسوب میشه شما میتوانید کاراکترهایی را که مد نظر شماست و جز اعراب هستند را استخراج کنید و با تابع زیر آنها را رنگی کنید مانند مثال زیر که (او) را رنگی میکند.


procedure SetColor(ritchEdit:TRichEdit; text:AnsiString);
var
TotalLenght, counter, c, i : integer;
tmp : AnsiString;
begin
TotalLenght := 0;
counter := 0;
for i:=0 to ritchEdit.Lines.Count-1 do
begin
tmp := ritchEdit.Lines[i];
while Length(tmp)<>0 do
begin
c := Pos(text, tmp)-1;
if c<>-1 then // براي اينکه بالا منهاي يک شده
begin
ritchEdit.SelStart := counter+c;
ritchEdit.SelLength := Length(text);
ritchEdit.SelAttributes.Color := clRed;
ritchEdit.SelAttributes.Style := [fsBold];
ritchEdit.SelLength := 0;
counter := counter+c+Length(text);
delete(tmp, 1, c+Length(text));
end
else
break;
end;
TotalLenght := TotalLenght+Length(ritchEdit.Lines[i]);
counter := TotalLenght + (i+1)*2;
end;
end;
//-----------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
SetColor(RichEdit1, 'ٌ');
end;

mbshareat
پنج شنبه 15 مهر 1389, 00:10 صبح
با سلام
از لطف شما ممنونم اما من می خوام چیزی مثل listBox داشته باشم(راستش از RichEdit می ترسم!)
من می خوام در لیست آیتمهای چند خطی داشته باشم که خدا رو شکر روشش رو هم پیدا کردم ولی هنوز به روشی برای رنگی کردن اعراب نیاز دارم الته می خوام قلم نرم هم داشته باشم که توی richEdit فقط روی تک رنگش کار می کنه!
این هم کد فونت نرم:
procedure SetFontToClearType(const aFont: TFont);
var
LogFont: TLogFont; TempFont: TFont;
begin
TempFont:= TFont.Create;
try
TempFont.Assign(aFont);
GetObject(TempFont.Handle, sizeof(LogFont), @LogFont);
LogFont.lfQuality := 5;
TempFont.Handle:= CreateFontIndirect(LogFont);
aFont.Assign(TempFont);
finally
TempFont.Free
end
end;

tdkhakpur
پنج شنبه 15 مهر 1389, 09:18 صبح
(راستش از RichEdit می ترسم!)

چرا؟!!


من می خوام در لیست آیتمهای چند خطی داشته باشم که خدا رو شکر روشش رو هم پیدا کردم ولی هنوز به روشی برای رنگی کردن اعراب نیاز دارم الته می خوام قلم نرم هم داشته باشم
لیست باکس استاندارد همچین قدرتی نداره که این کار رو برای شما انجام بده.
بهتره در مورد کامپوننتی با این خاصیت سوال کنید.


توی richEdit فقط روی تک رنگش کار می کنه!

نه میتونید استایل رو هم تغییر بدید.


این هم کد فونت نرم:

کد ارسالی شما فقط یک فونت را برای فونتی که داخل پروسه ایجاد شده متصل میکنه و برای خارج از پروسه هیچ دخالتی نداره.

mbshareat
پنج شنبه 15 مهر 1389, 18:25 عصر
با سلام و عرض ادب خدمت بزرگواران:لبخندساده:
کنترل بر RichEdit تا اونجا که می دونم خیلی کد می خواد و حتی یادمه برای بار کردن یه فایل rtf مشکل داشتم و من هنوز مبتدی هستم!!
اگه چندتا تاپیک قبل تر رو ببینید در مورد چنین لیست باکسی صحبت کردم اگه می خواین کدشو هم بذارم.

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

tdkhakpur
جمعه 16 مهر 1389, 11:21 صبح
اگه ممکنه زیر دیپلم حرف بزنین بنده حالیم شه.:گیج:اگه کد کارامد تری دارین هم لطفا لطف کنین!(همین کد هم امید نداشتم پیدا کنم)
خب اون کدی که ضمیمه کردید چیکار میکنه؟!!:متفکر:

mbshareat
جمعه 16 مهر 1389, 15:49 عصر
با سلام و خدا قوت
بالاخره مجبور شدم برنامه ای درست کنم که متن رو بدون استفاده از RichEdit رنگی کنه!
قبلا جناب مجتبی تاجیک و tdkhakpur کد برای رنگی کردن متن بخشی از RichEdit گذاشته بودند
ولی هیچکدوم برای رنگی کردن اعراب کاربرد نداشت!:اشتباه:
قصد جسارت ندارم (اشکال کم آوردن ویندوزه) کد جناب تاجیک که برای هایلایت متن بود و رنگ اعراب را تغییر نمی داد(مثل وقتی که توی Word بخوایم این کار رو بکنیم) کد جناب tdkhakpur هم حروف اعراب دار رو به حرف بزرگ تبدیل می کرد.
لطف کنید این برنامه رو ملاحظه کنین و اشکالاتم رو تذکر بدین::متفکر:

tdkhakpur
جمعه 16 مهر 1389, 19:10 عصر
لطف کنید این برنامه رو ملاحظه کنین و اشکالاتم رو تذکر بدین:

حرف نداره.


کد جناب tdkhakpur هم حروف اعراب دار رو به حرف بزرگ تبدیل می کرد.


حرف شما درسته ولی میتونستید استایل blod را بر دارید.
باز کلا کاری که انجام دادید بیشتر از اونی هست که با کد ما حل شده باشه.

mbshareat
یک شنبه 18 مهر 1389, 22:22 عصر
با سلام
جناب tdkhakpur (http://barnamenevis.org/forum/member.php?u=99732)

ولی میتونستید استایل blod را بر دارید.
منظورتون برداشتن قلم کلفت تو برنامه خودتونه یا برنامه بنده؟
( تو برنامه بنده انواع کلفتی قلم برای خوانایی در اختیار قرار داده شده.چون خوندن قلم ساده برای چشم ضعیف سخته و قلم لبه نرم هم همینطور گرچه قشنگتره و قلم کاملا Bold هم که قشنگ نیست)