PDA

Ver la Versión Completa : Cambiar cursor del raton en tiempo ejecucion


NEG1414
03-03-2011, 11:16:18
Buenas

Tengo un componente TComboBox.. en el evento OnChange de este componente implemento una serie de operaciones que llevan asociado una Barra de progreso (TProgressBar) ....

He intentado que el cursor del raton cambiea a la "forma reloj" (crHourGlass) mientras se realizan las operaciones (antes mencionadas) y se muestra la barra progreso pero no doy

Alguna Idea... Gracias

Toni
03-03-2011, 12:57:47
Pon algo de codigo para ver como lo haces.

Neftali [Germán.Estévez]
03-03-2011, 14:00:10
Algo así debería bastar para cambiar por uno estandard.


Screen.Cursor := crMultiDrag;
try
for i := 0 to 100 do begin
ProgressBar1.Position := i;
Sleep(50);
Application.ProcessMessages;
end;
finally
Cursor := crDefault;
end;


Si quieres utilizar otros, aquí tienes una estrada en mi blog (http://neftali.clubdelphi.com/?p=101) que muestra cómo utilizar BMP's para el cursor.

NOTA: Me acabo de dar cuenta (ya me ha pasado más de una vez) que estamos en el foro de C++; Iba a borrar el mensaje, pues todo lo que te comento está en Delphi, aunque creo que mejor esto (aunque esté en delphi) que nada. :o

NEG1414
03-03-2011, 19:04:28
Gracias por contestar a los Dos (aunque sea en delphi)...El problema no lo tengo en saber como se cambia el cursor ni en Crear la barra de de progreso...el problema surge en que desde el evento onChange del TComboBox no cambia el cursor...me explico

Modifico el Valor de el TComboBox en tiempo de ejecucion, con lo cual se activa el evento Onchange del mismo, dentro de este ejecuta una serie de operaciones que por su duracion acompaño de una barra de Progreso (ningun problema).. quiero que mientras se realizan las operaciones el cursor del raton que aparece en pantalla (que creo que esta asociado al TComboBox) se muestre como reloj de arena durante todo el proceso (indepenientemente de si al moverse pasa sobre otros componentes). para ello antes de realizar las operaciones (del evento Onchange) asigno al cursor del TComboBox el valor "crHourGlass"

TComboBox->Cursor = crHourGlass;El resultado es que mientras se realizan las operaciones y muestra en pantalla la barra de Progreso el cursor no de modifica (default) , en cambio una vez terminadas al pasar el cursor por el componente TComboBox si se muestra el cursor modificado.

He probado a modificar el cursor de la barra de progreso puesto que esta activa moentras se realizan las operaciones pero el resultado es el mismo..

Espero haberme explicado bien.

ecfisa
03-03-2011, 19:44:23
Hola NEG1414.

Si queres que se cambie el cursor para todo el form, deberías utilizar la propiedad Cursor del mismo y no la del combo.

Cursor = crHourGlass;



Un saludo.

rgstuamigo
03-03-2011, 19:45:17
Bueno... segun veo es que solo estás cambiando de cursor al ComboBox, eso quiere decir que si el cursor del Mouse no éstá ubicado encima del comboBox no podrás ver dicho cambio...;) Es decir solo vas a poder ver dicho cambio de cursor cuando el mouse esté dentro del ComboBox por que solamente a ese componente le estás cambiando de cursor.;)
Lo que veo mejor es que no cambies de cursor al comboBox sino más bien a toda la pantalla (Screen), si te fijas el código de Neftali te podrás dar cuenta que no utiliza ningun componente específico para para cambiar de cursor sino más bien está utlizando la pantalla(Screen).;)
Saludos...:)

NEG1414
03-03-2011, 21:32:37
Muchas gracias por contestarme... lo he entendido y voy a probar con Screen...

Gracias otra vez.