Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-04-2014
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
TDBGrid + DragDrop + PopUp + Multiselect

Estimados, como el titulo lo dice, necesito combinar en un TDBGrid la posibilidad de activar el Drag and Drop junto con un PopUp, y la propiedad multiselect.

Para el drag and Drop, utilizo el siguiente codifo en el evento OnColEnter

Código Delphi [-]
dbgrid.BeginDrag(false, 10);

Sin embargo, cuando utilizar este código el popup por defecto no funciona!!

Como puedo combinar todas estas opciones ??

Espero me puedan ayudar.
Responder Con Cita
  #2  
Antiguo 17-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mjjj.

Vas a tener que reescribir el método MouseDown del TDBGrid:
Código Delphi [-]
...
type
  TDBGrid = class(DBGrids.TDBGrid)
  public
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);override;
  end;

  TForm1 = class(TForm)
  ...
  end;
...
implementation

procedure TDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ...
  inherited;
end;
Para simplificar la explicación te adjunto un ejemplo con la tabla country de dbdemos (incluida) que copia el/los campos de las filas seleccionadas a un ListBox.
Recuerda luego de una selección múltiple, el drag&drop deberas hacerlo sin levantar el botón del mouse. Es decir, luego de la última selección mantene el botón presionado y arrastra hacia el ListBox de otro modo perderás la selección ante el segundo click.

Para el ejemplo la acción del PopupMenu es la misma (copiar al ListBox) , crea una carpeta y descomprimí el adjunto allí.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip mjjj.zip (5,3 KB, 20 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 17-04-2014
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Excelente, muchas gracias !!
Era lo que necesita.

Saludos.
Responder Con Cita
  #4  
Antiguo 17-04-2014
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Utilizando el ejemplo me surgió un problema, resulta que cuando intento modificar el tamaño de la columna no me deja, ya que comienza el BeginDrag.

Como puedo descartar el BeginDrag en el evento MouseDown, si el cursos esta en el titulo del TDBGrid ??

Existe otra forma de hacerlo ??
Responder Con Cita
  #5  
Antiguo 21-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mjjj.

Disculpas, recién veo tu última consulta.

En el evento MouseDown, deberías controlar que el cursor no esté sobre el título:
Código Delphi [-]
procedure TDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  P: TPoint;
begin
  case Button of
    mbLeft: if MouseCoord(X,Y).Y <> 0 then BeginDrag(True); // <- aquí
    mbRight: begin
               P:= ClientToScreen(Point(X,Y));
               PopupMenu.Popup(P.X,P.Y);
             end
  end;
  inherited;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 21-04-2014
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Gracias, funcionó perfecto.

Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Multiselect en TcxGrid jarponse OOP 2 02-06-2008 11:13:25
DragDrop de un ListBox a otro?? carrrlos OOP 2 04-05-2007 15:27:04
Dbgrid y Multiselect jorge_mosquera OOP 3 26-04-2007 04:22:41
Pequeña duda acerca del MultiSelect de los TDBGrid JuanBCT Varios 3 08-03-2005 21:59:24
multiSelect en TDBGrid carlosmari Varios 3 09-03-2004 16:55:18


La franja horaria es GMT +2. Ahora son las 16:41:39.


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