Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-07-2003
tupez tupez is offline
Registrado
 
Registrado: jul 2003
Posts: 3
Poder: 0
tupez Va por buen camino
Question Selección por código de todas las filas de un DBGrid

Me gustaría que me ayudaráis a hacer una cosa:
Tengo una aplicación basada en BD. La tabla principal la tengo mostrada en un control DBGrid. Y me gustaría tener unas opciones de menú del estilo:

Edición -> Seleccionar todo
Edición -> Invertir selección

El problema es que esto lo quiero hacer mediante código puesto que para seleccionar todas las filas de un grid con el ratón es un poco engorroso.
Le he dado muchas vueltas a la propiedad RowsSelectec pero ésta es de sólo lectura, y no me deja marcar las filas que a mí me interesan. He conseguido crear otra variable RowSelected para recorrer todas las filas de la query que me interesan pero lo que yo quiero exactamente es que que se seleccionen todas las filas del grid y queden marcadas visiblemente al usuario.

Espero haberme explicado y que podáis ayudarme. Muchas gracias.
Responder Con Cita
  #2  
Antiguo 22-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Si utilizas la TRxDBGrid puedes utilizar el método SelectAll y UnselectAll para todas las filas, en mi versión ampliada de este grid, he agregado el código de InvertSelection que te paso aquí:

Código:
procedure TRxDBGrid.SelectAll;
var
  ABookmark: TBookmark;
begin
  if MultiSelect and DataLink.Active then begin
    with Datalink.Dataset do begin
      if (BOF and EOF) then Exit;
      DisableControls;
      try
        ABookmark := GetBookmark;
        try
          First;
          while not EOF do begin
            SelectedRows.CurrentRowSelected := True;
            Next;
          end;
        finally
          try
            GotoBookmark(ABookmark);
          except
          end;
          FreeBookmark(ABookmark);
        end;
      finally
        EnableControls;
      end;
    end;
  end;
end;

procedure TRxDBGrid.UnselectAll;
begin
  if MultiSelect then begin
    SelectedRows.Clear;
    FSelecting := False;
  end;
end;
Código:
procedure TFSDBGrid.InvertSelection;
var
  ABookmark: TBookmark;
begin
  if MultiSelect and DataLink.Active then begin
    with Datalink.Dataset do begin
      if (BOF and EOF) then Exit;
      DisableControls;
      try
        ABookmark := GetBookmark;
        try
          First;
          while not EOF do begin
            SelectedRows.CurrentRowSelected := not SelectedRows.CurrentRowSelected;
            Next;
          end;
        finally
          try
            GotoBookmark(ABookmark);
          except
          end;
          FreeBookmark(ABookmark);
        end;
      finally
        EnableControls;
      end;
    end;
  end;
end;
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 23-07-2003
tupez tupez is offline
Registrado
 
Registrado: jul 2003
Posts: 3
Poder: 0
tupez Va por buen camino
Siento mucho mi ignorancia pero no sé a qué componente te refieres con "TRxDBGrid". Yo utilizo el TDBGrid que viene por defecto con Delphi 7.
He estado mirando en tu página por si encontraba algún componente como el que llamas pero no lo encuentro.
Muchas gracias de todas formas. Probaré el código que me has facilitado a ver si es de ayuda.

Chao
Responder Con Cita
  #4  
Antiguo 23-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
El componente TRxDBGrid pertenece a las RxLibs, que son una extensión rusa de la VCL, muy utilizada por los programadores Delphi. Si te interesan las puedes bajar de Torry.net.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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


La franja horaria es GMT +2. Ahora son las 00:30:07.


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