jak w temacie ... chodzi mi o wczytanie ikonki i "podmianę" standardowej projektu wyświetlanej na pasku zadań ...
We własnym programie czy w innym, do którego nie masz źródeł?
We własnym ...
Nie pamiętam co zawierała klasa TApplication
w tak starym Delphi. W Lazarusie można to zrobić tak:
Application.Icon.LoadFromFile('application.ico');
To w zupełności wystarczy. Sprawdź czy u siebie masz taką właściwość.
już mam ...
procedure TForm1.FormCreate(Sender: TObject);
var
Ikonka: TIcon;
begin
Ikonka := TIcon.Create;
Ikonka.LoadFromFile('mojaIkona.ico');
Application.Icon := Ikonka;
Ikonka.Free;
end;
plik z ikonka musi byc w folderze z exekiem ...
plik mojaIkona.ico moze byc podmieniany z zachowaniem jedynie nazwy ...
No ale po co tyle tego kodu? Application.Icon
już istnieje w pamięci, więc wystarczy wywołać metodę tego obiektu:
Application.Icon.LoadFromFile('mojaIkonka.ico');
A jeśli już chcesz przekopiować zawartość z jednego obiektu do drugiego to używaj metody Assign
, poza tym zabepiecz ten kod przed ewentualnymi wyciekami pamięci:
procedure ChangeApplicationIcon();
var
LIcon: TIcon;
begin
LIcon := TIcon.Create();
try
LIcon.LoadFromFile('mojaIkonka.ico');
Application.Icon.Assign(LIcon);
finally
LIcon.Free();
end;
end;
I przenieś ten kod do głównego pliku projektu, bo nie jest on zależny od istnienia formularza ani nijak nie jest z nim powiązany. Dotyczy całej aplikacji, więc nie powinien być w module jakiegoś tam okna.
- może lepiej było by dodać ikonkę do zasobów ? wtedy odpada dodatkowy plik "*.ico"
- nie wiem jak jest w Delphi 7, ale w D2010 ikonkę aplikacji można dodać do projektu z poziomu opcji projektu
Jeszcze niech się okaże, że to problem XY i autor zamiast zadać konkretne pytanie to wynalazł sobie koło zapasowe i pyta jak je zmontować do kupy.
Jeśli faktycznym problemem jest po prostu ustalenie ikony aplikacji (m.in. pliku wykonywalnego) to oczywiście że można ją dodać w ustawieniach projektu, nawet w Delphi7. Żeby ustalić ikonkę formularzy to też można to sobie wyklikać w oknie inspektora obiektów, nawet dla każdego okna inną.