unit asistenteF;

interface

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

type

  { TForm1 }

  TForm1 = class(TForm)
    Label2: TLabel;
    Label3: TLabel;
    PageControl1: TPageControl;
    tsIntro: TTabSheet;
    tsAutor: TTabSheet;
    tsLazarus: TTabSheet;
    tsFin: TTabSheet;
    Imagen1: TImage;
    btnSiguiente1: TButton;
    btnSiguiente2: TButton;
    btnSiguiente3: TButton;
    btnSiguiente4: TButton;
    Bevel1: TBevel;
    Label1: TLabel;
    cbAutor: TCheckBox;
    btnAtras: TButton;
    Label4: TLabel;
    Label5: TLabel;
    cbHecho: TCheckBox;
    lbLazarus: TListBox;
    Label6: TLabel;
    Label7: TLabel;
    procedure btnSiguiente1Click(Sender: TObject);
    procedure btnAtrasClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure btnSiguiente2Click(Sender: TObject);
    procedure btnSiguiente3Click(Sender: TObject);
    procedure btnSiguiente4Click(Sender: TObject);
    procedure LabelLinkClick(Sender: TObject);
    procedure lbLazarusClick(Sender: TObject);
  private
    BackPages: TList;
  public
    procedure MoverA (TabSheet: TTabSheet);
  end;

var
  Form1: TForm1;

implementation

{$R *.LFM}



procedure TForm1.btnAtrasClick(Sender: TObject);
var
  UltimaPagina: TTabSheet;
begin
  // salta a la última página
  UltimaPagina := TTabSheet (BackPages [BackPages.Count - 1]);
  PageControl1.ActivePage := UltimaPagina;
  // borra la última página de la lista
  BackPages.Delete (BackPages.Count - 1);
  // desactiva el botón Atrás
  btnAtras.Enabled := not (BackPages.Count = 0);
  // mueve imagen y bisel
  Bevel1.Parent := PageControl1.ActivePage;
  Imagen1.Parent := PageControl1.ActivePage;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  BackPages := TList.Create;
  // siempre empieza con la página primera
  PageControl1.ActivePage := tsIntro;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  BackPages.Free;
end;

procedure TForm1.MoverA(TabSheet: TTabSheet);
begin
  // añade la última página a la lista
  BackPages.Add (PageControl1.ActivePage);
  btnAtras.Enabled := True;
  // cambia la hoja
  PageControl1.ActivePage := TabSheet;
  // mueve imagen y bisel
  Bevel1.Parent := PageControl1.ActivePage;
  Imagen1.Parent := PageControl1.ActivePage;
end;

procedure TForm1.btnSiguiente1Click(Sender: TObject);
begin
  if cbAutor.Checked then
    MoverA (tsAutor)
  else
    MoverA (tsLazarus);
end;

procedure TForm1.btnSiguiente2Click(Sender: TObject);
begin
  if cbHecho.Checked then
    MoverA (tsFin)
  else
    MoverA (tsLazarus);
end;

procedure TForm1.btnSiguiente3Click(Sender: TObject);
begin
  MoverA (tsFin);
end;

procedure TForm1.btnSiguiente4Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.LabelLinkClick(Sender: TObject);
var
  Leyenda, StrUrl: string;
begin
  Leyenda := (Sender as TLabel).Caption;
  StrUrl := Copy (Leyenda, Pos ('http://', Caption), 1000);
  ShellExecute (Handle, 'open', PChar (StrUrl), '', '', sw_Show);
end;

procedure TForm1.lbLazarusClick(Sender: TObject);
var
  StrUrl: string;
begin
  StrUrl := lbLazarus.Items [lbLazarus.ItemIndex];
  ShellExecute (Handle, 'open', PChar (StrUrl), '', '', sw_Show);
end;


end.
