A ver tiro idea, y luego tu le das forma, chapa, pintura y quizá un cambio de aceite:
Código Delphi
[-]type
TSubTotal = record
Precio: currency;
Cant: integer;
SubTotal: currency;
end;
TVentas = array of TSubTotal;
var
MisVentas: TVentas;
Código Delphi
[-]begin
SetLength(MiVentas, 10);
for i := Low(MisVentas) to High(MisVentas) do
begin
MisVentas[i].Precio := StrToCurr(FrameSubTotal.EditPrecio);
MisVentas[i].Cant := StrToInt(FrameSubTotal.EditCant);
MisVentas[i].SubTotal := MisVentas[i].Precio x MisVentas[i].Cant;
FrameSubTotal.EditSubTotal := CurrToStr(MisVentas[i].SubTotal);
Total := Total + MisVentas[i].SubTotal;
end;
end;
En el ejemplo me baso en el uso de Frames. Básicamente el Frame contiene los edits para el precio, cantidad y subtotal. La aplicación crea tanto frames como se requiera.
En cuanto a la lógica es muy simple, dispongo de un arreglo dinámico y creo tantos registros subtotales como frames, les paso los datos y calculo.
Ahora te resta pulir y ver el modo de "actualizar" los cálculos antes algún cambio en algún frame... juega con los eventos.
Por otro lado, es muy fácil caer así sin nada sin siquiera al menos tirar una idea; es como pedir que te lo hagan. Pon de tu parte primero; PUNTUALIZA en tus propias dudas, que llevas hecho, o como lo estuviste al menos encarando, etc.
Saludos,