Ver Mensaje Individual
  #12  
Antiguo 08-12-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
dvd2000,

Revisa este código:
Código Delphi [-]
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
   // Método 2: Funciona correctamente
   if (DBGrid1.SelectedIndex = 1) then
   begin
      if Assigned(DBGrid1.Controls[0]) then
      begin
         if DBGrid1.Controls[0] is TInPlaceEdit then
         with DBGrid1.Controls[0] as TInPlaceEdit do
         begin
            if (GetTextLen >= MaxLongComment) and (Key <> #8) then
            begin
               Key := #0;
               ShowMessage('Máxima longitud alcanzada');
            end;
         end;
      end;
   end;
end;
El ejemplo previo es una variante al código de control de longitud de texto en un control TDBGrid propuesto anteriormente, se excluyen asignaciones a variables y se verifica que el control este asignado antes de realizar ninguna acción. Todo el procesamiento queda circunscrito al control TDBGrid.

La idea es tratar de descartar que el control tenga en algún momento de la ejecución el valor nil y por ello se provoque la excepción. Es una idea, te sugiero probarla en tu aplicación.

Nota: Tanto el código original como la variante funcionan correctamente en mi Sistema (Windows 7 Professional x32 SP1, Delphi 7, Componentes ADO, BD Access).

Espero sea útil

Nelson.
Responder Con Cita