Ver Mensaje Individual
  #19  
Antiguo 12-04-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Chris Ver Mensaje
¿Entonces hay un condicional o algo por el estilo, que decide no transmitir el evento cuando el Mouse está sobre las celdas de datos? Esto lo digo por lo que anteriormente ha dicho el compañero
El código del método de MouseDown en TControl es éste:

Código Delphi [-]
procedure TControl.MouseDown(Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Assigned(FOnMouseDown) then FOnMouseDown(Self, Button, Shift, X, Y);
end;

O sea, que a nivel de TControl, es que se llama al evento definido por el usuario.

Ahora, si pones un punto de ruptura en el código de TCustomDBGrid.MouseDown, notarás que, no importa donde coloques el cursor del ratón sobr el DBGrid, la ejecución se detiene, indicando que el control recibió el evento.

Sin emabargo, si sigues examinando el código, verás que las llamadas a

Código Delphi [-]
inherited MouseDown(...);

están bajo algunos condicionales, a diferencia de MouseUp, donde la llamada a

Código Delphi [-]
inherited MouseUp(...);

ocurre sin ninguna condición.

Al no llamarse al MouseDown de TControl, nunca se llama al evento definidio por el usuario. Y de ahí el comportamiento que describe ElDioni.

// Saludos
Responder Con Cita