RE:Cursores propios y crHandCursor
Creo entenderte que el usuario debe poder escoger el cursor que el quiera, de entre unos cuantos que tu o el mismo posee ¿es asi?. Si es asi prueba esto
Todo esta probado y a i me funciona.
{$R *.DFM}
//declaras el cursor con el nombre que quieras y un numero mayor que 1
const
crCopia = 5;
//******************************************************************************
procedure TForm1.FormCreate(Sender: TObject);
begin
//la cosa esta clara
CargaCursores(sender);
end;
//******************************************************************************
{Este procedimiento es de proposito general y te sirve para que el usuario escoja un cursor que tenga en un fiochero o en un archivo de recursos. Yo he anulado la parte de los recursos para que el usuario pueda elegir el fichero.}
Procedure TForm1.CargaCursores(Sender:TObject);
var
lpTempDir, lpTempFileName : string;
//nBufferLength : DWORD;
begin
// Obtener el directorio temporal de Windows
{
SetLength(lpTempDir, 255);
nBufferLength := GetTempPath(255, @lpTempDir[1]);
SetLength(lpTempDir, nBufferLength);
// Obtener el nombre de un fichero temporal
SetLength(lpTempFileName, 255);
GetTempFileName(PChar(lpTempDir), PChar('RES'), 0, @lpTempFileName[1]);
// Establecer correctamente la extensión del un fichero
// de cursor animado.
lpTempFileName := ChangeFileExt(lpTempFileName, '.ani');
}
//Este cursor es uno que he pillado por el disco duro
lpTempFileName :='JvResRAHANDMOVE.cur';
{ Cargar los cursores animados de los recursos de la aplicacion.
Observe que aquí, usamos el mismo nombre del recurso que
establecimos en el fichero Cures1.RC }
// Establecer el cursor en el panel izquierdo
// Primero se lee el fichero del cursor de los recursos de la aplicacion
// luego se salva a un fichero temporal
// Ahora se carga el fichero del cursor en el arreglo de cursores
// del objeto Screen y se asigna al control sobre el que debe
// aparecer cuando pase sobre el mismo.
{
with TResourceStream.Create(HInstance, 'COPIA', RT_RCDATA) do
try
SaveToFile( lpTempFileName );
finally
Free;
end;
}
Screen.Cursors[crCopia] := LoadCursorFromFile( PChar(lpTempFileName));
//DeleteFile(lpTempFileName);
end;
//******************************************************************************
Suerte y feliz navidad.