1. Create a customer cursor using the ImageEditor. Set the "hot spot" by selecting Cursor | Set Hot Spot (Note the ImageEditor in Delphi 2 has a bug in setting the hot spot. The easiest work around is to use Delphi 3.) 2. Save the cursor in a resource file (.RES) with a name different from any form unit you have. That is, don't pick a name that is the same as any of the .DFM files, for example, Cursors.RES. 3. Add the statement {$R filename.RES} after "implementation": implementation {$R *.DFM} {$R Cursors.RES} 4. Define constants for the user-defined cursors that are positive values. (Zero and negative numbers are already assigned or are reserved.) For example: CONST crTarget = 1; crPencil = 2; crCrossHair = 3; crX = 4; crCircle = 5; crBox = 6; 5. In the TForm.FormCreate, load the cursors from the .RES file: // Load cursors from resource file Screen.Cursors[crTarget] := LoadCursor(hInstance, 'TARGET'); Screen.Cursors[crPencil] := LoadCursor(hInstance, 'PENCIL'); Screen.Cursors[crCrossHair] := LoadCursor(hInstance, 'CROSSHAIR'); Screen.Cursors[crX] := LoadCursor(hInstance, 'X'); Screen.Cursors[crCircle] := LoadCursor(hInstance, 'CIRCLE'); Screen.Cursors[crBox] := LoadCursor(hInstance, 'BOX'); Note the resource names must be in uppercase. 6a. Use a TRY .. FINALLY Block when using cursors: Screen.Cursor := crCircle; TRY < other statements here > FINALLY Screen.Cursor := crDefault END; 6b. Or, set the Mouse Cursor during MouseDown and reset it during Mouse Up MouseDown: IF DrawingLeftMouseDown THEN Screen.Cursor := crPencil ELSE Screen.Cursor := crCrossHair; MouseUp: Screen.Cursor := crDefault;