[Lazarus-es] Como visualizar las existencia en un grid
Jesus R.
jesusrmx en gmail.com
Vie Jun 23 17:50:26 CEST 2017
Me parece que tu ejemplo hace eso, cual es el problema?
El 22 de junio de 2017, 10:01, Ismael L. Donis Garcia via Lazarus-es <
lazarus-es en lists.lazarus-ide.org> escribió:
> Llevo varios días tratando de visualizar las existencias en un grid y por
> más que doy para atrás y para delante no doy pie con bola.
>
> Alguien ha logrado hacer esto utilizando un MenDataset?
> Como podría lograrlo?
>
> Aquí les paso un pequeño ejemplo de lo que quiero hacer.
>
> Quiero que al moverme por el grid y llegue a la columna de la cantidad
> me sume a las existencias la cantidad y cuando salga de la columna me reste
> la cantidad. El grid es editable, ósea debe permitir agregar datos y
> cambiarle los valores de la algunas columnas, dentro de ellas la de la
> cantidad.
>
> unit Unit1;
>
> {$mode objfpc}{$H+}
>
> interface
>
> uses
> Classes, SysUtils, memds, FileUtil, Forms, Controls, Graphics, Dialogs,
> DBGrids, StdCtrls, db, Grids;
>
>
> type
>
> { TForm1 }
>
> TForm1 = class(TForm)
> DataSource1: TDataSource;
> DBGrid1: TDBGrid;
> Edit1: TEdit;
> MemDataset1: TMemDataset;
> procedure DBGrid1SelectEditor(Sender: TObject; Column: TColumn;
> var Editor: TWinControl);
> procedure FormCreate(Sender: TObject);
> procedure MemDataset1BeforeScroll(DataSet: TDataSet);
> private
> { private declarations }
> icol: longint;
> public
> { public declarations }
> end;
>
> var
> Form1: TForm1;
>
> implementation
>
> {$R *.lfm}
>
> { TForm1 }
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> DataSource1.DataSet:=MemDataset1;
> DBGrid1.DataSource:=DataSource1;
> MemDataset1.FieldDefs.Add('codigo', ftString, 12);
> MemDataset1.FieldDefs.Add('cod', ftString, 4);
> MemDataset1.FieldDefs.Add('elemusd', ftString, 7);
> MemDataset1.FieldDefs.Add('elemmn', ftString, 7);
> MemDataset1.FieldDefs.Add('cantidad', ftFloat);
> MemDataset1.FieldDefs.Add('saldo2', ftFloat);
> MemDataset1.FieldDefs.Add('saldo1', ftFloat);
> MemDataset1.FieldDefs.Add('exist', ftFloat);
> MemDataset1.Open;
> DBGrid1.Columns.Items[0].Title.Caption := 'Código';
> DBGrid1.Columns.Items[0].Width:=115;
> DBGrid1.Columns.Items[0].ReadOnly:=true;
> DBGrid1.Columns.Items[1].Title.Caption := 'Cod';
> DBGrid1.Columns.Items[1].Title.Alignment:=taCenter;
> DBGrid1.Columns.Items[1].Alignment:=taCenter;
> DBGrid1.Columns.Items[1].Width:=58;
> DBGrid1.Columns.Items[1].ButtonStyle:=cbsEllipsis;
> DBGrid1.Columns.Items[2].Title.Caption := 'Elem CUC';
> DBGrid1.Columns.Items[2].Title.Alignment:=taCenter;
> DBGrid1.Columns.Items[2].Alignment:=taCenter;
> DBGrid1.Columns.Items[2].Width:=72;
> DBGrid1.Columns.Items[2].ButtonStyle:=cbsEllipsis;
> DBGrid1.Columns.Items[3].Title.Caption := 'Elem CUP';
> DBGrid1.Columns.Items[3].Title.Alignment:=taCenter;
> DBGrid1.Columns.Items[3].Alignment:=taCenter;
> DBGrid1.Columns.Items[3].Width:=72;
> DBGrid1.Columns.Items[3].ButtonStyle:=cbsEllipsis;
> DBGrid1.Columns.Items[4].Title.Caption := 'Cantidad';
> DBGrid1.Columns.Items[4].Title.Alignment:=taCenter;
> DBGrid1.Columns.Items[4].Alignment:=taRightJustify;
> DBGrid1.Columns.Items[4].Width:=90;
> DBGrid1.Columns.Items[4].DisplayFormat:='###0.000';
> DBGrid1.Columns.Items[5].Title.Caption := 'Valor CUC';
> DBGrid1.Columns.Items[5].Title.Alignment:=taCenter;
> DBGrid1.Columns.Items[5].Alignment:=taRightJustify;
> DBGrid1.Columns.Items[5].Width:=90;
> DBGrid1.Columns.Items[5].DisplayFormat:='###0.00';
> DBGrid1.Columns.Items[6].Title.Caption := 'Valor CUP';
> DBGrid1.Columns.Items[6].Title.Alignment:=taCenter;
> DBGrid1.Columns.Items[6].Alignment:=taRightJustify;
> DBGrid1.Columns.Items[6].Width:=90;
> DBGrid1.Columns.Items[6].DisplayFormat:='###0.00';
> DBGrid1.Columns.Items[7].Title.Caption := 'Existencia';
> DBGrid1.Columns.Items[7].Title.Alignment:=taCenter;
> DBGrid1.Columns.Items[7].Alignment:=taRightJustify;
> DBGrid1.Columns.Items[7].Width:=85;
> DBGrid1.Columns.Items[7].DisplayFormat:='###0.000';
>
> MemDataset1.Append;
> MemDataset1.FieldByName('codigo').AsString:='100.100.0001';
> MemDataset1.FieldByName('cod').AsString:='801';
> MemDataset1.FieldByName('elemusd').AsString:='2013';
> MemDataset1.FieldByName('elemmn').AsString:='2014';
> MemDataset1.FieldByName('cantidad').AsFloat:=1.000;
> MemDataset1.FieldByName('saldo1').AsFloat:=12.5;
> MemDataset1.FieldByName('saldo2').AsFloat:=10.3;
> MemDataset1.FieldByName('exist').AsFloat:=4;
> MemDataset1.UpdateRecord;
> MemDataset1.Post;
> MemDataset1.Append;
> MemDataset1.FieldByName('codigo').AsString:='100.100.0002';
> MemDataset1.FieldByName('cod').AsString:='801';
> MemDataset1.FieldByName('elemusd').AsString:='2013';
> MemDataset1.FieldByName('elemmn').AsString:='2014';
> MemDataset1.FieldByName('cantidad').AsFloat:=2.000;
> MemDataset1.FieldByName('saldo1').AsFloat:=18.5;
> MemDataset1.FieldByName('saldo2').AsFloat:=6.3;
> MemDataset1.FieldByName('exist').AsFloat:=8;
> MemDataset1.UpdateRecord;
> MemDataset1.Post;
>
> icol:=0;
> end;
>
> procedure TForm1.MemDataset1BeforeScroll(DataSet: TDataSet);
> begin
> if (icol = 4) then begin
> if not (DBGrid1.DataSource.DataSet.State in dsEditModes) then
> DBGrid1.DataSource.DataSet.Edit;
> DBGrid1.DataSource.DataSet.FieldByName('exist').AsFloat:=
> DBGrid1.DataSource.DataSet.FieldByName('exist').AsFloat -
> DBGrid1.DataSource.DataSet.FieldByName('cantidad').AsFloat;
> end;
> end;
>
> procedure TForm1.DBGrid1SelectEditor(Sender: TObject; Column: TColumn;
> var Editor: TWinControl);
> begin
> if (Column.Index = 4) then begin
> if not (DBGrid1.DataSource.DataSet.State in dsEditModes) then
> DBGrid1.DataSource.DataSet.Edit;
> DBGrid1.DataSource.DataSet.FieldByName('exist').AsFloat:=
> DBGrid1.DataSource.DataSet.FieldByName('exist').AsFloat +
> DBGrid1.DataSource.DataSet.FieldByName('cantidad').AsFloat;
> end else if (icol = 4) then begin
> if not (DBGrid1.DataSource.DataSet.State in dsEditModes) then
> DBGrid1.DataSource.DataSet.Edit;
> DBGrid1.DataSource.DataSet.FieldByName('exist').AsFloat:=
> DBGrid1.DataSource.DataSet.FieldByName('exist').AsFloat -
> DBGrid1.DataSource.DataSet.FieldByName('cantidad').AsFloat;
> end;
> icol := Column.Index;
> end;
>
> end.
>
> Saludos
> --
> ISMAEL
> Devuan User : http://distrowatch.com/table.php?distribution=devuan
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus-ide.org
> http://lists.lazarus-ide.org/listinfo/lazarus-es
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20170623/86bcb873/attachment.html>
Más información sobre la lista de distribución Lazarus-es