Pues creo que lo tienes fácil:
En el evento BeforePost puedes guardar la cantidad de ese artículo en una variable temporal, hacer un lookup en esa tabla para saber si existe el código, si existe, haces lo que has comentado.
Una opción alternativa es preguntar al usuario si quiere sumar los artículos que ya ha introducido en la linea 20 a los existentes en la línea 2ª. Puesto que tienes en una variable temporal la cantidad de la línea 20 y en la BBDD almacenado, la línea 2, solo tienes que editar el registro y aumentar las cantidades.
Algo de código:
Código Delphi
[-]
procedure BeforePost;
var cantidad :Variant;
cantidad_a:integer; begin
cantidad := tabla.Lookup('codigo_articulo',tablacodigo_articulo.asInteger,'cantidad');
if not VarisNull(cantidad) then
cantidad_a := tablacantidad.Asinteger codigo_a := tablacodigo_articulo.AsInteger; if Application.Messagebox('Producto duplicado','¿Desea sumar la cantidad actual a la ya existente?',mb_iconquestion+ mbidyesno)= mbYes then
begin
query1.sql.text := 'update tabla set cantidad = ' inttostr(cantidad + cantidad_a) + 'where codigo_artículo = ' + inttostr(codigo_articulo);
query1.Execsql;
end;
Puede que tenga algunos errores, pero más o menos es así.
Saludos