[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