PDA

View Full Version : سوال: چگونگی نصب کردن فونت ها از طریق کدنویسی



farboodj1375
جمعه 17 تیر 1390, 08:30 صبح
سلام.
میخواستم بدونم آیا میشه بدون استفاده از نرم افزار های ستاپ ساز , با خود ویبی و از طریق کد نویسی فونت ها رو نصب کرد؟

جستجو هم کردم ولی به نتیجه نرسیدم.

ممنون.

returnx
جمعه 17 تیر 1390, 09:54 صبح
خوب فونت ها با یک کپی نصب میشند ، فایل فونتتون رو در آدرس فولدر فونت Copy کنید...
یکی از روش های زیر رو میتونید انتخاب کنید...
1-استفاده از تابع داخلی File Copy
2-استفاده از File System Object
3-استفاده از تابع API
البته را های دیگری هم برای کپی وجود داره ، ولی رایج ترین ها اینها هستند...
یکدوم یا هر سه این ها رو جستجو کنید تا دلتون بخواد مثال تو این تالار هست....

king ag
جمعه 17 تیر 1390, 10:49 صبح
میتونی کد هات رو بزاری تو ریسورس
بعد با کد سیو اون در پوشه فونت این کار رو به راحتی انجام بدی

farboodj1375
جمعه 17 تیر 1390, 12:04 عصر
خیلی ممنون ولی من با کپی قبلا امتحان کردم.آیا باید بعد کپی سیستم ریستارت شه؟تا فونت ها ی برنامه درست نمایش داده بشه؟

من شنیدم که با یک تابع API هم میشه این کارو کرد.کسی این کارو بلد نیست؟؟؟؟

returnx
جمعه 17 تیر 1390, 12:51 عصر
من شنیدم که با یک تابع API هم میشه این کارو کرد.کسی این کارو بلد نیست؟؟؟؟
کدوم کارو میشه با تابع API کرد!؟
اگه منظورتون اظافه کردن یک Font هست بله میشه با تابع AddFontResource این کارو انجام داد...
اگه منظورتون Copy هست ، اونم میشه...
روش اظافه کردن یک فونت :
ابتدا تابع AddFontResource تعریف میکنیم ...


PrivateDeclareFunction AddFontResource Lib"gdi32"Alias"AddFontResourceA" (ByVal lpFileName AsString) AsLong

بعد هم به اینصورت استفاده:

AddFontResource fontAddress
اگه هم منظورتون Copy کردن هست بله میشه:


Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

پارامتر اول آدرس مبدا و پارامتر دوم آدرس مقصد...

M.T.P
جمعه 17 تیر 1390, 15:55 عصر
این یک نمونه با فونت خودتون هستش (ایران نستعلیق)
فونت کنار فایل اجرایی.

saeed7474
دوشنبه 15 آبان 1391, 21:52 عصر
این یک نمونه با فونت خودتون هستش (ایران نستعلیق)
فونت کنار فایل اجرایی.
لطفا بیشتر توضیح دهید

SlowCode
دوشنبه 15 آبان 1391, 22:16 عصر
توضیحی نداره که!!!
منظورشون اینه که اگه فونت مورد نظر کنار برنامه باشه کافیه، چون خود سیستم تشخیص میده. پس نیازی به کپی کردن فونت به محل مربوطش نیست.

saeed7474
پنج شنبه 18 آبان 1391, 00:37 صبح
واقعا !!
نه فکر کنم تو ریسورس گذاشتن و کد نوشتن برای لودش

saeed7474
جمعه 19 آبان 1391, 12:46 عصر
من میخوام یه جوری باشه که دیگه نرم باز همه رو کد نویسی مجدد کنم

همه فونت ها نصب بشه

SlowCode
جمعه 19 آبان 1391, 14:07 عصر
من میخوام یه جوری باشه که دیگه نرم باز همه رو کد نویسی مجدد کنمعجب جمله ای!
خب پس یا از روش پست 5 استفاده کن و یا فونت رو بریز توی پوشه C:\Windows\Fonts
فقط برای اینکه بعدا مشکلی پیش نیاد مسیر این پوشه رو با دستور Environ پیدا کن.

saeed7474
جمعه 26 آبان 1391, 11:50 صبح
کدوم کارو میشه با تابع API کرد!؟
اگه منظورتون اظافه کردن یک Font هست بله میشه با تابع AddFontResource این کارو انجام داد...
اگه منظورتون Copy هست ، اونم میشه...
روش اظافه کردن یک فونت :
ابتدا تابع AddFontResource تعریف میکنیم ...


PrivateDeclareFunction AddFontResource Lib"gdi32"Alias"AddFontResourceA" (ByVal lpFileName AsString) AsLong

بعد هم به اینصورت استفاده:

AddFontResource fontAddress
اگه هم منظورتون Copy کردن هست بله میشه:


Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

پارامتر اول آدرس مبدا و پارامتر دوم آدرس مقصد...
اینو کجا بنویسیم ؟
AddFontResource fontAddress
تو ساب مین ؟

فونت هارو یکی یکی به ریسورس اضافه کنیم ؟
ممنون میشم توضیح کامل تری بدین

SlowCode
جمعه 26 آبان 1391, 12:14 عصر
اونو یا توی رویداد initialize بنویس.
استفاده از ریسورس وقتت رو تلف میکنه چون باید فونت ها رو دربیاری بعد بریزی به یه جای دیگه بعد این تابع رو اجرا کنی. بهتره فونت هات رو بزاری کنار برنامت و یا توی یه پوشه دیگه.
کار خاصی نداره، کافیه اینو بنویسی:

AddFontResource app.path & "\Fonts\B_titr.ttf"

saeed7474
جمعه 26 آبان 1391, 15:49 عصر
تو همه فرم هام؟

saeed7474
جمعه 26 آبان 1391, 16:09 عصر
در ضمن من 10 تا فرم دارم تو رویداد initializeهمه شونه باید بنویسم ؟
و تو تک تکشون فونت رو لود کنم ؟
در ضمن ارور میده
sub or function not defined

اینو یه تفسیر می کنیین ؟
Private Sub Form_Load()
If Right$(App.Path, 1&) = "\" Then
StrFontName = App.Path & "\fonts\Mj_Calligraph.ttf"
Else
StrFontName = App.Path & "\fonts\Mj_Calligraph.ttf"
End If
AddFontResource StrFontName

End Sub

SlowCode
جمعه 26 آبان 1391, 21:37 عصر
نه فقط توی فرم اصلی(اولی)بنویس.
علتش اینه که ایشون تابع رو بصورت Private نوشتن پس شما باید اونو Public بنویسی. توی یه ماجول اینو بنویس:

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

بعد تابع رو صدا بزن.

saeed7474
پنج شنبه 02 آذر 1391, 09:45 صبح
کد کار نکرد

با ستاپ ساز درستش کردم