unit Form2;
interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Grids, StdCtrls, Mask;

type
 TItems = class(TForm)
   StringGrid: TStringGrid;
   edtName: TEdit;
   btnAdd: TButton;
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   btnDelete: TButton;
    Button1: TButton;
    edtCity: TMaskEdit;
    edtEmail: TMaskEdit;
    Button2: TButton;
   procedure FormCreate(Sender: TObject);
   procedure btnAddClick(Sender: TObject);
   procedure btnDeleteClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
 private
   procedure DeleteStringGridRow(n: Integer; var Grid: TStringGrid);
 public
 end;

var
 Items: TItems;

implementation

{$R *.dfm}

procedure TItems.FormCreate(Sender: TObject);
begin
 StringGrid.ColCount := 4;
 StringGrid.RowCount := 2;
 StringGrid.FixedRows := 1;
 StringGrid.ColWidths[0] := 50;
 StringGrid.ColWidths[1] := 100;
 StringGrid.ColWidths[2] := 50;
 StringGrid.ColWidths[3] := 50;

 StringGrid.DefaultRowHeight := StringGrid.Canvas.TextHeight('X') + 8;

 StringGrid.Cells[0, 0] := 'Row';
 StringGrid.Cells[1, 0] := 'SKU';
 StringGrid.Cells[2, 0] := 'Quantity';
 StringGrid.Cells[3, 0] := 'Price';
end;

procedure TItems.btnAddClick(Sender: TObject);
begin
 if Trim(edtName.Text) = '' then begin
   ShowMessage('Name Required');
   Exit;
 end;

 if (StringGrid.RowCount > 2) or (StringGrid.Cells[1, StringGrid.RowCount-1] > '') then
   StringGrid.RowCount := StringGrid.RowCount + 1;

 StringGrid.Cells[0, StringGrid.RowCount-1] := IntToStr(StringGrid.RowCount-1);
 StringGrid.Cells[1, StringGrid.RowCount-1] := edtName.Text;
 StringGrid.Cells[2, StringGrid.RowCount-1] := edtCity.Text;
 StringGrid.Cells[3, StringGrid.RowCount-1] := edtEmail.Text;

 edtName.Text := '';
 edtCity.Text := '';
 edtEmail.Text := '';

 ActiveControl := edtName;
end;


procedure TItems.btnDeleteClick(Sender: TObject);
begin
 if (StringGrid.Row > 0)
 and (StringGrid.Cells[1, StringGrid.RowCount-1] > '')
 and (MessageDlg(Format('Delete %s?', [StringGrid.Cells[1, StringGrid.Row]]), mtConfirmation, [mbYes, mbNo], 0) = mrYes) then begin
   DeleteStringGridRow(StringGrid.Row, StringGrid);
   if StringGrid.RowCount < 2 then
     StringGrid.RowCount := 2;
 end;

 ActiveControl := StringGrid;
end;

procedure TItems.DeleteStringGridRow(n: Integer; var Grid: TStringGrid);
var
 i: integer;
begin
 if Grid.RowCount > Grid.FixedRows + 1 then begin
   for i := (n + 1) to Grid.RowCount do
     Grid.Rows[i-1] := Grid.Rows[i];
   Grid.RowCount := Grid.RowCount -1;
 end else
   Grid.Rows[n].Delete(Grid.Row);
end;
procedure TItems.Button1Click(Sender: TObject);
begin
close;
end;

type
TTableData = record
  header: String[25];   //the header of the column (row 0)
  value : String[25];   //the string value of the data
  number: Integer;      //the y-pos of the data in the table
end;

procedure TItems.Button2Click(Sender: TObject);
var
  i, j: Integer;
  arrData : TTableData;
  tableData : array of TTableData;
  Total_Firma:array of array[0..3] of string;
  CSV : TStrings;
begin
end;
//  for i:= 0 to StringGrid1.RowCount - 1 do begin
//    for j:=0 to StringGrid1.ColCount - 1 do begin
//        ShowMessage(tableData[i,j].header+': '+tableData[i,j].value);
//    end;
//  end;
//end;

end.
