PDA

View Full Version : سوال: مشکل با فونت در استفاده از WordDocument



mehdimdp
شنبه 13 شهریور 1389, 01:24 صبح
سلام
من با استفاده از ابزارهای WordDocumentوWordApplication1 موفق به ایجاد یک فایل ورد و رسم جدول شده ام .
مشکل من در اعمال فونت می باشد.
من با دستور زیر فونت خط اول جدول رسم شده رو برابر B Titr قرار میدم.


Mytable.Rows.Item(1).Range.Font.Name:='B Titr';

این کد رو متن اعمال میشه ولی متاسفانه فقط روی متن های لاتین.
من میخوام برای متن های فارسی یا همون (complex) هم این فونت اعمال بشه.
لطفا منو راهنمایی کنید.
باتشکر

K.Mohammadreza
شنبه 13 شهریور 1389, 01:34 صبح
با سلام خدمت شما دوست گرامي
من هم قبلاً اين مشکل را داشتم ولي اين مشکل اگر هم حل بشه (مربوط به direction فايل وردتون ميشه) در قسمتهاي ديگر از جمله تغيير فونت در پاراگرافهاي مختلف به مشکل برخواهيد خورد به نظر من از کامپوننت ekrtf استفاده کنيد و يک عمر مرا دعا کنيد.
با تشکر

mehdimdp
شنبه 13 شهریور 1389, 15:17 عصر
دوستان دیگه کسی نظری نداره ؟

mehdimdp
یک شنبه 14 شهریور 1389, 08:00 صبح
یعنی تا حالا هیچ کس با مشکل من مواجه نشده ؟
مشکل من اینه که فونت هایی که اعمال می کنم فقط برای متون latin اعمال میشه و برای متون غیرلاتین(complex) همون فونت پیش فرض (Times New Roman) اعمال میشه.
چه طور میتونم برای complex ها هم فونت اعمال کنم ؟ کسی بلند نیست؟؟؟

K.Mohammadreza
یک شنبه 14 شهریور 1389, 10:58 صبح
مشکل (مربوط به direction فايل وردتون ميشه)

باید دنبال تابعی بگردی که جهت صفحه را راست به چپ کنه نه جهت تایپ متن را!!!!!! یعنی همون Ctrl+Shit

mehdimdp
دوشنبه 15 شهریور 1389, 04:32 صبح
اتفاقا مشکل direction نیست. چون من در فایل ایجاد شده می بینم که direction راست به چپ هست .
مشکل اینجاست که این فونتی که من اعمال می کنم فقط برای direction های چپ به راست جواب میده
برای درک این مشکل کافیه به عکس زیر یک نگاهی بندازید.


Mytable.Rows.Item(1).Range.Font.Name:='TestFont';

K.Mohammadreza
دوشنبه 15 شهریور 1389, 14:21 عصر
آیا نرم افزار office مورد استفاده نسخه 2007 هست یا خیر؟
اگر ورژن 2007 دارید نسخه دلفی مورد استفاده چیه؟

mehdimdp
سه شنبه 16 شهریور 1389, 02:08 صبح
سلام
آفیس 2003
و دلفی 7

K.Mohammadreza
سه شنبه 16 شهریور 1389, 18:12 عصر
1- به کد زیر نگاه کنید :
ابتدا 3 کامپونت WordApplication ، WordDocument و WordFont از برگه نشان Servers روی فرم بیندازید و خصوصیات آنها را به شکل زیر تغییر دهید:

object WordApplication: TWordApplication
AutoConnect = False
ConnectKind = ckRunningOrNew
AutoQuit = False
Left = 10
Top = 10
end
object WordDocument: TWordDocument
AutoConnect = False
ConnectKind = ckRunningOrNew
Left = 30
Top = 10
end
object WordFont: TWordFont
AutoConnect = False
ConnectKind = ckRunningOrNew
Left = 50
Top = 10
End

سپس یک دکمه روی فرم گذاشته و کدهای زیر را در آن بنویسید.

procedure Tform1.Button1Click(Sender: TObject);
var
Docs, Template, NewTemplate, ItemIndex: OleVariant;
begin
try
Template := EmptyParam;
NewTemplate := True;
ItemIndex := 1;
try
Wordapplication.Connect;
except
MessageDlg('ورود ممکن است نصب نباشد', mtError, [mbOk], 0);
Abort;
end;
Wordapplication.Visible := True;
WordApplication.Caption := 'برنامه ویرایش در ورود';

Template := EmptyParam;
NewTemplate := False;
Docs := WordApplication.Documents;
Docs.Add(NewTemplate := True);

WordDocument.ConnectTo(WordApplication.Documents.I tem(ItemIndex));

WordApplication.Options.CheckSpellingAsYouType := False;
WordApplication.Options.CheckGrammarAsYouType := False;
WordFont.ConnectTo(WordDocument.Sentences.Get_Last .Font);

WordFont.Name := 'B Nazanin';
WordFont.Bold := 1;
WordFont.Size := 16;

WordDocument.Range.InsertAfter('بسمه تعــــالی');
WordDocument.Range.InsertAfter('اولین برنامه من که کارش ویرایش در ورد است'+#13);

WordFont.Name := 'B Titr';
WordFont.Bold := 1;
WordFont.Size := 16;

WordDocument.Range.InsertAfter('محمدرضا' + #13);
WordDocument.Range.InsertAfter('' + #13);
WordDocument.Range.InsertAfter('خدا حافظ ' + #13);
except
on E: Exception do
begin
MessageDlg(E.Message,mtError,[mbOk],0);
WordApplication.Disconnect;
end;
end;
end;

mehdimdp
چهارشنبه 17 شهریور 1389, 02:26 صبح
دوست عزیز از لطف شما متشکرم.
من کدهای شما رو (که شبیه کدهای خودم هست) اجرا کردم ولی بازهم همون مشکل
آیا خودتون به جواب درست و نهایی رسیدید؟
البته اینو باید بگم که کدهای خودم و همین طور کدهای شما بفقط عضی مواقع به طور اتفاقی درست جواب میدهند.
مشکل اصلی همونیه که گفتم
من میخوام فونت complex رو عوض کنم نه latin رو
بازهم از همکاری و لطف شما متشکرم

a_mogheimi
چهارشنبه 02 مرداد 1392, 19:30 عصر
دوست عزیز از لطف شما متشکرم.
من کدهای شما رو (که شبیه کدهای خودم هست) اجرا کردم ولی بازهم همون مشکل
آیا خودتون به جواب درست و نهایی رسیدید؟
البته اینو باید بگم که کدهای خودم و همین طور کدهای شما بفقط عضی مواقع به طور اتفاقی درست جواب میدهند.
مشکل اصلی همونیه که گفتم
من میخوام فونت complex رو عوض کنم نه latin رو
بازهم از همکاری و لطف شما متشکرم

ميدونم تاپيك قديمي هست ولي راه حل اينه :
wrdDoc := wrdApp.Documents.Add();
wrdDoc.content.Font.NameBi:='B Titr';