unit Ufgpan;
{Panel frontal del generador de funciones}
interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, Buttons,Unitgen, ExtCtrls, SensMap, MPlayer;

type
  TFormFg110Panel = class(TForm)
    SensitiveMap1: TSensitiveMap;
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    LabelMando: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    Label30: TLabel;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Label34: TLabel;
    Label35: TLabel;
    Label36: TLabel;
    Label37: TLabel;

    GroupBox2: TGroupBox;
    Memo1: TMemo;
    Panel2: TPanel;
    BitBtn2: TBitBtn;
    MediaPlayer1: TMediaPlayer;
    CheckBox1: TCheckBox;
    GroupBox3: TGroupBox;
    Memo2: TMemo;
    SensitiveMap2: TSensitiveMap;
    Label38: TLabel;
    GroupBox4: TGroupBox;
    Label39: TLabel;
    Label40: TLabel;
    Label41: TLabel;
    Label42: TLabel;
    Label43: TLabel;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SensitiveMap1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Label41MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Label42MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Label43MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormShow(Sender: TObject);
    procedure SensitiveMap2Click(Sender: TObject);
    procedure Label41Click(Sender: TObject);
    procedure Label42Click(Sender: TObject);
    procedure Label43Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormFg110Panel: TFormFg110Panel;
  tema1,tema2,tema3:integer;
               {=1, modos de salida}
               {=2, precauciones en los rangos de frecuencia (sec. 4.6)}
               {=3, precauciones en los rangos de amplitud y offset}
               {=4, precauciones en los rangos del angulo de fase -sec. 4.8-}
               {=5, precauciones en los rangos del período -sec. 4.6-}
implementation

{$R *.DFM}

procedure TFormFg110Panel.BitBtn1Click(Sender: TObject);
begin
     release;
     panelabierto:=false;
end;

procedure TFormFg110Panel.FormCreate(Sender: TObject);
begin
tema1:=0; tema2:=0; tema3:=0;
mediaplayer1.open;
Screen.cursors[CR]:=cur;
SensitiveMap1.Cursor_alt:=CR;
SensitiveMap1.Situar_Cuadro(120,108,160,126,'Rango de salida',Label1);{Range}
SensitiveMap1.Situar_Cuadro(15,206,65,224,'Encendido/Apagado',Label2);{Power}
SensitiveMap1.Situar_Cuadro(22,107,67,127,'Activación local/manual',Label3);{Local}
SensitiveMap1.Situar_Cuadro(72,140,113,159,'Cambio de funciones',Label4);{Shift}
SensitiveMap1.Situar_Cuadro(170,108,210,126,'Selección de modo',Label5);{Mode}
SensitiveMap1.Situar_Cuadro(121,140,162,159,'Restauración de opciones',Label6);{Recall}
SensitiveMap1.Situar_Cuadro(169,139,210,159,'Forma de función de salida',Label7);{Func}
SensitiveMap1.Situar_Cuadro(226,107,268,127,'Establecer frecuencia',Label8);{Freq}
SensitiveMap1.Situar_Cuadro(275,108,316,127,'Establecer amplitud',Label9);{Ampl}
SensitiveMap1.Situar_Cuadro(227,139,268,159,'Fijación de fase',Label10);{Phase}
SensitiveMap1.Situar_Cuadro(275,140,316,158,'Fijación desplazamiento voltaje',Label11);{Offset}
SensitiveMap1.Situar_Cuadro(79,191,129,212,'Salida de señal',Label12);{CH1}
SensitiveMap1.Situar_Cuadro(337,106,454,224,'Teclado numérico',Label13);{Teclado numérico}
SensitiveMap1.Situar_Cuadro(458,106,494,224,'Selección de unidades',Label14);{Teclas de unidad}
SensitiveMap1.Situar_Cuadro(508,106,575,129,'Cursores',Label15);{Cursores}
SensitiveMap1.Situar_Cuadro(507,149,579,216,'Rueda de ajuste',Label16);{Rueda}
SensitiveMap1.Situar_Cuadro(143,181,184,222,'Borne de salida',Label17);{Clavija salida}


SensitiveMap2.Cursor_alt:=CR;
SensitiveMap2.Situar_Cuadro(120,108,160,126,'Factor de escala',Label18);{Scaling}
SensitiveMap2.Situar_Cuadro(15,206,65,224,'Encendido/Apagado',Label19);{Power}
SensitiveMap2.Situar_Cuadro(22,107,67,127,'Comunicaciones GP-IB',Label20);{GP-IB}
SensitiveMap2.Situar_Cuadro(72,140,113,159,'Cambio de funciones',Label21);{Shift}
SensitiveMap2.Situar_Cuadro(170,108,210,126,'Selección de modo',Label22);{Mode}
SensitiveMap2.Situar_Cuadro(121,140,162,159,'Almacenaje de opciones',Label23);{Store}
SensitiveMap2.Situar_Cuadro(169,139,210,159,'Inversión de onda',Label24);{Inverse}
SensitiveMap2.Situar_Cuadro(226,107,268,127,'Establecer período',Label25);{Period}
SensitiveMap2.Situar_Cuadro(275,108,316,127,'Establecer voltaje de alto nivel',Label26);{HI level}
SensitiveMap2.Situar_Cuadro(227,139,268,159,'Relación Pulso/Período',Label27);{Duty}
SensitiveMap2.Situar_Cuadro(275,140,316,158,'Establecer voltaje de bajo nivel',Label28);{LO level}
SensitiveMap2.Situar_Cuadro(79,191,129,212,'Salida de señal',Label29);{CH1}
{SensitiveMap2.Situar_Cuadro(337,106,454,224,'Teclado numérico',Label30);{Teclado numérico}
SensitiveMap2.Situar_Cuadro(458,106,494,224,'Selección de unidades',Label30);{Teclas de unidad}
SensitiveMap2.Situar_Cuadro(508,106,575,129,'Cursores',Label31);{Cursores}
SensitiveMap2.Situar_Cuadro(507,149,579,216,'Rueda de ajuste',Label32);{Rueda}
SensitiveMap2.Situar_Cuadro(143,181,184,222,'Borne de salida',Label33);{Clavija salida}
SensitiveMap2.Situar_Cuadro(340,133,371,157,'Fijación de impulsos',Label34);{Burst}
SensitiveMap2.Situar_Cuadro(380,134,412,159,'Selección flanco positivo/negativo',Label35);{Slope}
SensitiveMap2.Situar_Cuadro(339,167,371,189,'Fijación de nivel TTL',Label36);{TTL}
SensitiveMap2.Situar_Cuadro(337,197,371,221,'Inicialización',Label37);{Initialize}
SensitiveMap2.Situar_Cuadro(380,198,412,222,'Utilidades',Label38);{Utility}

{Dispositivos de lectura}
{SensitiveMap1.Situar_Cuadro();{Displays de selección de rango}

end;

procedure TFormFg110Panel.SensitiveMap1Click(Sender: TObject);
var
   cuad,i:integer;
   qz:string;
begin
     memo1.clear;
     memo2.clear;
     labelmando.caption:='';
     label41.hide;label42.hide;label43.hide;
     cuad:=SensitiveMap1.Cuadro_activo;
     qz:=SensitiveMap1.Quezona(cuad);
     if (qz=' Rango de salida ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla para escalar el voltaje de salida';
        Memo1.lines.Add('Esta tecla sirve para cambiar el orden de las características del voltaje de salida.');
        Memo2.lines.Add('Al pulsar la tecla, la selección del rango cambia alternativamente entre "1V" y "10V".');
        Memo2.lines.Add('Con "1V" seleccionado, todas las características del voltaje se multiplican por 1/10.');
        Memo2.lines.Add('Con "10V" seleccionado, todas las características del voltaje se multiplican por 10.');
     end;
     if (qz=' Encendido/Apagado ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Botón de encendido';
        Memo1.lines.Add('Botón que activa y desactiva el aparato.');
        Memo2.lines.Add('Pulsando este botón, el aparato se apaga y se enciende alternativamente.');
     end;
     if (qz=' Activación local/manual ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla de activación local/manual';
        Memo1.lines.Add('Esta tecla activa los modos remoto y local.');
        Memo2.lines.Add('Pulsando esta tecla, se activan alternativamente los modos local y remoto.');
        Memo2.lines.Add('En modo local, el aparato se maneja mediante las teclas de su panel frontal.');
        Memo2.lines.Add('En modo remoto, el control se ejerce a distancia. No lo usaremos.');
     end;
     if (qz=' Cambio de funciones ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla shift';
        Memo1.lines.Add('Tecla de cambio de funciones del panel frontal.');
        Memo2.lines.Add('Pulsando esta tecla, se activan y desactivan alternativamente las funciones'+
                        'escritas en azul sobre las teclas del panel frontal.');
     end;
     if (qz=' Selección de modo ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla MODE';
        Memo1.lines.Add('Esta tecla sirve para cambiar el modo de la señal de salida.');
        Memo2.lines.Add( 'Pulsando esta tecla se encienden alternativamente en el display las opciones '+
                         'de modo "CONT", "TRIG", "GATE" y "DC".');
        tema1:=1;
        label41.caption:='Modos de salida';
        label41.show;
     end;
     if (qz=' Restauración de opciones ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla recall.';
        Memo1.lines.Add('Esta tecla restaura un conjunto de opciones previamente salvadas.');
        Memo2.lines.Add('1.- Pulsar la tecla RECALL ("rEcALL" aparece en el display).');
        Memo2.lines.Add('2.- Pulsar una de las teclas numéricas en la que previamente se hayan salvado unas opciones.');
        Memo2.lines.Add('Las opciones se restauran y entran en efecto inmediatamente.');
     end;
     if (qz=' Forma de función de salida ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla Func';
        Memo1.lines.Add('Esta tecla permite cambiar la forma de la onda de la función de salida.');
        Memo2.lines.Add('Si el modo de salida es "CONT":');
        Memo2.lines.Add('   Pulsando la tecla FUNC, la forma de la señal de salida cambia alternativamente entre ');
        Memo2.lines.Add('   "onda senoidal", "onda cuadrada", "onda rampa", "onda triangular", y');
        Memo2.lines.Add('   "onda de pulsos".');
        Memo2.lines.Add('Si el modo de salida es "TRIGGER" o "GATE":');
        Memo2.lines.Add('   La tecla FUNC cambia alternativamente entre "onda senoidal", "onda rampa",');
        Memo2.lines.Add('   "onda triangular", y "onda de pulsos".');
        tema1:=1;
        label41.caption:='Modos de salida';
        label41.show;

     end;
     if (qz=' Establecer frecuencia ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla Freq';
        Memo1.lines.Add('Esta tecla permite establecer la frecuencia de la señal de salida.');
        Memo2.lines.Add('1.- Pulsar la tecla FREQ. En el display aparece la palabra FREQ.');
        Memo2.lines.Add('2.- Dos opciones:');
        Memo2.lines.Add('     a) Con las teclas numéricas.');
        Memo2.lines.Add('        Se introduce la cantidad de frecuencia deseada con las teclas numéricas,');
        Memo2.lines.Add('        dando sus unidades con las teclas de unidad (MHz,kHZ...).');
        Memo2.lines.Add('        Con la flecha izquierda de cursor, se borra un dígito tecleado erróneamente.');
        Memo2.lines.Add('     b) Con la rueda de ajuste / cursores.');
        Memo2.lines.Add('        Con las flechas de cursor, seleccionar el dígito a modificar (dicho dígito');
        Memo2.lines.Add('        parpadeará en el display).');
        Memo2.lines.Add('        Después, con la rueda darle el valor desado al dígito seleccionado.');
        tema1:=2;
        label41.caption:='Precauciones';
        label41.show;
     end;
     if (qz=' Establecer amplitud ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla ampl';
        Memo1.lines.Add('Permite determinar la amplitud del voltaje de salida.');
        Memo2.lines.Add('1.- Pulsar la tecla AMPL (en el display aparece "AMPL" iluminada).');
        Memo2.lines.Add('2.- Dos opciones:');
        Memo2.lines.Add('    a) Con las teclas de cursor elegir un dígito y con la rueda de ajuste');
        Memo2.lines.Add('       cambiar el valor de dicho dígito, para cada dígito de la amplitud.');
        Memo2.lines.Add('    b) Dar un valor con las teclas numéricas, y finalizarlo con las teclas');
        Memo2.lines.Add('       de unidad de "V", "mV" o "Vrms".');
        Memo2.lines.Add('       Con la flecha izquierda de cursor, se puede borrar un dígito mal introducido.');
        tema1:=3;
        label41.caption:='Precauciones';
        label41.show;
     end;
     if (qz=' Fijación de fase ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla phase';
        Memo1.lines.Add('Esta tecla permite determinar el ángulo de fase de la señal de salida.');
        Memo2.lines.Add('El ángulo de fase puede ser fijado en los modos "TRIGGER" y "GATE".');
        Memo2.lines.Add('1.- Se pulsa la tecla PHASE ("PHASE" aparece iluminado en el display).');
        Memo2.lines.Add('2.- Dos opciones:');
        Memo2.lines.Add('    a) Con las teclas de cursor elegir un dígito y con la rueda de ajuste');
        Memo2.lines.Add('       cambiar el valor de dicho dígito, para cada dígito de la amplitud.');
        Memo2.lines.Add('    b) Dar un valor con las teclas numéricas, y finalizarlo con la tecla');
        Memo2.lines.Add('       de unidad de "deg(Hz)".');
        Memo2.lines.Add('       Con la flecha izquierda de cursor, se puede borrar un dígito mal introducido.');
        tema1:=4;
        label41.caption:='Precauciones';
        label41.show;
        tema2:=1;
        label42.caption:='Modos de operación';
        label42.show;
     end;
     if (qz=' Fijación desplazamiento voltaje ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla OFFSET';
        Memo1.lines.Add('Permite determinar el desplazamiento del voltaje de salida.');
        Memo2.lines.Add('1.- Pulsar la tecla OFFSET (en el display aparece "OFFSET" iluminada).');
        Memo2.lines.Add('2.- Dos opciones:');
        Memo2.lines.Add('    a) Con las teclas de cursor elegir un dígito y con la rueda de ajuste');
        Memo2.lines.Add('       cambiar el valor de dicho dígito, para cada dígito del desplazamiento.');
        Memo2.lines.Add('    b) Dar un valor con las teclas numéricas, y finalizarlo con las teclas');
        Memo2.lines.Add('       de unidad de "V" o "mV".');
        Memo2.lines.Add('       Con la flecha izquierda de cursor, se puede borrar un dígito mal introducido.');
        tema1:=3;
        label41.caption:='Precauciones';
        label41.show;
     end;
     if (qz=' Salida de señal ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Botón CH1';
        Memo1.lines.Add('Permite activar la salida de la señal de voltaje.');
        Memo2.lines.Add('Pulsando el botón, se activa y desactiva alternativamente la salida.');
     end;
     if (qz=' Teclado numérico ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Teclas numéricas';
        Memo1.lines.Add('Permite introducir valores para las diferentes componentes de la señal de salida.');
        Memo2.lines.Add('1.- Pulsar la tecla correspondiente a una componente de la señal (amplitud, offset...)');
        Memo2.lines.Add('2.- Introducir el valor con el teclado numérico.');
        Memo2.lines.Add('3.- Acabar con una de las teclas de unidad.');
     end;
     if (qz=' Selección de unidades ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Teclas de unidad';
        Memo1.lines.Add('Permiten finalizar la introducción de un valor para una de las componentes de la señal de salida.');
        Memo2.lines.Add('1.- Pulsar la tecla correspondiente a una componente de la señal (amplitud, offset...)');
        Memo2.lines.Add('2.- Introducir el valor con el teclado numérico.');
        Memo2.lines.Add('3.- Acabar con una de las teclas de unidad.');
        Memo2.lines.Add('El valor proporcionado para la componente tomará las unidades de la tecla pulsada.');
     end;
     if (qz=' Cursores ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Teclas de cursor';
        Memo1.lines.Add('Permiten desplazarse por los dígitos del display.');
        Memo2.lines.Add('Pueden usarse de dos formas:');
        Memo2.lines.Add('1.- Mientras se introducen dígitos por el teclado numérico, la pulsación de la flecha izquierda');
        Memo2.lines.Add('    borra el dígito seleccionado.');
        Memo2.lines.Add('2.- Cuando se introducen dígitos mediante la rueda de ajuste, las teclas de cursor permiten ');
        Memo2.lines.Add('    desplazarse por los dígitos del display, a izquierda y a derecha.');
     end;
     if (qz=' Rueda de ajuste ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Rueda de ajuste';
        Memo1.lines.Add('Permite variar de forma contínua el valor de los dígitos del display.');
        Memo2.lines.Add('Girando la rueda a izquierda y derecha cuando se ha seleccionado un dígito del');
        Memo2.lines.Add('display con las flechas de cursor, ese dígito varía de forma contínua.');
     end;
     if (qz=' Borne de salida ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Borne de salida';
        Memo1.lines.Add('Por él saldrá la señal de salida.');
        Memo2.lines.Add('A él se debe conectar el cable de la señal, y pulsar la tecla "CH1"');
        Memo2.lines.Add('para activar la salida.');
     end;
     if (qz='  ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'';
        Memo1.lines.Add('');
        Memo2.lines.Add('');
        Memo2.lines.Add('');
        Memo2.lines.Add('');
        Memo2.lines.Add('');
        Memo2.lines.Add('');
        Memo2.lines.Add('');
        Memo2.lines.Add('');
     end;

end;

procedure TFormFg110Panel.SensitiveMap2Click(Sender: TObject);
var
   cuad,i:integer;
   qz:string;
begin
     memo1.clear;
     memo2.clear;
     labelmando.caption:='';
     label41.hide; label42.hide; label43.hide;
     cuad:=SensitiveMap2.Cuadro_activo;
     qz:=SensitiveMap2.Quezona(cuad);
     if (qz=' Factor de escala ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla scaling';
        Memo1.lines.Add('Permite multiplicar las componentes del voltaje por una constante.');
        Memo2.lines.Add('1.- Pulsar la tecla SCALE. La palabra "ScALE" aparece en el display.');
        Memo2.lines.Add('2.- Dos opciones:');
        Memo2.lines.Add('    a) Con las teclas de cursor elegir un dígito y con la rueda de ajuste');
        Memo2.lines.Add('       cambiar el valor de dicho dígito, para cada dígito del desplazamiento.');
        Memo2.lines.Add('    b) Dar un valor con las teclas numéricas, y finalizarlo con cualquier');
        Memo2.lines.Add('       tecla de unidades.');
        Memo2.lines.Add('       Con la flecha izquierda de cursor, se puede borrar un dígito mal introducido.');
        Memo2.lines.Add('Las características del voltaje se multiplicarán por el factor introducido.');
     end;
     if (qz=' Encendido/Apagado ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Botón de encendido';
        Memo1.lines.Add('Botón que activa y desactiva el aparato.');
        Memo2.lines.Add('Pulsando este botón, el aparato se apaga y se enciende alternativamente.');
     end;
     if (qz=' Comunicaciones GP-IB ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla GP-IB';
        Memo1.lines.Add('Esta tecla permite dar al aparato una dirección de conexión GP-IB.');
        Memo2.lines.Add('1.- Pulsar la tecla GP-IB (La palabra "AdrS" aparece en el display.');
        Memo2.lines.Add('2.- Dos opciones:');
        Memo2.lines.Add('    a) Con las teclas de cursor elegir un dígito y con la rueda de ajuste');
        Memo2.lines.Add('       cambiar el valor de dicho dígito, para cada dígito de la dirección.');
        Memo2.lines.Add('    b) Dar un valor con las teclas numéricas, y finalizarlo con cualquier');
        Memo2.lines.Add('       tecla de unidades.');
        Memo2.lines.Add('       Con la flecha izquierda de cursor, se puede borrar un dígito mal introducido.');
     end;
     if (qz=' Cambio de funciones ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla shift';
        Memo1.lines.Add('Tecla de cambio de funciones del panel frontal.');
        Memo2.lines.Add('Pulsando esta tecla, se activan y desactivan alternativamente las funciones'+
                        'escritas en azul sobre las teclas del panel frontal.');
     end;
     if (qz=' Selección de modo ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla MODE';
        Memo1.lines.Add('Esta tecla sirve para cambiar el modo de la señal de salida.');
        Memo2.lines.Add( 'Pulsando esta tecla se encienden alternativamente en el display las opciones '+
                         'de modo "CONT", "TRIG", "GATE" y "DC".');
        tema1:=1;
        label41.caption:='Modos de salida';
        label41.show;
     end;
     if (qz=' Almacenaje de opciones ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla store.';
        Memo1.lines.Add('Esta tecla salva un conjunto de opciones, que luego pueden ser restauradas.');
        Memo2.lines.Add('1.- Pulsar la tecla STORE ("StorE" aparece en el display).');
        Memo2.lines.Add('2.- Pulsar una de las teclas numéricas. En ella se salvarán las opciones.');
     end;
     if (qz=' Inversión de onda ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla Inverse';
        Memo1.lines.Add('Esta tecla permite la inversión de la función de salida.');
        Memo2.lines.Add('Pulsando la tecla, la función de salida se invierte, pasando de "negativa" a ');
        Memo2.lines.Add('"positiva" alternativamente.');
     end;
     if (qz=' Establecer período ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla Period';
        Memo1.lines.Add('Esta tecla permite establecer el período de la señal de salida.');
        Memo2.lines.Add('1.- Pulsar la tecla PERIOD. En el display aparece iluminada la señal PERIOD.');
        Memo2.lines.Add('2.- Dos opciones:');
        Memo2.lines.Add('     a) Con las teclas numéricas.');
        Memo2.lines.Add('        Se introduce la cantidad de período deseado con las teclas numéricas,');
        Memo2.lines.Add('        dando sus unidades con las teclas de unidad "sec"(segundos) o "msec"(milisegundos).');
        Memo2.lines.Add('        Con la flecha izquierda de cursor, se borra un dígito tecleado erróneamente.');
        Memo2.lines.Add('     b) Con la rueda de ajuste / cursores.');
        Memo2.lines.Add('        Con las flechas de cursor, seleccionar el dígito a modificar (dicho dígito');
        Memo2.lines.Add('        parpadeará en el display).');
        Memo2.lines.Add('        Después, con la rueda darle el valor desado al dígito seleccionado.');
        tema1:=5;
        label41.caption:='Precauciones';
        label41.show;
     end;

     if (qz=' Establecer voltaje de alto nivel ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla hi level';
        Memo1.lines.Add('Permite establecer la amplitud que dará el voltaje de nivel alto.');
        Memo2.lines.Add('1.- Pulsar la tecla HI LEVEL (el indicador "HI LEVEL" se ilumina en el display).');
        Memo2.lines.Add('2.- Dos opciones:');
        Memo2.lines.Add('     a) Con las teclas numéricas.');
        Memo2.lines.Add('        Se introduce la amplitud de voltaje deseada con las teclas numéricas,');
        Memo2.lines.Add('        dando sus unidades con las teclas de unidad "V" o "mV".');
        Memo2.lines.Add('        Con la flecha izquierda de cursor, se borra un dígito tecleado erróneamente.');
        Memo2.lines.Add('     b) Con la rueda de ajuste / cursores.');
        Memo2.lines.Add('        Con las flechas de cursor, seleccionar el dígito a modificar (dicho dígito');
        Memo2.lines.Add('        parpadeará en el display).');
        Memo2.lines.Add('        Después, con la rueda darle el valor desado al dígito seleccionado.');
     end;
     if (qz=' Relación Pulso/Período ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla Duty';
        Memo1.lines.Add('Establece el porcentaje de período que ocupa el nivel alto de una onda de pulso (5%-95%).');
        Memo2.lines.Add('1.- Pulsar la tecla DUTY (el indicador "DUTY" aparece iluminado en el display).');
        Memo2.lines.Add('2.- Dos opciones:');
        Memo2.lines.Add('     a) Con las teclas numéricas.');
        Memo2.lines.Add('        Se introduce la cantidad de porcentaje deseado con las teclas numéricas,');
        Memo2.lines.Add('        dando sus unidades con la tecla de unidad "%".');
        Memo2.lines.Add('        Con la flecha izquierda de cursor, se borra un dígito tecleado erróneamente.');
        Memo2.lines.Add('     b) Con la rueda de ajuste / cursores.');
        Memo2.lines.Add('        Con las flechas de cursor, seleccionar el dígito a modificar (dicho dígito');
        Memo2.lines.Add('        parpadeará en el display).');
        Memo2.lines.Add('        Después, con la rueda darle el valor desado al dígito seleccionado.');
     end;
     if (qz=' Establecer voltaje de bajo nivel ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla lo level';
        Memo1.lines.Add('Permite establecer la amplitud que dará el voltaje de nivel bajo.');
        Memo2.lines.Add('1.- Pulsar la tecla LO LEVEL (el indicador "LO LEVEL" se ilumina en el display).');
        Memo2.lines.Add('2.- Dos opciones:');
        Memo2.lines.Add('     a) Con las teclas numéricas.');
        Memo2.lines.Add('        Se introduce la amplitud de voltaje deseada con las teclas numéricas,');
        Memo2.lines.Add('        dando sus unidades con las teclas de unidad "V" o "mV".');
        Memo2.lines.Add('        Con la flecha izquierda de cursor, se borra un dígito tecleado erróneamente.');
        Memo2.lines.Add('     b) Con la rueda de ajuste / cursores.');
        Memo2.lines.Add('        Con las flechas de cursor, seleccionar el dígito a modificar (dicho dígito');
        Memo2.lines.Add('        parpadeará en el display).');
        Memo2.lines.Add('        Después, con la rueda darle el valor desado al dígito seleccionado.');
     end;
     if (qz=' Salida de señal ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Botón CH1';
        Memo1.lines.Add('Permite activar la salida de la señal de voltaje.');
        Memo2.lines.Add('Pulsando el botón, se activa y desactiva alternativamente la salida.');
     end;
     if (qz=' Selección de unidades ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Teclas de unidad';
        Memo1.lines.Add('Permiten finalizar la introducción de un valor para una de las componentes de la señal de salida.');
        Memo2.lines.Add('1.- Pulsar la tecla correspondiente a una componente de la señal (amplitud, offset...)');
        Memo2.lines.Add('2.- Introducir el valor con el teclado numérico.');
        Memo2.lines.Add('3.- Acabar con una de las teclas de unidad.');
        Memo2.lines.Add('El valor proporcionado para la componente tomará las unidades de la tecla pulsada.');
     end;
     if (qz=' Cursores ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Teclas de cursor';
        Memo1.lines.Add('Permiten desplazarse por los dígitos del display.');
        Memo2.lines.Add('Pueden usarse de dos formas:');
        Memo2.lines.Add('1.- Mientras se introducen dígitos por el teclado numérico, la pulsación de la flecha izquierda');
        Memo2.lines.Add('    borra el dígito seleccionado.');
        Memo2.lines.Add('2.- Cuando se introducen dígitos mediante la rueda de ajuste, las teclas de cursor permiten ');
        Memo2.lines.Add('    desplazarse por los dígitos del display, a izquierda y a derecha.');
     end;
     if (qz=' Rueda de ajuste ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Rueda de ajuste';
        Memo1.lines.Add('Permite variar de forma contínua el valor de los dígitos del display.');
        Memo2.lines.Add('Girando la rueda a izquierda y derecha cuando se ha seleccionado un dígito del');
        Memo2.lines.Add('display con las flechas de cursor, ese dígito varía de forma contínua.');
     end;
     if (qz=' Borne de salida ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Borne de salida';
        Memo1.lines.Add('Por él saldrá la señal de salida.');
        Memo2.lines.Add('A él se debe conectar el cable de la señal, y pulsar la tecla "CH1"');
        Memo2.lines.Add('para activar la salida.');
     end;
     if (qz=' Fijación de impulsos ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla Burst';
        Memo1.lines.Add('Permite establecer el número de pulsos de la señal de salida en modo "TRIGGER".');
        Memo2.lines.Add('1.- Activar el modo "TRIGGER" con la tecla MODE.');
        Memo2.lines.Add('2.- Pulsar la tecla BURST (la palabra "brSt" aparece en el display).');
        Memo2.lines.Add('3.- Dos opciones:');
        Memo2.lines.Add('     a) Con las teclas numéricas.');
        Memo2.lines.Add('        Se introduce el número de impulsos deseados con las teclas numéricas,');
        Memo2.lines.Add('        acabando con cualquier tecla de unidad.');
        Memo2.lines.Add('        Con la flecha izquierda de cursor, se borra un dígito tecleado erróneamente.');
        Memo2.lines.Add('     b) Con la rueda de ajuste / cursores.');
        Memo2.lines.Add('        Con las flechas de cursor, seleccionar el dígito a modificar (dicho dígito');
        Memo2.lines.Add('        parpadeará en el display).');
        Memo2.lines.Add('        Después, con la rueda darle el valor desado al dígito seleccionado.');
        Memo2.lines.Add('Si la señal de salida es de tipo cuadrado, no se puede activar el modo "TRIGGER".');
        Memo2.lines.Add('Si la señal de salida es de tipo pulso, su relación Pulso/Período (tecla DUTY) debe ser 50%.');
        tema1:=1;
        label41.caption:='Modos de salida';
        label41.show;
     end;
     if (qz=' Selección flanco positivo/negativo ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla Slope';
        Memo1.lines.Add('Permite determinar qué flanco de la señal externa activa la señal de salida en modo "TRIGGER".');
        Memo2.lines.Add('1.- Pulsar la tecla SLOPE (la palabra "SLoPE" aparece en el display).');
        Memo2.lines.Add('2.- Seleccionar "PoS"(flanco de subida) o "nEg"(flanco de bajada) con las teclas de cursor o');
        Memo2.lines.Add('    la rueda de ajuste.');
        Memo2.lines.Add('La selección de flanco se usa junto con la tecla BURST y la tecla MODE para establecer las');
        Memo2.lines.Add('características de la señal de salida en modo "TRIGGER".');
        tema1:=1;
        label41.caption:='Modos de operación';
        label41.show;
     end;
     if (qz=' Fijación de nivel TTL ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla TTL';
        Memo1.lines.Add('Pone el voltaje de nivel alto y el de nivel bajo a los propios de los circuitos TTL.');
        Memo2.lines.Add('Pulsando la tecla, el voltaje de nivel alto se sitúa en 5V y el nivel bajo en 0V.');
     end;
     if (qz=' Inicialización ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla Initialize';
        Memo1.lines.Add('Inicializa las diferentes opciones del generador a las opciones de fábrica.');
        Memo2.lines.Add('Pulsando la tecla, el aparato se inicializa.');
        Memo2.lines.Add('La dirección GP-IB, designación de cabecera GP-IB, terminación GP-IB y opciones salvadas');
        Memo2.lines.Add('con la tecla STORE no se ven afectadas por la inicialización.');
     end;
     if (qz=' Utilidades ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla Utility';
        Memo1.lines.Add('Permite realizar funciones de auto-chequeo.');
        Memo2.lines.Add('1.- Pulsar la tecla UTILITY.');
        Memo2.lines.Add('2.- Con las teclas de cursor o la rueda de ajuste se elige una de las siguientes ');
        Memo2.lines.Add('    funciones de auto-chequeo.');
        Memo2.lines.Add('              - Auto-chequeo.');
        Memo2.lines.Add('              - Chequeo del panel frontal.');
        Memo2.lines.Add('              - Chequeo del display.');
        Memo2.lines.Add('              - Revisión de ROM.');
        Memo2.lines.Add('No entraremos en detalles de las funciones de auto-chequeo.');
     end;
     if (qz='  ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'';
        Memo1.lines.Add('');
        Memo2.lines.Add('');
        Memo2.lines.Add('');
        Memo2.lines.Add('');
        Memo2.lines.Add('');
        Memo2.lines.Add('');
        Memo2.lines.Add('');
        Memo2.lines.Add('');
     end;
end;

procedure TFormFg110Panel.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.checked then SensitiveMap1.hide
else SensitiveMap1.show;
end;

procedure TFormFg110Panel.Label41MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
    label41.cursor:=CR;
end;

procedure TFormFg110Panel.Label42MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
    label42.cursor:=CR;
end;

procedure TFormFg110Panel.Label43MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
    label43.cursor:=CR;
end;

procedure TFormFg110Panel.FormShow(Sender: TObject);
begin
     BitBtn2.setfocus;
end;


procedure TFormFg110Panel.Label41Click(Sender: TObject);
begin
case tema1 of
         1:fg110tema1;
         2:fg110tema2;
         3:fg110tema3;
         4:fg110tema4;
         5:fg110tema5;
    end;

end;

procedure TFormFg110Panel.Label42Click(Sender: TObject);
begin
case tema2 of
         1:fg110tema1;
         2:fg110tema2;
         3:fg110tema3;
         4:fg110tema4;
         5:fg110tema5;
    end;
end;

procedure TFormFg110Panel.Label43Click(Sender: TObject);
begin
case tema3 of
         1:fg110tema1;
         2:fg110tema2;
         3:fg110tema3;
         4:fg110tema4;
         5:fg110tema5;
    end;
end;

end.
