Club Delphi  
    Paypal   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 21-02-2012
Avatar de makina
makina makina is offline
Miembro
 
Registrado: oct 2005
Ubicación: Mexico DF.
Posts: 27
Poder: 0
makina Va por buen camino
Encontre la solucion

la solucion la encontre en
http://www.experts-exchange.com/Prog..._21354684.html

by: DissasterPosted on 2005-03-17 at 09:05:54ID: 13566959
I've encontered this error before, when I executed the dataset.enable/disablecontrols with a linked grid, and between this lines I deleted some records. As far as I understand this happens because the grid does not check how many records it has after it's been re-activated.

As far as I know this is a bug that delphi has from some time, I searched all over the internet for a long time before I found the solution, and this is it:

1.- copy the file dbgrids.pas to your proyect directory (the original location is in %Program files%\Borland\Delphi7\Source\Vcl)
this is to avoid re-compiling the vcl, which by the way i don´t know how to do, if someone know, i'll be glad if they tell me how.

2.- edit the dbgrids.pas file you just copied and make the TCustomDBGrid.UpdateActive procedure look like the following lines:
Código Delphi [-]
procedure TCustomDBGrid.UpdateActive;
var
  NewRow: Integer;
  Field: TField;
begin
  if FDatalink.Active and HandleAllocated and not (csLoading in ComponentState) then
  begin
    NewRow := FDatalink.ActiveRecord + FTitleOffset;
    if (Row <> NewRow) and (NewRow < RowCount) then // <-- Modified line original line was: if Row <> NewRow then
    begin                                           
      if not (dgAlwaysShowEditor in Options) then HideEditor;
      MoveColRow(Col, NewRow, False, False);
      InvalidateEditor;
    end;
    Field := SelectedField;
    if Assigned(Field) and (Field.Text <> FEditText) then
      InvalidateEditor;
  end;
end;
that's it.. now when you recompile your proyect, it will use this unit instead of the original dbgrids.pas, and the problem will be solved.

Hope this helps
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
Grid Index out of range chino150 Varios 5 10-06-2010 02:14:19
grid index out of range ingabraham Varios 1 30-05-2008 15:57:02
Grid index out of range jmlifi Varios 29 19-10-2007 17:50:01
Grid Index out of range javicho_villa Varios 4 25-08-2006 16:30:19
Grid index out of range zugazua2001 Varios 5 22-06-2006 16:57:50


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


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi