unit pagecontrolf;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ComCtrls, ImgList, ExtCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Bevel1: TBevel;
    Image1: TImage;
    PageControl1: TPageControl;
    tsHojas: TTabSheet;
    tsImagenes: TTabSheet;
    tsTexto: TTabSheet;
    ListBox1: TListBox;
    BitBtnAnterior: TBitBtn;
    BitBtnSiguiente: TBitBtn;
    EditWidth: TEdit;
    UpDown1: TUpDown;
    lblAnchura: TLabel;
    BitBtnAplicar: TBitBtn;
    Memo1: TMemo;
    lblAltura: TLabel;
    EditHeight: TEdit;
    UpDown2: TUpDown;
    Label3: TLabel;
    BitBtnCambiar: TBitBtn;
    ImageList1: TImageList;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    BitBtnAnadir: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure BitBtnAplicarClick(Sender: TObject);
    procedure BitBtnCambiarClick(Sender: TObject);
    procedure BitBtnSiguienteClick(Sender: TObject);
    procedure BitBtnAnteriorClick(Sender: TObject);
    procedure Memo1Change(Sender: TObject);
    procedure BitBtnAnadirClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.LFM}

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  {Rellena la lista y memo con los
  nombres de las hojas}
  for I := 0 to PageControl1.PageCount -1 do
  begin
    ListBox1.Items.Add (
      PageControl1.Pages [I].Caption);
    Memo1.Lines.Add (
      PageControl1.Pages [I].Caption);
  end;
  {Establece las dimensiones iniciales de la imagen}
  EditWidth.Text := IntToStr (Image1.Width);
  EditHeight.Text := IntToStr (Image1.Height);
  {Indica la página inicial}
  PageControl1.ActivePage := tsHojas;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  PageControl1.ActivePage :=
    PageControl1.Pages [ListBox1.ItemIndex];
end;

procedure TForm1.BitBtnAplicarClick(Sender: TObject);
begin
    // Establece medidas de la imagen
  Image1.Width := StrToInt (EditWidth.Text);
  Image1.Height := StrToInt (EditHeight.Text);
  // Establece la visibilidad de la misma
  if RadioButton1.Checked then
    Image1.Visible := True
  else
    Image1.Visible := False;
end;

procedure TForm1.BitBtnCambiarClick(Sender: TObject);
var
  I: Integer;
begin
  if Memo1.Lines.Count = PageControl1.PageCount then
    for I := 0 to PageControl1.PageCount -1 do
      PageControl1.Pages [I].Caption := Memo1.Lines [I];
  BitBtnCambiar.Enabled := False;
end;

procedure TForm1.BitBtnSiguienteClick(Sender: TObject);
begin
   PageControl1.ActivePage :=
    PageControl1.FindNextPage (
      PageControl1.ActivePage, True, False);
end;

procedure TForm1.BitBtnAnteriorClick(Sender: TObject);
begin
  {selecciona la hoja previa}
  PageControl1.SelectNextPage (False);
end;

procedure TForm1.Memo1Change(Sender: TObject);
begin
  BitBtnCambiar.Enabled := True;
end;

procedure TForm1.BitBtnAnadirClick(Sender: TObject);
var
  strLeyenda: string;
  NuevaPestana: TTabSheet;
begin
  strLeyenda := 'Nueva hoja';
  if InputQuery ('Nueva hoja', 'Leyenda', strLeyenda) then
  begin
    // Añade una nueva hoja vacía al control
    NuevaPestana := TTabSheet.Create (PageControl1);
    NuevaPestana.Visible := True;
    NuevaPestana.Caption := strLeyenda;
    NuevaPestana.PageControl := PageControl1;
    PageControl1.ActivePage := NuevaPestana;
    // La añade a ambas listas
    Memo1.Lines.Add (strLeyenda);
    ListBox1.Items.Add (strLeyenda);
  end;
end;

end.
