Napisałem wygaszacz korzystający z pewnej czcionki, która niestety nie jest zbyt rozpowszechniona. Kiedy uruchamiam wygaszacz na kompie w którym nie ma tej czcionki używa domyślnej, a wtedy traci cały efekt i jest do niczego.
Mam pytanie, czy można tą czcionke dokleić do pliku wykonywalnego, żeby tylko jej używał (dodam że program używa tylko cyfr, jeśli to coś zmieni)??
W ostateczności moge to załatwić za pomocą instalki, która będzie instalowała wygaszacz i czcionke na kompie, ale wolałbym ten pierwszy sposób jeśli jest możliwy.
W FAQ jest opisane jak wczytać czcionkę z pliku - tyle że z pliku czcionki a nie z zasobów (nie wiem czy o to ci chodziło).
Dominik napisał(a)
W FAQ jest opisane jak wczytać czcionkę z pliku - tyle że z pliku czcionki a nie z zasobów (nie wiem czy o to ci chodziło).
niedawno bylo pytanie na forum czy mozna zaladowac czcionke z zasobow a odpowiedz byla ze nie, a szkoda bo tez to potrzebuje
ale przeciez mozna wypakowac z zasobow czcionke do tempa potem zaladowac czcionke a przy zamykaniu okna ja skasowac i nawet nikt sie nie kapnie :P
- Jak włączyć czcionkę do pliku res
Używając notatnika utwórz plik *.rc z następującą treścią:
MOJ_FONT MOJA1 "Arial.ttf"
Dwa pierwsze parametry mogą mieć inną nazwę. Będą wykorzystane później w programie.
Następnie użyj kompilatora BRCC32.EXE który jest dołączany wraz z Delphi, służy on do tworzenia plików *.res. Aby skompilować plik MojFont.rc w linii komend wpisz:
BRCC32 MojFont
Do programu musisz dodać dyrektywę włączającą plik do programu:
{$R MojFont.res}
Możesz ją wpisać zaraz po dyrektywie {$R *.DFM} w sekcji implementacji.
Aby użyć plik zasobu wpisz procedurę:
procedure TForm1.FormCreate(Sender: TObject);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(hInstance, 'MOJ_FONT', Pchar('MOJA1'));
Res.SavetoFile('czciona.ttf');
Res.Free;
AddFontResource(PChar('czciona.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
end;
Teraz możesz przypisać czcionkę:
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Font.Name := 'Bauhaus 93';
end;
W każdej chwili możesz usunąć czcionkę z programu:
procedure TForm1.FormDestroy(Sender: TObject);
begin
RemoveFontResource(PChar("Arial.ttf"))
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
end;
no wlasnie o to mi chodzilo
lecz i tak nie obylo sie bez zapisu czcionki na dysku
:]