PDA

View Full Version : بدست آوردن نام واقعی یک فایل فونت



جواد ملاولی
سه شنبه 22 بهمن 1387, 08:00 صبح
سلام به همه دوستان. من از شیء RZFontComboBox برای نشان دادن لیست فونتهای نصب شده در سیستم استفاده می کنم. حالا من میخوام با انتخاب هر کدوم از این فونتها از لیست، فونت مربوطه در یه پوشه خاصی کپی بشه و برای این کار از تابع CopyFile استفاده می کنم؛ اما مشکل اینه که اسمی که در ComboBox نشون میده نام فایل فونت نیست بلکه typeface اونه. چه جوری میتونم نام اصلی فایل رو بدست بیارم؟

hojjatcroos
سه شنبه 22 بهمن 1387, 08:46 صبح
من به جای شما باشم یک CheckListBox1 و یک FileListBox1 روی فرمم میگذارم بعد توی Oncreate فرم زیر را قرا می دهم بعد هر آیتمی که انتخاب شده باشه رو به همون پوشه خاص کپی می کنم.
procedure TForm1.FormCreate(Sender: TObject);
var
i:Integer;
begin
FileListBox1.ApplyFilePath('C:\Windows\Fonts');
for i:=0 to FileListBox1.Items.Count-1 do
CheckListBox1.Items.Add(FileListBox1.Items.Strings[i])
end;
البته شما ابتدا باید با برنامه یک کپی از پوشه فونت تهیه کنید و در پایان آن را پاک کنید چون کپی فونت از پوشه ویندوز امکان پذیر نیست.

جواد ملاولی
چهارشنبه 23 بهمن 1387, 07:01 صبح
سلام و با تشکر از شما.


البته شما ابتدا باید با برنامه یک کپی از پوشه فونت تهیه کنید و در پایان آن را پاک کنید چون کپی فونت از پوشه ویندوز امکان پذیر نیست.
چرا دوست عزیز امکانپذیر هست، فقط باید اسم اصلی اون فایل فونت رو بدونی؛ مثلاً اسم فایل فونت B Titr Bold، اینه : BTitrBd.ttf.

با تشکر مجدد از جناب hojjatcroos، منتظر کمک دوستان هستیم.

hojjatcroos
چهارشنبه 23 بهمن 1387, 12:40 عصر
سورس زیر رو برات نوشتم کارت راه میفته مسیرها رو هم به دلخواه عوض کن

جواد ملاولی
چهارشنبه 23 بهمن 1387, 19:29 عصر
با سلام مجدد. دوست من! از وقتی که گذاشتی خیلی خیلی ممنونم، ولی در برنامه ی من کاربر می خواد فونت رو از همون RzFontComboBox که گفتم انتخاب کنه و در واقع این فونت رو برای یه متن انتخاب می کنه و قصد من اینه که فونتهای مختلفی رو که کاربر انتخاب می کنه فایلهاشونو در یه جا جمع کنم؛ چون بعداً کارشون دارم.
باز هم از زحمتت تشکر می کنم.

جواد ملاولی
پنج شنبه 24 بهمن 1387, 06:26 صبح
سلام. از اساتید دلفی تقاضای کمک داریم.

hojjatcroos
پنج شنبه 24 بهمن 1387, 08:25 صبح
دوست عزیز چه فرقی داره حالا من با چک لیست باکس براتون گذاشتم شما با Combobox تازه اون خیلی راحت تر هستش چون دارید یک فونت رو کپی می کنید تو همون برنامه به جای CheckList Box یک Combobox بگذار و چند جای کدها رو هم دستکاری کن.
فایل زیر همون مثال با Combobox هستش

جواد ملاولی
پنج شنبه 24 بهمن 1387, 09:26 صبح
دوست خوب من کومبوبوکسی که من دارم فونتها رو یه جور دیگه نشون میده. عکسی رو که گذاشتم یه نگاه بکن.
منتظر جوابت هستم.

جواد ملاولی
شنبه 26 بهمن 1387, 16:23 عصر
سلام به همه دوستان. من از شیء RZFontComboBox برای نشان دادن لیست فونتهای نصب شده در سیستم استفاده می کنم. حالا من میخوام با انتخاب هر کدوم از این فونتها از لیست، فونت مربوطه در یه پوشه خاصی کپی بشه و برای این کار از تابع CopyFile استفاده می کنم؛ اما مشکل اینه که اسمی که در ComboBox نشون میده نام فایل فونت نیست بلکه typeface اونه. چه جوری میتونم نام اصلی فایل رو بدست بیارم؟

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

Felony
شنبه 26 بهمن 1387, 18:10 عصر
این کامپوننت تو خود دلفی که نیست ، شما وقتی گرفتینش حتما باید همراهش مثال یا فایل راهنمایی باشه ، اگر چیزی دستگیرتون نمیشه بگید از کجا آوردینش شاید بشه بهتون کمک کرد .

جواد ملاولی
شنبه 26 بهمن 1387, 22:35 عصر
این کامپوننت تو خود دلفی که نیست ، شما وقتی گرفتینش حتما باید همراهش مثال یا فایل راهنمایی باشه ، اگر چیزی دستگیرتون نمیشه بگید از کجا آوردینش شاید بشه بهتون کمک کرد .

سلام جناب سیلور. از توجه شما ممنونم. من از کامپوننت Raize استفاده کردم. البته با کد نویسی هم میشه اونو شبیه سازی کرد. یکی از دموهای خود دلفی به نام RichEdit هم همین کار رو کرده. من هیچ مثالی هم در رابطه با کاری که می خوام انجام بدم پیدا نکردم.
لطفاً اگه تونستی کاری بکنی حتماً اطلاع بده. ممنون.

جواد ملاولی
سه شنبه 29 بهمن 1387, 13:21 عصر
از اساتید دلفی خواهش میکنم کمک کنند.

جواد ملاولی
پنج شنبه 01 اسفند 1387, 15:27 عصر
هیچ کدوم از دوستان کمک نمی کنه؟

Felony
پنج شنبه 01 اسفند 1387, 16:50 عصر
من کمی رو مشکل شما فکر کردم به یه نتیجه ای رسیدم ، ببینید فقط فونتهایی با فرمت TTF دارای TypeFace هستند و بقیه فونتها دارای این خصیصه نیستند ، خوب شما به راحتی میتونید این مشکل رو با اضافه کردن فرمت فونت رفع کنید ، البته این در صورتی هست که همونطور که گفتید TypeFace رو داشته باشی .


CopyFile(Pchar('C:\Windows\Fonts\'+TypeFace+'.ttf' ),Pchar('D:\'+TypeFace+'.ttf'),False);

به جای TypeFace نام TypeFace فونت مورد نظر خودتون رو بزارید .

جواد ملاولی
پنج شنبه 01 اسفند 1387, 19:48 عصر
سلام جناب سیلور. من TypeFace رو دارم، ولی مشکل اینه که اسم واقعی با TypeFace فرق میکنه و بنابراین دستور کپی عمل نمی کنه.

مثلاً در مورد فونت Titr اینجوریه:
Typeface = B Titr
FileName = BTitrbd

ضمن اینکه در مورد فونتهای لاتین وضعیت بدتره؛ یعنی فرقشون بیشتره. مثلاً:
TypeFace = Times New Roman
FileName = TIMES

اگه کمکم کنی خیلی ممنون می شم.

hojjatcroos
جمعه 02 اسفند 1387, 10:51 صبح
یک بار به آقا جواد هم گفتم فونت هایی مثل Arial که Open Type هستند اسم فایل آن ها هم همون است اما فونت ها ی True Type این طور نیستند.

جواد ملاولی
جمعه 02 اسفند 1387, 14:45 عصر
یک بار به آقا جواد هم گفتم فونت هایی مثل Arial که Open Type هستند اسم فایل آن ها هم همون است اما فونت ها ی True Type این طور نیستند.

سلام دوست خوب من. اینو که می دونم، ولی اکثر فونتهایی که ما با اونا سر و کار داریم True Type هستند.
آقا حجت فکر کنم یه دونه تابع API وجود داشته باشه که اسم واقعی فونت رو برگردونه؛ ولی هر چه می گردم اونو پیدا نمی کنم.
:ناراحت::ناراحت::ناراحت::نار حت:

hojjatcroos
شنبه 03 اسفند 1387, 05:47 صبح
ببین این یونتیت نمیتونه کمکت کنه

http://www.delphi3000.com/articles/article_1272.asp?SK=Copy%20True%20Type%20Font

جواد ملاولی
شنبه 03 اسفند 1387, 13:32 عصر
آقا حجت ازت ممنونم. بررسی می کنم ببینم چی میشه.

جواد ملاولی
شنبه 03 اسفند 1387, 21:32 عصر
ببین این یونتیت نمیتونه کمکت کنه

آقا حجت از زحمتی که کشیدی خیلی خیلی ممنونم. از اون یونیت استفاده کردم ولی اون چیزی که میخوام توش نبود.
مثل اینکه مشکل ما حالا حالا ها نمی خواد حل بشه:افسرده:

جواد ملاولی
یک شنبه 04 اسفند 1387, 14:39 عصر
سلام. آقا حجت بالاخره خدا کمک کرد و مشکل حل شد.:قهقهه:
الحق که آب در کوزه و ما تشنه لبان می گردیم؛
با استفاده از رجیستری تونستم اسم واقعی فونت رو بدست بیارم.

با تشکر از دوستانی که برای این تاپیک وقت گذاشتند.:بوس:

hojjatcroos
یک شنبه 04 اسفند 1387, 14:58 عصر
متوجه شدم دوستان از آدرس زیر می توانند نام اصلی فونت هار ا به دست آورند.


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