Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
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-11-2009
jaimeh jaimeh is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Poder: 18
jaimeh Va por buen camino
Mantener la misma vista en un DBGrid

Hola a todos

A ver si me podéis ayudar con esto.

Tengo un DBGrid asociado a un ClientDataSet.

En el DBGrid selecciono un celda con el raton

y luego en el evento onClick de un button hago

ClientDataSet.DisableControls

Luego trabajo con el ClientDataSet

y al final
ClientDataSet.EnableControls

Y lo que pretendo es que el DBGrid mantenga la misma posición (vista) y la misma celda seleccionada que antes de DisableControls

Espero que alguien sea tan amable y pueda orientarme

Un saludo para todos
Responder Con Cita
  #2  
Antiguo 18-11-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Wink

Se puede hacer de 2 maneras.
Primera:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var p:TBookmark;
begin
   try
    ClientDataSet1.DisableControls;
      p:=ClientDataSet1.GetBookmark;// creo un puntero apuntando al registro actual del DataSet
         //Hago lo que sea con el clientDataset
         //Me muevo para adelante o para atras, etc.
      ClientDataSet1.GotoBookmark(p);//hago volver al registro donde estaba antes
   finally
      ClientDataSet1.FreeBookmark(p);//libero el objeto p
     ClientDataSet1.EnableControls;
   end;
end;
Segunda:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var Fila_Actual:Integer;
begin
    Fila_Actual:=ClientDataSet1.RecNo;
    ClientDataSet1.DisableControls;
         //Hago lo que sea con el clientDataset
         //Me muevo para adelante o para atras, etc.
    ClientDataSet1.RecNo:=Fila_Actual;//vuelvo al registro donde estaba inicialmente 
    ClientDataSet1.EnableControls;
end;
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #3  
Antiguo 18-11-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola jaimeh, yo te aconsejo que utilices BookMark y no RecNo este último no funciona con todas las Bases de datos ni todos los componentes de BDs.

Puedes utilizar el BookMark del mismo DataSet.

Código Delphi [-]
var
 Marca : TBookMarkStr;
begin
   Marca := ClientDataSet1.Bookmark;// Almacenamos la posición del registro actual
   try
    ............................................
    ClientDataSet.DisableControls;
    .............................................
    ClientDataSet1.EnableControls;
   finally
     ClientDataSet.Bookmark := Marca;//Restauramos a la posición anterior
   end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 18-11-2009
jaimeh jaimeh is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Poder: 18
jaimeh Va por buen camino
Muchas gracias a todos por responderme

Lo del RecNo ya lo había hecho yo y lo del bookmark hace hace lo mismo

El problema está en que no se queda con la misma vista que tenía antes el
dbgrid.

Hay que tener en cuenta que se hace click en una celda del dbgrid
que no tiene porque ser de la primera linea del dbgrid.

Y al EnbledControls el primer registro que muestra el dbgrid no es el mismo
que mostraba antes de disableControls aunque la celda seleccionada si es
la misma.

Espero haberme explicado

Saludos a todos
Responder Con Cita
  #5  
Antiguo 18-11-2009
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,
ten en cuenta que en el momento que varias el dataset, te varian los datos que se muestran: me refiero que es posible que se empezaran a mostrar por un registro y estuviese otro seleccionado, que luego al cambiar el dataset ya no saldrian. Para hacer lo que dices, deberas modificar un objeto llamado datalink perteneciente al dbgrid, de tal manera que se empiece a leer desde el mismo registro que antes de cambiar el dataset, usando activerecord y currentrecord. Haz una busqueda al respecto y seguramente te sera sencillo programarlo. Un saludo.
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
Mantener contenido de DBGrid al llamar otra pantalla Hell_Raiser MySQL 4 07-05-2007 21:10:23
Mantener las propiedades de un DBGrid !!! TriLoCBA Conexión con bases de datos 5 29-08-2005 14:54:50
Volver a la misma columna en dbgrid raulparraco OOP 2 06-03-2005 01:58:34
distintas picklists en la misma columna de dbgrid arc22 Varios 4 28-06-2004 16:10:30
Como mantener camp.numero en Dbgrid kia Varios 5 05-08-2003 17:24:52


La franja horaria es GMT +2. Ahora son las 12:49:54.


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