Código:
Procedure Form1.Table1BeforePost(losparametros);
begin
if Table1.State = dsInsert Then
Begin
Query1.sql := 'Select max(codigo) maximo from tabla';
Query1.Open;
Table1.Codigo := Query1.FieldByName('Maximo').AsInteger + 1;
Query1.Close;
end;
end;
Por supuesto, esto podria dar lugar a problemas con usuarios concurrentes, cuando el evento BeforePost se genere exactamente al mismo tiempo en dos clientes distintos.
Hasta luego.