dvd2000,
Revisa este código:
Código Delphi
[-]
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
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.