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 24-05-2022
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Estado DBGrid para DragandDrop

Hola chicos nuevamente un saludo amistoso a todos.

Hoy quise trabajar un DBGrid usando Arrastrar y Soltar o Drag and Drop lo interesante es que cuando mi DBGrid1.DataSource.DataSet esta desactivado el Evento MouseDown funciona pero al activarse por lo registros encontrado no entra a dicho evento.

Este es mi código de ejemplo:
Código Delphi [-]
procedure TFrmConsultarArticulo.DbgConsultaArticuloMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 //if (Sender = DbgConsultaArticulo) and (Button = mbLeft) then
 if ssLeft in shift then
 begin
    if DbgConsultaArticulo.DataSource.DataSet.Active = True then
    begin
      if DbgConsultaArticulo.DataSource.DataSet.RecordCount > 0 then
      begin
       if frmOrdenCompras <> nil then
       begin
       Variables.MyCodigoProductoCompra :=
        DbgConsultaArticulo.Fields[2].AsString;
       Self.DbgConsultaArticulo.BeginDrag(True);
       inherited;
      end;
    end;
    end;
 end;
end;
esto me imposibilita usar el comportamiento de arrastrar y soltar.
Las propiedades del DBGrid son las Siguientes:
DragMode = dmManual
DragKind = dkDrag

Si tienen alguna idea se lo agradecería

Saludos y Bendiciones a todos;

novato_erick
Responder Con Cita
  #2  
Antiguo 24-05-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Porqué no usas el modo automático que te facilita las cosas?
¿Tampoco explicas exactamente qué quieres hacer? ¿Arrastrar elementos desde el mismo DBGrid o arrastrar desde otros componentes?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 24-05-2022
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Estado DBGrid para DragandDrop (Solucionado)

Gracias por Responder Neftali:

Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
¿Porqué no usas el modo automático que te facilita las cosas?
En modo automático fué la solución en el Evento OnMouseDown;
Gracias NefTali.

Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
¿Tampoco explicas exactamente qué quieres hacer? ¿Arrastrar elementos desde el mismo DBGrid o arrastrar desde otros componentes?
Arrastras a un componente Edit que se encuentra en otro formulario desde el formulario del DBGrid para que haga una consulta con tan solo con la celda de Código o Referencia seleccionado.

Esta forma muestra dos ventanas una con un analitico donde proviene la info y el otro con un formulario de pedido el usuario tiene dos pantallas para hacer más eficiente el proceso de selección de información.


Saludos

pd: me apoyé de este link tuyo Neftali me han siempre ayudado https://neftali.clubdelphi.com/arras...-dos-tlistbox/
Responder Con Cita
  #4  
Antiguo 25-05-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si activas el modo Automático de Drag&Drop en ambos componentes, sólo debes obtener el texto que quieres "arrastrar" (este es el paso más complicado) y luego configurar los componentes para que acepten funcionen con el Drag&Drop automático.
Como hablamos de diferentes formularios, puedes usar alguna propiedad para apoyarte en el proceso.

Como he dicho el más complejo es obtener el texto que estás "arrastrando" a partir de las coordenadas del ratón (en un DGBrid); Para eso puedes utilizar un procedimiento como este:

Código Delphi [-]
type
  THackGrid = class(TDBGrid);

...

function TForm1.GetDBGridText(AGrid:TDBGrid; X, Y: Integer): string;
var
  Cell: TGridCoord;
  ActRec: Integer;
begin
  // Por defecto vacío
  Result := string.Empty;
  // coordenados del Grid (fila/columna) a partir del ratón
  Cell := AGrid.MouseCoord(X, Y);
  // ajustar, segun si hay el indicador
  if dgIndicator in AGrid.Options then
    Dec(Cell.X);
  // Ajustar segun si hay títulos
  if dgTitles in AGrid.Options then
    Dec(Cell.Y);
  // Si está activado... seguimos.
  if THackGrid(AGrid).DataLink.Active and (Cell.X >= 0) and (Cell.Y >= 0) then begin
    ActRec := THackGrid(AGrid).DataLink.ActiveRecord;
    try
      // Obtener el dato del dataset
      THackGrid(AGrid).DataLink.ActiveRecord := Cell.Y;
      Result := AGrid.Columns[Cell.X].Field.AsString;
    finally
      THackGrid(AGrid).DataLink.ActiveRecord := ActRec;
    end;
  end;
end;

A partir de ahí es utilizar una propiedad para pasar ese TEXTO al segundo formulario, y configurar ambos componentes con el Drag&Drop automático.
En este ejemplo te lo muestro con cualquier texto, pero podrías hacer que para cualquier columna, te devuelva por ejemplo, siempre el código de empleado (si te interesa).



Te adjunto el ejemplo con el código completo y lo subo al FTP:
http://terawiki.clubdelphi.com/Delph...DropDBGrid.zip
Archivos Adjuntos
Tipo de Archivo: zip DragDropDBGrid.zip (91,9 KB, 4 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 03-06-2022
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje

pero podrías hacer que para cualquier columna, te devuelva por ejemplo, siempre el código de empleado (si te interesa).



Te adjunto el ejemplo con el código completo y lo subo al FTP:
http://terawiki.clubdelphi.com/Delph...DropDBGrid.zip
Ohhh nooo para nada.... me has ayudado 200 años luz a lo que deseaba. waoo

Te lo agradezco muchísimo ese gran aporte, ahora es super más interactivo tomar información para procesarla más rápidamente en otro formulario, ya no tienes que hacer click en una lupita para buscar y escoger.

de nuevo gracias muchas gracias...
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ver estado de mi UPS santi33a Varios 3 08-10-2010 22:19:58
Estado Dataset vtdeleon Conexión con bases de datos 2 18-04-2007 02:14:45
problemas para averiguar el estado de la conexion jorch_yr Internet 4 28-05-2004 08:17:45
Estado de MSN jmselesan PHP 1 24-10-2003 15:02:38


La franja horaria es GMT +2. Ahora son las 18:05:40.


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