unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,GLObjects, Spin, Grids, ValEdit,GLGeomObjects;

type
  TPropObj = class(TForm)
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Button3: TButton;
    Valores: TValueListEditor;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
    cubo: TGLCube;
    cono : TGLCone;
    plano : TGLPlane;
    cilindro : TGLCylinder;
    esfera : TGLSphere;
  end;

var
  PropObj: TPropObj;

implementation

{$R *.dfm}

procedure TPropObj.Button2Click(Sender: TObject);
begin
  close;
end;

procedure TPropObj.Button1Click(Sender: TObject);
var
   ancho, alto, profundo : integer;
begin
   try
     {
      cubo.CubeWidth := strtofloat(edit2.Text);
      cubo.CubeHeight :=  strtofloat(edit1.Text);
      cubo.CubeDepth := strtofloat(edit3.Text);}
      if cubo <> nil then
      begin
          cubo.CubeWidth := strtofloat(valores.Values['Ancho']);
          cubo.CubeHeight :=  strtofloat(valores.Values['Alto']);
          cubo.CubeDepth := strtofloat(valores.Values['Profundidad']);
      end;
      if cono <> nil then
      begin
          cono.Height := strtofloat(valores.Values['Alto']);
          cono.BottomRadius :=  strtofloat(valores.Values['Radio de la base']);
        //  cone.CubeDepth := strtofloat(valores.Values['Profundidad']);
      end;
      if plano <> nil then
      begin
          plano.Height := strtofloat(valores.Values['Alto']);
          plano.Width :=  strtofloat(valores.Values['Ancho']);
          plano.XTiles := trunc(plano.Width);
          plano.YTiles := trunc(plano.Height);
        //  cone.CubeDepth := strtofloat(valores.Values['Profundidad']);
      end;
      if cilindro <> nil then
      begin
          cilindro.Height := strtofloat(valores.Values['Alto']);
          cilindro.TopRadius :=  strtofloat(valores.Values['Radio superior']);
          cilindro.BottomRadius :=  strtofloat(valores.Values['Radio inferior']);
        //  cone.CubeDepth := strtofloat(valores.Values['Profundidad']);
      end;
      if esfera <> nil then
      begin
          esfera.Radius := strtofloat(valores.Values['Radio']);

        //  cone.CubeDepth := strtofloat(valores.Values['Profundidad']);
      end;
      close;
   except
      showmessage('Alguno de los valores no es valido');
   end;

end;

procedure TPropObj.Button3Click(Sender: TObject);
var
   ancho, alto, profundo : integer;
begin
   try
      cubo.CubeWidth := strtofloat(edit2.Text);
      cubo.CubeHeight :=  strtofloat(edit1.Text);
      cubo.CubeDepth := strtofloat(edit3.Text);
   except
      showmessage('Alguno de los valores no es valido');
   end;

end;

procedure TPropObj.FormShow(Sender: TObject);
begin
   Valores.Strings.Clear;
   if (cubo<> nil) then
   begin
       Valores.InsertRow('Alto',FloattoStr(cubo.CubeHeight),true);
       Valores.InsertRow('Ancho',FloattoStr(cubo.CubeWidth),true);
       Valores.InsertRow('Profundidad',FloattoStr(cubo.CubeDepth),true);
   end;
   if (cono<> nil) then
   begin
       Valores.InsertRow('Alto',FloattoStr(cono.Height),true);
       Valores.InsertRow('Radio de la base',FloattoStr(cono.BottomRadius),true);
       //Valores.InsertRow('Profundidad',FloattoStr(cono.CubeDepth),true);
   end;
   if (plano<> nil) then
   begin
       Valores.InsertRow('Alto',FloattoStr(plano.Height),true);
       Valores.InsertRow('Ancho',FloattoStr(plano.Width),true);
      // Valores.InsertRow('Profundidad',FloattoStr(cubo.CubeDepth),true);
   end;
   if (cilindro<> nil) then
   begin
       Valores.InsertRow('Alto',FloattoStr(cilindro.Height),true);
       Valores.InsertRow('Radio superior',FloattoStr(cilindro.TopRadius),true);
       Valores.InsertRow('Radio inferior',FloattoStr(cilindro.BottomRadius),true);
   end;
   if (esfera<> nil) then
   begin
       Valores.InsertRow('Radio',FloattoStr(esfera.Radius),true);
   end;
end;

procedure TPropObj.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    cubo := nil;
    cono := nil;
    plano := nil;
    cilindro := nil;
    esfera := nil;
end;

end.
