PDA

View Full Version : قرار دادن فونت در برنامه



mahian90
چهارشنبه 18 مرداد 1391, 21:59 عصر
سلام به همه دوستان.

من برنامه ای با دلفی نوشتم که در بعضی از قسمت هاش مخصوصا گزارش گیری با فست رپورت از فونت های خاصی مثل btitr و bnazanin و ... استفاده شده.

خوب موقعی که این فونت ها روی ویندوز نصب هست که مشکلی نداره اما اتفاق میفته که با حذف نرم افزارهای دیگه اون نرم افزار میاد و این فونت ها رو هم حذف میکنه ( مخصوصا نرم افزار ای فارسی ) و این کار باعث میشه که برنامه من دچار مشکل بشه و فونت ها بد نمایش داده بشه.

حال سوال اینکه چطور میتونم کاری بکنم که مثلا فونت ها از پوشه داخل دایرکتوری برنامه فراخوانی بشند و این که با حذف فونت های ویندوز مشکلی برای نمایش فونت هام بوجود نیاد ؟

hamid-nic
چهارشنبه 18 مرداد 1391, 23:26 عصر
سلام
برنامه ها از پوشه فونت برای استفاده از فونت ها استفاده می کنند شما باید در حین نصب فونت هایی را که استفاده کردید را نصب کنید .
همچنین می توانید از طریق خود برنامه در لحظه ی اجرا وجود اون فونت را تشخیص بدهید و در صورت نیاز به کاربر اطلاع دهید یا از طریق پوشه ی خود برنامه تون اون فونت ها را در پوشه ی فونت ها کپی کنید .

mahian90
پنج شنبه 19 مرداد 1391, 00:02 صبح
سلام
برنامه ها از پوشه فونت برای استفاده از فونت ها استفاده می کنند شما باید در حین نصب فونت هایی را که استفاده کردید را نصب کنید .
همچنین می توانید از طریق خود برنامه در لحظه ی اجرا وجود اون فونت را تشخیص بدهید و در صورت نیاز به کاربر اطلاع دهید یا از طریق پوشه ی خود برنامه تون اون فونت ها را در پوشه ی فونت ها کپی کنید .

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

hamid-nic
پنج شنبه 19 مرداد 1391, 01:12 صبح
از طریق این لینک (http://www.swissdelphicenter.ch/torry/showcode.php?id=233) می توانید پوشه های مخصوص ویندوز را همچون پوشه ی فونت ها را پیدا کنید .
در مورد سوال دوم هم بستگی داره که کجا و به چه شکلی از این فونت ها استفاده کردید . اگر در اینترفیس برنامه استفاده شده که باید دوباره اون فرم Create بشه اگر در جاهای متعدد استفاده کردید بهتره که در این مورد برنامه را دوباره راه اندازی کنید اما اگر در گزارش گیری استفاده کردید می توانید اون گزارش را از نو بارگذاری و نمایش بدهید . یعنی بستگی به طریقه ی اجرای اون گزارش داره . مثلا توی فست ریپورت می توانید یک گزارش را از محلی مشخص بارگذاری و نمایش بدهید و یا از درون خود برنامه اجرا کنید .

mbshareat
پنج شنبه 19 مرداد 1391, 04:38 صبح
سلام
کی میره این همه راه رو؟
AddFontResource

younes221
پنج شنبه 19 مرداد 1391, 10:29 صبح
سلام ، همانطور که دوستمون گفتن فونت های مورد استفاده در برنامه رو به شکل زیر استفاده کنید : (یعنی نیازی به نصبشون نیست)

اضافه کردن فونت ریسورس به سیستم فونت ویندوز :


procedure TForm1.FormCreate(Sender: TObject) ;
begin

AddFontResource('c:\FONTS\MyFont.TTF') ;
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;

حذف کردن فونت ریسورس از سیستم فونت :


procedure TForm1.FormDestroy(Sender: TObject; var Action: TCloseAction) ;
begin
RemoveFontResource('C:\FONTS\MyFont.TTF') ;
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;

h_mohamadi
پنج شنبه 19 مرداد 1391, 11:04 صبح
در زماني که برنامه اتان را نصب مي کنيد باا ينستال شيلد و يا ديگر برنامه هاي ستاپ ساز آن موقع فونت را کپي کنيد

mbshareat
پنج شنبه 19 مرداد 1391, 11:40 صبح
سلام و درود
قلم رو به جدول قلم ویندوز اضافه می کنه اما امتحان کردم به شاخه فونت اضافه نکرد.
یه قلم رو از شاخه فونت ویندوز کپی کردم توی \:C بعد از شاخه فونت ویندوز حذف کردم.
Word هم در حال اجرا بود که از اون به بعد قلم رو تشخیص نداد.
بعد تو برنامه این کد رو اجرا کردم:(اسم قلم تو خود فایل قلم تعیین میشه نه از اسم فایل)
addfontresource('C:\mriamfx.ttf');
button1.Font.Name:='Fixed Maryam Transparent';

Word باز هم قلم رو تشخیص داد و توی برنامه هم اعمال شد.
اما چیزی به شاخه فونت ویندوز اضافه نشده بود.
توی راهنمای دلفی گفته شده بعد از AddFontResource باید برای بعضی پنجره ها (top-level windows) پیغام WM_FONTCHANGE فرستاده بشه.

mahian90
پنج شنبه 19 مرداد 1391, 14:32 عصر
در زماني که برنامه اتان را نصب مي کنيد باا ينستال شيلد و يا ديگر برنامه هاي ستاپ ساز آن موقع فونت را کپي کنيد

حرف شما درست اما میگم بعد از مدتی با حذف برنامه های فارسی دیگه اون برنامه ها میاند و فونت ها رو حذف میکنند

سعید صابری
پنج شنبه 19 مرداد 1391, 15:17 عصر
قبلا در لینک زیر بحث شده و به جواب نیز ختم شده
http://barnamenevis.org/showthread.php?299202-%D9%86%D8%B5%D8%A8-%D9%81%D9%88%D9%86%D8%AA-%D8%AF%D8%B1-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-7/page3

mahian90
پنج شنبه 19 مرداد 1391, 16:17 عصر
سلام ، همانطور که دوستمون گفتن فونت های مورد استفاده در برنامه رو به شکل زیر استفاده کنید : (یعنی نیازی به نصبشون نیست)

اضافه کردن فونت ریسورس به سیستم فونت ویندوز :


procedure TForm1.FormCreate(Sender: TObject) ;
begin

AddFontResource('c:\FONTS\MyFont.TTF') ;
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;

حذف کردن فونت ریسورس از سیستم فونت :


procedure TForm1.FormDestroy(Sender: TObject; var Action: TCloseAction) ;
begin
RemoveFontResource('C:\FONTS\MyFont.TTF') ;
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;

این روش خیلی عالی بود. فقط یه سوال. اگر یک بار این فونت رو اد کنم دیگه نیازی نیست هر بار اد بشه؟

younes221
پنج شنبه 19 مرداد 1391, 17:05 عصر
این روش خیلی عالی بود. فقط یه سوال. اگر یک بار این فونت رو اد کنم دیگه نیازی نیست هر بار اد بشه؟


باید بعد از هر ریستارت دوباره فونت رو از طریق همون دستور به سیستم فونت ویندوز اضافه کنید ، فکر نمیکنم جای نگرانی باشه چون نرم افزار شما بعد از هر ریستارت باید دوباره اجرا بشه و این دستور به طور اتوماتیک کار رو واستون انجام میده.

===============

راستی شما میتونین فونت رو هم در رجیستری ثبت کنید تا دوباره کاری نشه ، لیست فونت های نصب شده رو در رجیستری پیدا کردم :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

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

mbshareat
پنج شنبه 19 مرداد 1391, 21:39 عصر
سلام
کار با رجیستری؟
screen.Fonts کافیه

younes221
پنج شنبه 19 مرداد 1391, 23:15 عصر
سلام
کار با رجیستری؟
screen.Fonts کافیه

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


اگه به مسیر مشخص شده برید میتونین لیست فونت های نصب شده در کامپیوتر رو ببینید شما میتونین فونت مورد نظر خودتون رو در لیست مورد نظر قرار بدین