PDA

View Full Version : نصب یک فونت در سیستم کاربر



Rahyar
دوشنبه 06 مهر 1388, 19:40 عصر
سلام به اساتید دلفی.
لطفاً بفرمایید چطوری میشه یک فونت رو توی سیستم کاربر نصب کرد. چون من احتیاج دارم از یک فونت مخصوص برای نمایش بعضی عبارات استفاده کنم.
جستجو هم کردم فقط یک جا نوشته بود که از


AddFontResource('myfont.ttf') ;

استفاده کنید که منم فونت رو توی پوشه برنامه قرار دادم و از دستور بالا استفاده کردم اما اتفاقی نیفتاد. میشه دوستانی که به این بحث اشراف دارند روش صحیح این کار رو بیان کنند.ممنون

hadisalahi2
دوشنبه 06 مهر 1388, 20:00 عصر
فکر کنم در این مورد این چندمین تاپیکی باشه که ایجاد میشه. و بازهم سوال تکراری
اگه فقط کلمه فونت رو جستجو میکردید، دهها تکه کد برای نصب فونت در سیستم پیدا می کردید

tdkhakpur
دوشنبه 06 مهر 1388, 20:34 عصر
خوب همان کدی که استفاده کردید فونت را برای فرم جاری و اعضای آن تعریف و باز میکند. البته باید فایل فونت در میسر جاری قرار داشته باشد.
ولی برای نصب میتوانید این فونت را به شاخه Font مربوط به ویندوز کپی یا نصب کنید

Mahmood_M
دوشنبه 06 مهر 1388, 21:01 عصر
استفاده کنید که منم فونت رو توی پوشه برنامه قرار دادم و از دستور بالا استفاده کردم اما اتفاقی نیفتاد.
کدی که گذاشتید ، فونت رو نصب می کنه ، اما باید پیغامی به ویندوز ارسال کنید در رابطه با نصب فونت !
به کد زیر دقت کنید :


SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);

این پیغام به ویندوز تغییرات فونت رو خبر میده ... ! ( اطلاعات کامل رو از Windows SDK که همراه دلفی نصب میشه میتونید بگیرید )
در نهایت :


AddFontResource(Pchar(AddrEdit.Text));
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);

...
به این نکته هم دقت کنید که دستور AddFontResource در صورت ناموفق بودن در نصب فونت پیغامی نمایش نمی ده ، اما مقدار " 0 " رو بر میگردونه ، که می تونید این مقدار رو چک کنید ، ببیند آیا اصلا فونت نصب میشه ، اگه نصب نشده ، برای محکم کاری ! آدرس فونت رو بصورت کامل بنویسید ، مثلا :


AddFontResource(Pchar(ExtractFilePath(Application. ExeName)+'MyFont.ttf'));

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

موفق باشید ...

Rahyar
دوشنبه 06 مهر 1388, 23:12 عصر
سپاسگذارم محمود عزیز!
بلا می سر فقط این مقدار برگشتی رو چطور باید بدست بیارم؟ البته با همون دو خط کد راحت نصب شد اما محض اطمینان از صحت کار بد نیست که اجرای دستور رو چک کنیم. ممنون میشم این مورد رو هم توضیح بدین.

Mahmood_M
سه شنبه 07 مهر 1388, 00:07 صبح
بلا می سر
جانا قوربان ... !

فقط این مقدار برگشتی رو چطور باید بدست بیارم؟ البته با همون دو خط کد راحت نصب شد اما محض اطمینان از صحت کار بد نیست که اجرای دستور رو چک کنیم. ممنون میشم این مورد رو هم توضیح بدین.
می تونید یک متغیر Integer رو برابر تابع قرار بدید ، در این صورت مقدار برگشت داده شده در متغیر قرار می گیره ...
مثال :


var
I : Integer;
begin
I := AddFontResource('MyFont.ttf');
end;

راه بهتر اینه که در یک عبارت شرطی مقدار برگشتی رو چک کنید :


if AddFontResource('MyFont.ttf') <> 0 then
// Font Installed ...
else
// Error Occured ...


موفق باشید ...

khoshblagh
سه شنبه 07 مهر 1388, 07:54 صبح
[/quote]
اگه باز هم مشکلی داشتید بگید تا نمونه ای قرار بدم ...
[/quote]
با سلام خدمت شما
ممنون میشوم اگر نمونه ای ارائه نمایید. متشکرم

Saeed_m_Farid
سه شنبه 07 مهر 1388, 11:00 صبح
با سلام خدمت شما
ممنون میشوم اگر نمونه ای ارائه نمایید. متشکرمدیگه چطور نمونه ای لازمه؟ همه چی رو که توضیح دادن :
procedure TForm1.Button1Click(Sender: TObject);
begin
if AddFontResource(Pchar(ExtractFilePath(ParamStr(0)) +
AddrEdit.Text)) > 0 then
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0)
else
Application.MessageBox('Font not installed!',
'Font',
MB_OK or MB_ICONWARNING);
end;

sobhangh
چهارشنبه 04 آذر 1388, 19:43 عصر
سلام
سلام این کد برای من کار نمیکنه و فقط ارورش برام می یاد. فونت رو توی پوشه برنامه ریختم و می خوام که کد کامپوننت ها و هر چیزی که توی فرم دارم از همون فونت استفاده کنه اما نمی شه. لطفا راهنمایی کنید.
از تموم کدهای ارائه شده استفاده کردم.

tdkhakpur
چهارشنبه 04 آذر 1388, 20:17 عصر
سلام
سلام این کد برای من کار نمیکنه و فقط ارورش برام می یاد. فونت رو توی پوشه برنامه ریختم و می خوام که کد کامپوننت ها و هر چیزی که توی فرم دارم از همون فونت استفاده کنه اما نمی شه. لطفا راهنمایی کنید.
از تموم کدهای ارائه شده استفاده کردم.
اگر مراحل گفته شده را انجام داده باشید حتما مشکلاتان حل خواهد شد. ولی به شرطی که شما همه فرمها و آبجکتهای فرم را به همین فونت سویچ داده باشید.

sobhangh
پنج شنبه 05 آذر 1388, 11:25 صبح
سلام
چطوری؟

tdkhakpur
پنج شنبه 05 آذر 1388, 11:50 صبح
خب فرمها و آبجکتهای شما دارای خصوصیتی به اسم font هستند شما باید این فونت را برابر با همان فونتی قرار بدید که داخل شاخه کپی میکنید.