Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2017-06

Como visualizar las existencia en un grid

2 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Ismael L. Donis Garcia

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 ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20170622/34cba0bf/attachment-0001.html>

Reply by email

Jesus R.
to Ismael L. Donis Garcia

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> wrote 175 lines
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>

Reply by email