Zitat von
3_of_8:
Was mache ich, wenn ich keine Maske brauche? Muss ich dann einfach das Ding nicht laden oder wie?
Doch, diese wird benötigt. Wenn du keine brauchst mach eine "leere".
Zitat von
3_of_8:
Also ich kann den Cursor prima in eine Datei speichern, aber ihn mit Screen.Cursor:=id; oder SetCursor(Screen.Cursors[id]); zu setzen, klappt einfach nicht. Es bleibt weiterhin bei dem Default-Cursor.
Ja. Das ist die
VCL. Jedes Control auf der Form "macht einen eigenen Cursor".
Delphi-Quellcode:
implementation
{$R *.dfm}
const
crMyCursor = 1;
var
IconInfo : TIconInfo;
procedure TForm1.Button1Click(Sender: TObject) ;
var
bmpMask, bmpColor : TBitmap;
i: Integer;
begin
bmpMask := TBitmap.Create;
bmpColor := TBitmap.Create;
With bmpColor do
begin
Width := 31;
Height := 31;
Canvas.Brush.Color := clWhite;
Canvas.Pen.Color := clRed;
Canvas.Ellipse(0,0,Width,Height);
end;
With bmpMask do
begin
Width := 31;
Height := 31;
Canvas.Brush.Color := clBlack;
Canvas.FillRect(RECT(0,0,Width,Height));
end;
// oder per Datei (oder auch aus der Resource) laden
// bmpColor.LoadFromFile('..\TestMapCur.bmp');
// bmpMask.LoadFromFile('..\TestMaskCur.bmp');
// Icon erstellen
With IconInfo do
begin
fIcon := False; // kein Icon sondern Cursor
xHotspot := 16;
yHotspot := 16;
hbmMask := bmpMask.Handle;
hbmColor := bmpColor.Handle;
end;
// Cursor in Cursorliste speichern
Screen.Cursors[crMyCursor] := CreateIconIndirect(iconInfo) ;
// Bitmaps freigeben
bmpMask.Free;
bmpColor.Free;
// Cursor allen Elementen auf der Form zuweisen
Screen.Cursor := crMyCursor;
for i := 0 to Form1.ControlCount -1 do
Form1.Controls[i].Cursor := crMyCursor;
end;
end.