PDA

Ver la Versión Completa : Sustituir puntero ratón por imagen


bbjb
05-09-2008, 08:40:05
Buenos días a tod@s,

Antes de escribir este post he estado haciendo una búsqueda por el foro y no he encontrado nada que resolviera mi duda, que por cierto, vaya coñazo no poder utilizar más de una palabra en la búsqueda.

Tengo un programilla que permite obtener informes a los usuarios. Algunos de estos informes requieren un tiempo considerable puesto que la consulta es bastante gorda y me gustaría poder sustituir el puntero del ratón que aparece en forma de reloj de arena por alguna imagen (un gif por ejemplo) que aclare al usuario que el programa está realizando la consulta. Una vez finalizada esta pués hacer desaparecer la imagen.

¿Podrían ayudarme?

tcp_ip_es
05-09-2008, 08:55:12
Vi algo de Neftali que te puede servir...con su permiso te lo remito...

http://neftali.clubdelphi.com/

En la sección de tips, el último habla de ello... hasta te trae un ejemplo :eek::D


Edito:
tambien tienes este post...
http://www.clubdelphi.com/foros/showthread.php?t=57554&highlight=cambiar+puntero+raton

bbjb
05-09-2008, 10:00:01
Vi algo de Neftali que te puede servir...con su permiso te lo remito...

Voy a probarlo y ahora os digo algo.

Muchas gracias a ambos

bbjb
05-09-2008, 11:15:30
Todo correcto, muchas gracias de nuevo

tcp_ip_es
05-09-2008, 11:28:03
Viene de la libreria windows. (uses windows)

bbjb
10-09-2008, 08:28:27
Probé este ejemplo en un formulario simple y me funciono perfectamente. Cuando quise integrarlo en el programa para que cambiase el cursor justo antes de ejecutar la consulta me encuentro con que no lo cambia hasta que la sql no ha finalizado, con lo que no consigo el objetivo perseguido que no era otro que mostrar la imagen mientras se realiza la consulta.

¿Alguno de vosotros sabría a que se debe?

Muchas gracias.

tcp_ip_es
10-09-2008, 09:23:19
pon el código y vemos si te podemos ayudar...

bbjb
10-09-2008, 10:13:37
pon el código y vemos si te podemos ayudar...
Este es el código que estoy utilizando:

var
Bitmap, BitmapMask: TBitmap;
x, y: Integer;
begin

// Crear
Bitmap := TBitmap.Create;
BitmapMask := TBitmap.Create;

// proteccion
try
// Cargar la imagen
Bitmap.Assign(Image1.Picture.Bitmap);
// Asignar la imagen
BitmapMask.Assign(Bitmap);

// Si suponemos como color transparente el clFuchsia, lo sustituimos por
// otro para la transparencia
for y:= 0 to 31 do begin
for x:= 0 to 31 do begin
if Bitmap.Canvas.Pixels[x, y] = clFuchsia then begin
Bitmap.Canvas.Pixels[x, y]:= clBlack;
end;
end;
end;

// Crear el icono del cursor
with iconInfo do begin
fIcon:= True;
xHotspot := (Bitmap.Width div 4);
yHotspot := (Bitmap.Height div 3);
hbmMask:= BitmapMask.MaskHandle;
hbmColor:= Bitmap.Handle;
end;

// Asignar el icono
Screen.Cursors[1] := CreateIconIndirect(iconInfo);
Self.Cursor := 1;

//En este punto abro la consulta y hasta que no acaba
// de ejecutarse no aparece el cursor cambiado
Query1.Open;



// Liberar
finally
BitmapMask.Free;
Bitmap.Free;
end;

A ver si me podéis ayudar, gracias

tcp_ip_es
10-09-2008, 10:44:31
pero te sale algún icono en el trascurso de la consulta??? si es asi y mirando este post (http://www.clubdelphi.com/foros/showthread.php?t=57554), veo que según Roman lo que hace es cambiar el cursor tipo que lanza una consulta:

Screen.Cursors[crSQLWait] := Screen.Cursors[crHourglass];

y en tu caso sería:

Screen.Cursors[crSQLWait] := CreateIconIndirect(iconInfo);

si hay alguien el foro que nos pueda ayudar más....

bbjb
10-09-2008, 10:57:22
y en tu caso sería:
Screen.Cursors[crSQLWait] := CreateIconIndirect(iconInfo);

En efecto, diste con la solución. Se trataba de eso, de asignar al cursor que aparece mientras se ejecuta la consulta esta imagen.

Muchísimas gracias.

tcp_ip_es
10-09-2008, 11:01:15
je je je :D me alegra haberte ayudado. Ahora a invitarse a unas copichuelas no? ;)

bbjb
10-09-2008, 11:06:53
Eso está hecho, nos vemos a menos cuarto donde siempre, ok? :D:D:D