| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Mar 24 Sep, 2013 8:59 am Asunto: Saber cuando el raton esta quieto un periodo de tiempo |
|
|
Buenas...
Querria saber como una aplicacion puede reconocer que el puntero del raton esta inmovil durante un periodo de T segundos y entonces realizar las operaciones pertinentes.
Gracias |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 25 Sep, 2013 12:09 pm Asunto: |
|
|
Buscando la ayuda de Builder hay un evento OnMouseMove, y trae código de ejemplo, dentro de TControl. Otra cosa que se me ocurre es comprobar cada x milisegundos con un TTimer las coordenadas del cursor. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Mie 25 Sep, 2013 2:46 pm Asunto: |
|
|
| Ok mirare eso.... gracias por contestarme |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
|
| Volver arriba |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Jue 24 Oct, 2013 8:48 am Asunto: |
|
|
| Gracias Leo.. Gracias juanma |
|
| Volver arriba |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Mar 14 Ene, 2014 4:17 pm Asunto: |
|
|
Buenas..
Combinando timer con la posicion del raton en cada momento he implementado este codigo para que me detecte cuando el raton esta quieto
| Código: | class TForm1 : public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
private: // User declarations
TTimer *Timer;
float Tiempo;
void __fastcall TimerTimer(TObject *Sender);
int PosRatonX;
int PosRatonY;
void __fastcall WMMove (TMessage Message);
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_MOUSEMOVE, TMessage, WMMove);
END_MESSAGE_MAP (TForm); |
| Código: |
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Timer = new TTimer(this);
Timer->OnTimer = TimerTimer;
this->Tiempo = 0.0;
PosRatonX =0;
PosRatonY =0;
}
void __fastcall TForm1::WMMove(TMessage Message)
{
int PosX = LOWORD(Message.LParam);
int PosY = HIWORD(Message.LParam);
if (PosRatonX != PosX || PosRatonY !=PosY)
{
Label1->Caption = "En Movimiento";
Timer->Enabled = false;
this->Tiempo = 0;
Timer->Enabled = true;
}
PosRatonX = PosX;
PosRatonY = PosY;
}
void __fastcall TForm1::TimerTimer(TObject *Sender)
{
this->Tiempo = Tiempo + 0,5;
if(this->Tiempo>0,5)
{
Label1->Caption = "Quieto";
}
}
|
La verdad es que funciona mas o menos pero me gustaria que el tiempo de espera ha que detecte el raton quieto ("a que muestre Label1->Caption = "Quieto"") sea menor... Tambien me da la sensacion de que aveces al mover el raton (en una aplicacion mas compleja) no realiza la operacion que debe realizar inmediatamente al "ponerse en marcha" el cursor.
Alguien puede indicarme como mejorar o cambiar el codigo para que las "sensaciones" sean mas fluidas
Nota: necesito que el movimiento del raton sea detectado con el procedimiento WMMove.
Gracias |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Jue 16 Ene, 2014 1:19 am Asunto: |
|
|
Prueba de esta manera en la que espera 1 segundo a decir que está quieto:
| Código: |
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Timer->Interval = 100;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::WMMove(TMessage Message)
{
Timer->Enabled = false;
Label1->Caption = "En Movimiento";
Timer->Enabled = true;
}
void __fastcall TForm1::TimerTimer(TObject *Sender)
{
LASTINPUTINFO plii;
plii.cbSize = sizeof(LASTINPUTINFO);
GetLastInputInfo(&plii);
if(GetTickCount() - plii.dwTime >= 1000)
Label1->Caption = "Quieto";
}
|
Saludos. |
|
| Volver arriba |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Vie 17 Ene, 2014 10:47 am Asunto: |
|
|
| Muchisimas gracias ,lo probare... seguro que me vale, como siempre. |
|
| Volver arriba |
|
 |
|