A ver os cuento lo que me pasa, que conste que usado la busqueda y he encontrado algunas soluciones a ciertas dudas mias, os cuento:
Estoy con un terminal venta, ya he conseguido hacer todo solo me faltan los tickets.
Para ello he creado un form con un dbgrid en el que capturo unidades, referencia, descripcion, precio unitario, y precio total.
Unidades | referencia | descripcion |preciounidad|preciototal
Empiezo captutando por las unidades, en el evento onkeypress del dbgrid pongo que si es #13 osea se pulsa enter pase al la siguiente columna:
Código Delphi
[-]procedure Tformticket.ticketgridKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
if ticketgrid.col 1 then
begin
ticketgrid.Fields[2].FocusControl;
end; ....
Cuando llego a descripcion puedes teclear parte de la descripcion del producto pero cuando pulsas enter te hace visible un listbox con los productos de otra tabla (la tabla productos) que coinciden con la parte escrita en la columna del dbgrid:
Código Delphi
[-]if ticketgrid.col = 3 then
begin
tablaproductos.SQL.Text := 'SELECT * FROM ' + bdproductos + ' WHERE descripcion LIKE' + QuotedStr('%' + ticketgrid.Fields[2].Text + '%');
tablaproductos.Execute;
listbox.Visible := true;
listbox.SetFocus;
en el evento onkeypress del listbox hago que si es enter el producto seleccionado me pase su precio y sus datos al dbgrid :
Código Delphi
[-]if Key = #13 then
begin
listbox.Visible := false;
ticketgrid.Fields[2].Text := listbox.SelectedItem; ticketgrid.Fields[3].Value := tablaproductos.FieldValues['pvp']; ticketgrid.Fields[3].FocusControl;
Cuando doy a enter en la columna 4 se prodce el calculo de las unidades * precio unitario y lo pongo en precio total
y doy foco alli:
Código Delphi
[-]if ticketgrid.col = 4 then
begin
ticketgrid.Fields[5].FocusControl;
ticketgrid.Fields[5].Value := ticketgrid.Fields[3].Value * ticketgrid.Fields[1].Value;
end;
Si doy a enter estando en la columna 5:
Código Delphi
[-]if ticketgrid.col = 5 then
begin
tablaticket.Post; tablaticket.Append; ticketgrid.Fields[1].FocusControl; end;
Por cierto antes de comprobar en que columna estoy pregunto si se ha pulsado enter:
if key = #13
pero no va bien salta donde le da la gana y no hace los calculos.
Necesito ayuda estoy echo un lio llevo 3 dias con esto.
Perdon por el ladrillazo y gracias por adelantado.