Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-01-2004
ivanmm ivanmm is offline
Miembro
 
Registrado: jul 2003
Posts: 11
Poder: 0
ivanmm Va por buen camino
Capturar evento Dobleclick

Hola a todos, tengo 2 problemillas que me estan quitando el sueño y a lo mejor es una tonteria:

1º: No se como se puede capturar el evento DobleClick,es decir, por ejemplo preguntar en un procedimiento si se ha hecho dobleclick sobre un objeto que tengo en el form.

2º:Tengo en el form varios objetos del mismo tipo y quiero hacer un procedimiento generico que cuando se haga un click en alguno de ellos, haga ciertas acciones.Se que esto se podria hacer en el evento OnClick de cada uno de ellos, pero me gustaria encontrar la forma de hacer una funcion o procedimiento generico.


Muchas gracias a todos.
Responder Con Cita
  #2  
Antiguo 18-01-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Cita:
Empezado por ivanmm
2º:Tengo en el form varios objetos del mismo tipo y quiero hacer un procedimiento generico que cuando se haga un click en alguno de ellos, haga ciertas acciones.Se que esto se podria hacer en el evento OnClick de cada uno de ellos, pero me gustaria encontrar la forma de hacer una funcion o procedimiento generico.
Cuando "salta" el evento OnClick o OnDblClick de un objeto, el parámetro que se recibe (Sender) puede ayudarte a este menester

Código:
procedure TForm1.Button1DblClick(Sender: TObject);
begin
  // cosas comunes
.......
  if Sender = Button1 then
  begin
     // lo que sea del Button1
  end;
  if Sender = Button2 then
  begin
     // lo que sea del Button2
  end;
  // más cosas comunes
........
end;
Luego, sólo has de asignar en el Inspector de Objetos el mismo evento a todos los objetos que quieras (siempre y cuando tengan los mismos parámetros). Si no tubieran los mismos parámetros, tendrás que crearte un procedure a parte

Código:
procedure TFomr1.MiProc(Sender: TObject);
begin
  // lo mismo que antes
end;

procedure TForm1.Objecto1DblClick(Sender: TObject; otros parámetros);
begin
  MiProc(Sender);
end;

procedure TForm1.Objeto2DblClick(Sender: TObject; parámetros diferentes);
begin
  MiProc(Sender);
end;
Espero te sirva

Última edición por __cadetill fecha: 18-01-2004 a las 14:11:55. Razón: Especificar algo más
Responder Con Cita
  #3  
Antiguo 18-01-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Cita:
1º: No se como se puede capturar el evento DobleClick,es decir, por ejemplo preguntar en un procedimiento si se ha hecho dobleclick sobre un objeto que tengo en el form.
porq no colocas una variable bandera(Flag), que se active cuando se ejecute el evento dobleclick??
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #4  
Antiguo 18-01-2004
santana santana is offline
No confirmado
 
Registrado: nov 2003
Posts: 1.030
Poder: 0
santana cantidad desconocida en este momento
Si los objetos son del mismo tipo, por ejemplo buttons, yo también les asigno un tag y hago mas o menos esto

Código:
with (Sender as TBitbtn) do begin
case tag of
1: begin
   Application.CreateForm(TForm1, Form1);
   Form1.show;
   end;
2: begin
   Application.CreateForm(TForm2, Form2);
   Form2.show;
   end;
3: begin
   Application.CreateForm(TForm3, Form3);
   Form3.show;
   end;
end;
Responder Con Cita
  #5  
Antiguo 18-01-2004
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Manejadores de eventos compartidos

¡Buen día a todos!

Es decir, varios componentes pueden compartir el mismo manejador de evento (procedimiento genérico común) para uno de sus eventos en particular. Al ejecutarse un manejador de evento compartido, el parámetro Sender (remitente) es el objeto que disparó el evento (el componente para el cual se está ejecutando).

Para crear un manejador de evento compartido, aconsejo seleccionar todos los componentes que tendrán en común ese manejador de evento, y enseguida, con el inspector de objetos, escribir un nombre adecuado para el manejador en la celda correspondiente al evento en cuestión.

Espero esto sea de utilidad. Seguimos en contacto.

Al González .
Responder Con Cita
  #6  
Antiguo 18-01-2004
Descendents Descendents is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 396
Poder: 21
Descendents Va por buen camino
Yo te doy ideas, que no significan que sean las mejores.

1.Puedes recorrerte todos los componentes y en el que tenga el evento doble click asignarle un procedimineto, que te hara lo que quieres, y que te diga cuando ha sido pulsado el objeto y qual es.

2.recuperar el mensaje de windows del doble click del raton y mirar donde esta l cursor en ese momento.Segun donde este, si hay un componente en ese lugar pues mirar qual es.

Suerte
Saludos
__________________
La victoria tiene cien padres. La derrota es huérfana (Napoleón).
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:48:16.


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
Copyright 1996-2007 Club Delphi