Ver Mensaje Individual
  #7  
Antiguo 20-09-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Reputación: 23
gluglu Va por buen camino
Pues tienes razón. No lo había probado con el TDBGrid normal.

Resulta que tengo un DBGrid mínimamente modificado para poder hacer selecciones múltiples en el DBGrid con Shift. Esto ya lo comenté en su día aqui.

Para ello me he tenido que derivar mi propio DBGrid que me permite MultiSelección.

Aquí tienes el código :

Código Delphi [-]
unit DBMultiSelectGrid;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids;
 
type

  TDBMultiSelectGrid = class(TDBGrid)
  private
    { Private declarations }
    FOnMouseDown: TMouseEvent;
  protected
    { Protected declarations }
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
  published
    { Published declarations }
    property Row;
    property OnMouseDown read FOnMouseDown write FOnMouseDown;
  end;
 
procedure Register;
 
implementation
 
procedure TDBMultiSelectGrid.MouseDown(Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Assigned(FOnMouseDown) then
    FOnMouseDown(Self, Button, Shift, X, Y);
  inherited MouseDown(Button, Shift, X, Y);
end;
 
procedure Register;
begin
  RegisterComponents('Data Controls', [TDBMultiSelectGrid]);
end;
 
end.

Como podrás observar, redefino el evento OnMouseDown. De esta manera funciona. No sabría ahora mismo como hacerlo sin derivar tu propio componente DBGrid particular como lo he indicado.

Por otro lado me he dado cuenta con tu indicación que con el DBGrid normal y estandar no funciona.

Saludos.
__________________
Piensa siempre en positivo !
Responder Con Cita