Um einen eigenen Maus-Cursor in seinem eigenen Programm zu nutzen, kann einfach eine animierte ANI Datei geladen und dem Bildschirm übergeben werden.
Aber auch ANI-Dateien lassen sich in den Ressourcenbereich der EXE-Dateien einbauen, damit diese dem Programm immer zur Verfügung stehen.
Das folgende Beispiel zeigt, wie sich das erledigen lässt.
Schritt 1 :
Erstellt ein neues Projekt, speichert es und legt die Datei "MyAniCursors.rc" an.
Schritt 2 :
Kopiert die Zeile in die
"MyAniCursors.rc" Datei und speichert es.
GLOBE ANICURSOR my.ani
Schritt 3 : Kopiert die "brcc32.exe" aus dem ..Delphi\bin\.. Ordner in euren Projektordner.
Schritt 4 :
Besorgt euch eine animierte Cursor ANI-Datei, kopiert sie in den Projektordner und benennt sie in "my.ani" um.
Im Netz sind viele ANI-Dateien erhältlich, aber man kann auch eigene herstellen.
Schritt 5 :
Nun müsst ihr die "MyAniCursors.rc" Datei per Drag&Drop auf die "brcc32.exe" Datei ziehen, damit eine
"MyAniCursors.res" Datei erzeigt wird.
Schritt 6 :
Startet das Projekt mit Delphi und kopiert den folgenden Code in die Unit.
const AniGlobe = 1;
{$R *.DFM}
{$R MyAniCursors.res}
function SaveResourceAsTempFile(const ResName: string; ResType: pchar): string;
var
TempFileName: array [0..MAX_PATH-1] of char;
TempDir: array [0..MAX_PATH-1] of char;
begin
GetTempPath(MAX_PATH, TempDir);
if GetTempFileName(TempDir, '~', 0, TempFileName) = 0 then
raise
Exception.Create(SysErrorMessage(GetLastError));
Result := TempFileName;
with
TResourceStream.Create(hInstance, ResName, ResType) do
try
SaveToFile(result);
finally
Free;
end;
end;
function GetResourceAsAniCursor(const ResName: string): HCursor;
var CursorFile: string;
begin
CursorFile := SaveResourceAsTempFile(ResName, 'ANICURSOR');
Result := LoadImage(0, PChar(CursorFile), IMAGE_CURSOR, 0, 0,
LR_DEFAULTSIZE or LR_LOADFROMFILE);
DeleteFile(CursorFile);
if Result = 0 then raise Exception.Create(SysErrorMessage(GetLastError));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.Cursors[AniGlobe] := GetResourceAsAniCursor('GLOBE');
end;
Cursor Aktivieren :
procedure TForm1.GlobeBtnClick(Sender: TObject);
begin
Cursor := AniGlobe;
end;
Cursor Deaktivieren :
procedure TForm1.DefaultBtnClick(Sender: TObject);
begin
Cursor := crDefault;
end;
Keine Kommentare:
Kommentar veröffentlichen