PDA

View Full Version : چرا نمیشه یه فونت به پوشه فونتهای ویندوز اضافه کرد؟



white fox
دوشنبه 19 آبان 1382, 00:10 صبح
سلام من یه مشکلی با این کد دارم...شما بگید اشکالش چیه؟...چرا اون فونت مورد نظر رو به پوشه فونتهای ویندوز کپی نمیکنه؟...در صورتی که در کتابی که من دارم این را ه حل رو گفته...میشه راهنماییم کنید؟ :roll:



Private Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long

Private Sub Form_Load()
AddFontResource "c:\project1\Kamran.ttf"
End Sub

(سیدشریفی)
دوشنبه 19 آبان 1382, 09:02 صبح
این تابعی که از آن استفاده میکنید برای کپی فونت به مسیر مشخصی بدرد نمیخورد و مورد استفاده آن زمانی است که بخواهید از فونت مشخصی استفاده کنید که این فونت در پوشه فونت ویندوز کپی نشده باشد .
مثلا اگر شما یک فونت مشخصی را در پوشه برنامه اجرایی دارید میتوانید با دادن مسیر این پوشه توسط تابعی که گفتید این فونت را به برنامه صدا زده و از آن استفاده نمایید و در آخر هنگام خروج از برنامه توسط تابع RemoveFontResource این فونت را از حافظه پاک کنید .
اگر شما میخواهید فونت خود را در پوشه فونت ویندوز کپی کنید یا باید از توابع کپی فایل استفاده کنید یا اینکه ساده ترین راه این است که در هنگام ساختن فایلهای Setup برنامه این فونتها را به ست آپ اضافه کنید و مسیر نصب آن را برای فایل ست آپ به مسیر پوشه فونت ویندوز تعیین نمایید
اگر باز هم متوجه موضوع نشدید بگویید .
:lol: :lol: :lol:

کم حوصله
دوشنبه 19 آبان 1382, 12:11 عصر
والا آقای سید شریفی من برای نصب فونت های استفاده شده در برنامه ام در set up ایتفاده می کردم ولی جواب نمی داد یعنی فونت را کپی می کرد ولی از آن استفاده نمیشد کرد و نهایتا مجبور بودم فونت کپی شده را پاک کنم و مجددا دستی آن را نصب کنم شما می دانید چرا؟؟؟ :(

white fox
دوشنبه 19 آبان 1382, 20:21 عصر
مورد استفاده آن زمانی است که بخواهید از فونت مشخصی استفاده کنید که این فونت در پوشه فونت ویندوز کپی نشده باشد .

خوب این فونت من هم در دایرکتوری فونت ویندوز نیست...این یک..دوم اینکه باید حتما از تابع remove استفاده کرد؟؟...سوم اگه این مشکل برای آقای کم حوصله هم پیش اومده...و برا منم پیش بیاد اونوقت چیکار کنیم؟..
شرمنده ها من یکمی گیراییم پایینه.. :oops:

(سیدشریفی)
سه شنبه 20 آبان 1382, 09:09 صبح
آقای کم حوصله بعد از نصب فونتها در Setup باید از داخل برنامه از تابع AddFontResource استفاده نمایید تا بتوانید از فونتهای مورد نظر استفاده نمایید

آقای White fox لازم نیست حتما از تابع RemoveFontResource استفاده نمایید این تابع فقط فونتهایی را که به حافظه فراخوانده شده اند را پاک میکند ولی باید از تابع AddFontResource استفاده نمایید تا آن فونتها را بتوانید از داخل برنامه مورد استفاده قرار دهید
:lol: :lol: :lol:

white fox
پنج شنبه 22 آبان 1382, 11:38 صبح
aghaye kam hoselaro nemidoonam ama...moshkele man ke bazam hal nashod...
mishe ye joore dige rahnamayi konid? :?:

کم حوصله
پنج شنبه 22 آبان 1382, 23:32 عصر
مال منم به قوت خودش باقیه :cry:

(سیدشریفی)
شنبه 24 آبان 1382, 10:11 صبح
برای یاد گیری بهتر و استفاده صحیح از این روش نمونه کدی را در اینجا قرار میدهم من خود نیز از این روش استفاده میکنم و تا بحال به هیچ مشکلی برخورد نکرده ام
توجه کنید نام فونتهای نوشته شده را به فونتهای مورد نظر خود تبدیل کرده و همچنین در موقع درست کردن ست آپ مسیر آن را با مسیر فونتهای داخل برنامه هماهنگ نمایید
همچنین برای هر کنترل فونت مورد نظر را در داخل برنامه تعریف نمایید

کم حوصله
شنبه 24 آبان 1382, 11:57 صبح
:shock:
منظورتون ار set کردن فونت هر کنترل در برتامه این نیست که دونه دونه با کد نویسی در برنامه فونت کنترل ها را بدیم چون :!:

white fox
شنبه 24 آبان 1382, 16:01 عصر
منم همین سوال آقای کم حوصله رو دارم... :oops:

(سیدشریفی)
یک شنبه 25 آبان 1382, 06:11 صبح
منظور من این است که برای هر کنترل خصوصیت Font را داریم البته برای کنترلهای مشخص و همانگونه که در موقع لزوم این خصوصیت را به فونت مورد نظر تبدیل میکنیم تا شکل نوشته عوض شود همین کار را برای فونت فارسی هم انجام میدهیم فقط باید دقت شود که این کار را از داخل پنجره کدنویسی نیز انجام دهیم دلیل این کار این است که در بعضی از موارد مشاهده کرده ام که اگر فونت را از داخل پنجره کد برای هر کنترل تعریف نکنم این فونت نشان داده نشده است (یکی از دلایل نشان داده نشدن فونت فارسی) مثلا:

Label1.Font.Name = "LnFaw"
Label1.Font.Size = 12

Command1.Font.Name = "LnKoodak"
Command1.Font.Size = 16
Command2.Font.Name = "LnKoodak"
Command2.Font.Size = 16

لطفا اگر بازهم مشکلتان حل نشد بگویید تا راهنمایی کنم بدلیل اینکه من مدتهاست که از این روش استفاده میکنم و به هیچ مشکلی هم برنخورده ام پس شما نیز باید بتوانید از آن استفاده کنید حتما در جایی از برنامه یک مشکل کوچکی وجود دارد که با پشتکار میتوانید این مشکل را حل کنید
در صورت نیاز و اگر مشکلتان باز هم حل نشد من میتوانم نمونه برنامه ای را بصورت Setup برای شما ارسال کنم و شما با نصب برنامه در کامپیوترتان این برنامه را امتحان کنید تا ببینیم فونتهای فارسی بکار رفته در برنامه در کامپیوتر شما درست دیده میشود یا نه
:lol: :lol: :lol:

(سیدشریفی)
یک شنبه 25 آبان 1382, 06:14 صبح
یادم رفت بگویم برای تعریف فونتها برای هر کنترل این کار باید در قسمت Form_Load هر فرم انجام گیرد.
:lol: :lol: :lol:

کم حوصله
یک شنبه 25 آبان 1382, 16:34 عصر
:shock:
نه بابا بی خیال من تو هر فرمم حد اقل 500 - 600 تا کنترل دارم یعنی حداقل هر فرم من 100 تا 400 تا فیلد داره می فهمی این یعنی چی یعنی بد بختی اگر بخواهم هر کدوم از کنترل ها را دستی ست کنم در ضمن می گم من اگه فونت را خودم دستی تو شاخه فونت نصب کنم هیچ مشکلی ندارم
:!: :!:

چه کار کنم ؟؟؟
شرمنده و ممنون

white fox
یک شنبه 25 آبان 1382, 23:10 عصر
ببین من امتحان میکنم..ولی فونت رو نشون نمیده...نمیدونم چرا تو فایل فونتو وقتی اینستال میشه میبینم خالی شده؟؟؟؟؟
نمیدونم شاید از فونتیه که استفاده میکنم؟....آقای سید شریفی ببخشید از کمکتون ممنونم...اما مسه اینکه زیاد ازیت شدی...باید یه راه دیگه پیدا کنم...؟؟؟

(سیدشریفی)
دوشنبه 26 آبان 1382, 09:19 صبح
آقای White fox نمیدونم منظورتون از این جمله (نمیدونم چرا تو فایل فونتو وقتی اینستال میشه میبینم خالی شده؟؟؟؟؟ ) چیست ولی اگر منظورتون پنجره فونت است که فونت شما در آن دیده نمیشود احتمالا اشکال کار همین جا میباشد لطفا از کنترل پانل پنجره فونت را باز کنید و داخل منوی فایل را ببینید آیا گزینه Install New Font در آن وجود دارد یا نه اگر این گزینه و جود نداشته باشد (بدلیل نصب ناقص ویندوز) هر فونتی را که شما در داخل این پنجره قرار دهید یا در پوشه فونت کپی کنید باز هم نمیتوانید از داخل ویندوز این فونت را ببینید
در ضمن برای من پاسخ به شما هیچ ازیتی ندارد و من میخواهم مشکل شما حل شود و حتما روزی خواهد رسید که من مشکلی را مطرح کنم و شما پاسخ دهید
بهرحال اگر موضوعی را که مطرح کردم درست بود وینوز خود را اصلاح یا از اول نصب کنید مشکل حل خواهد شد وگرنه بقول خودتان یا دنبال راه حل دیگری باشید و یا اینکه اگر باز هم از دست من کاری بر آید در خدمت هستم
:lol: :lol: :lol:

white fox
دوشنبه 26 آبان 1382, 16:50 عصر
با سلام خدمت آقای شریفی...
آقای شریفی اون مشکل خالی شدن فونت با ری استارت کردن ویندوز حل شد...البته حالا باید فکر این باشم که چجوری میشه که بعد از نصب برنامه ویندوز ری استارت بشه...:cry: :cry:
اما مشکل تقریبا حل نشد...چون در لیبل فونها جدا از هم و چپ به راست نمایش داده میشن و در دکمه ها اصلا فونت به نوع غیر مشخصی نمایش داده میشن یعنی اصلا فونت فارسی یا اینگلیش نیست...در این مورد میتونید کمکی کنید؟ :?: :mrgreen: :oops:

(سیدشریفی)
سه شنبه 27 آبان 1382, 09:43 صبح
اگر از ویندوز فارسی استفاده میکنید باید از فونت فارسی مخصوص خود ویندوز در کنترلهایتان استفاده نمایید ولی اگر از ویندوز انگلیسی استفاده میکنید میتوانید از هر فونت دلخواهی استفاده کنید .
این را هم حتما رعایت کرده اید که باید فونت کنترل را از داخل برنامه تعریف کنید مثلا :
Label1.Font.Name="Koodak"
در ضمن اگر در حال طراحی برنامه عناوین کنترلها را بنویسید مشکلی ایجاد نمیشود ولی اگر زمان اجرای برنامه عنوانهای کنترلها را تغییر داده اید اینجا حتما بایستی از فونتهای فارسی خود ویندوز فارسی استفاده کنید و پیشنهاد من این است که اگر از ویندوز 2000 یا ایکس پی استفاده میکنید از فونتهای یونیکد استفاده نمایید این کار باعث خواهد شد فونتهای مورد استفاده در کنترلها صحیح نشان داده شود
:lol: :lol: :lol: