18-10-2018, Saat: 09:59
(18-10-2018, Saat: 09:29)SimaWB Adlı Kullanıcıdan Alıntı:(18-10-2018, Saat: 08:56)3ddark Adlı Kullanıcıdan Alıntı: Verdiğiniz linkteki uygulama örneğini test ettim. Çok güzel sorunsuz çalışıyor. Başka kritik uygulamalarda kullanılabilir.
Fakat bu şekilde ki kullanım benim yapacağım işlem ve programı kullanan son kullanıcı topluluğuna pek hitap etmediği için şu anki sorunum için bu şekildeki bir çözüm kullanmayacağım.
Olayın çıkış noktası da yeni bir font var. Bu fontun özelliği %20 toner tasarrufu sağlıyormuş. Bunu yazıcı formlarında kullanabilir miyiz? şeklinde bir sorun ile başladı. Bütün kullanıcıların bilgisayarında bu font mevcut değil ve her kullanıcının bilgisayarına fontu tek tek eklemek mantıklı olmadığı için bu şekilde kullanmak istedim.
Sonuçta bizim yaptığımız uygulamalar son kullanıcıya hitap etmeli. Benim son kullanıcı topluluğum biraz GARİP bir topluluk
Asıl sorunum
ResStream := TResourceStream.Create(HInstance, pResourceName, 'FONT_TTF'); try ResStream.SavetoFile(pResourceName + '.ttf'); finally ResStream.Free; end; AddFontResource('font_dosya_adi.ttf'); SendMessage(Application.Handle, WM_FONTCHANGE, 0, 0);ile font ekleyip yazıcı formlarında bu fontu kullanacaktım ve işim bittiğinde ise
if RemoveFontResource(PAnsiChar(FontName + '.ttf')) then begin SendMessage(Application.Handle, WM_FONTCHANGE, 0, 0) ; DeleteFile(PAnsiChar(FontName + '.ttf')); end;ile fontu iptal edip uygulama dizininde geçici olarak oluşturduğum font dosyasını silecektim. Bu işlemi de uygulama ana formu açılırken fontu oluşturup ekledikten sonra uygulama ana formu kapatılırken(Destroy olayında) fontu kaldırıp dosyayı silecektim.
RemoveFontResource yapmadığım zaman bu oluşturduğum font dosyasını silemiyorum. Bu dosya kullanılıyor diyor. Windows tarafından kullanılıyor. Bilgisayarı yeniden başlatınca dosyaya müdahale edebiliyorum.
Bu sorunu aşmak için başka yol izleyebilirim. Örneğin bu işlemleri her yazdırma işleminden önce ve sonra yapabilirim veya
AddFontResource //yerine AddFontMemResourceExbu şekilde kullanabilirim.
Font dosyasının uygulama dizininde sürekli olarak bulunmasının ne sakıncası var?
Sakınca yok doğru çözüm dizinde olması tabi ki. Fakat programın dağıtıldığı çok kullanıcı var. Buna ek olarak bu istek ilerde kullanılmayabilir. Her kullanıcıya bu fontu dağıtmak gerekli.
Bunu şu şekilde çözdüm. Zaten Resource içindeki font dosyasını yoksa bir kere çıkarıyorum. Bu dosya çıkarıldıktan sonra tekrar silme işlemini yapmıyorum. Bu şekilde zaten bütün kullanıcıların dizinlerinde dosya mevcut olmuş olacak. Hatayı silme esnasında alıyordum. Dosya uygulamanın dizininde kalsın hiç bir zararı yok.
PostgreSQL - Linux - Delphi, Poliüretan


