Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Sustituir puntero ratón por imagen (https://www.clubdelphi.com/foros/showthread.php?t=59704)

bbjb 05-09-2008 08:40:05

Sustituir puntero ratón por imagen
 
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/show...+puntero+raton

bbjb 05-09-2008 10:00:01

Cita:

Empezado por tcp_ip_es
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

Cita:

Empezado por tcp_ip_es
pon el código y vemos si te podemos ayudar...

Este es el código que estoy utilizando:

Código:

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, veo que según Roman lo que hace es cambiar el cursor tipo que lanza una consulta:

Código Delphi [-]
Screen.Cursors[crSQLWait] := Screen.Cursors[crHourglass];

y en tu caso sería:

Código Delphi [-]
Screen.Cursors[crSQLWait] := CreateIconIndirect(iconInfo);

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

bbjb 10-09-2008 10:57:22

Cita:

Empezado por tcp_ip_es
y en tu caso sería:
Código:

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


La franja horaria es GMT +2. Ahora son las 11:15:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi