unit valenciasf;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, RTTIGrids, Forms, Controls, Graphics, Grids,
  Dialogs;

type

  { TValColeccion }

  TValColeccion = class(TForm)
    Tabla: TTIGrid;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    private
      FElementos: TCollection;
      procedure IniciarTabla;

  end;

type
  TElementos = class(TCollectionItem)
  private
    FZ: byte;
    FNombre: string;
    FSimbolo: string;
    FValencia: string;
  published
    property Z: byte read FZ write FZ;
    property Nombre: string read FNombre write FNombre;
    property Simbolo: string read FSimbolo write FSimbolo;
    property Valencia: string read FValencia write FValencia;
  end;

var
  ValColeccion: TValColeccion;

implementation

{$R *.lfm}

{ TValColeccion }

procedure TValColeccion.FormCreate(Sender: TObject);
begin
  IniciarTabla;
end;

procedure TValColeccion.FormDestroy(Sender: TObject);
begin
  FElementos.Free;
end;

procedure TValColeccion.IniciarTabla;

  procedure AnadirElemento(aZ: byte; const aNombre, aSimbolo,
    aValencia: string);
    var ei: TElementos;
    begin
    ei := TElementos(FElementos.Add);
    ei.Z:= aZ;
    ei.Nombre:= aNombre;
    ei.Simbolo:= aSimbolo;
    ei.Valencia:= aValencia;

    end;
  procedure AnadirElementos;
    begin
    AnadirElemento(1, 'Hidrógeno', 'H', '1');
    AnadirElemento(2, 'Helio', 'He', '0');
    AnadirElemento(3, 'Litio', 'Li', '1');
    AnadirElemento(4, 'Berilio', 'Be', '2');
    AnadirElemento(5, 'Boro', 'B', '3');
    AnadirElemento(6, 'Carbono', 'C', '2, 4');
    AnadirElemento(7, 'Nitrógeno', 'N', '1, 2, 3, 4, 5');
    AnadirElemento(8, 'Oxígeno', 'O', '2');
    AnadirElemento(9, 'Flúor', 'F', '1');
    AnadirElemento(10,'Neón', 'Ne', '0');
    AnadirElemento(11,'Sodio', 'Na', '1');
    AnadirElemento(12,'Magnesio', 'Mg', '2');
    end;
  procedure IniciarRejilla;
    begin
    Self.Height:= 310;
    Self.Width:= 340;
    Tabla.Align:= alClient;
    Tabla.TIOptions:= Tabla.TIOptions + [tgoStartIndexAtOne];
    Tabla.Options:=Tabla.Options + [goDrawFocusSelected];
    Tabla.FixedColor:=clSkyBlue;
    Tabla.DefaultDrawing:=True;
    Tabla.AutoFillColumns:=True;
    end;
begin
FElementos := TCollection.Create(TElementos);
AnadirElementos;
IniciarRejilla;
Tabla.ListObject := FElementos;
end;
end.

