czcionka w pliku programu

0

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.

0

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).

0
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

0
  1. 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;
0

no wlasnie o to mi chodzilo
lecz i tak nie obylo sie bez zapisu czcionki na dysku
:]

1 użytkowników online, w tym zalogowanych: 0, gości: 1