unit Uf45pan;
{Panel frontal del multímetro dual fluke45}
interface

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

type
  TFormFluke45Panel = 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;
    GroupBox2: TGroupBox;
    Memo1: TMemo;
    Panel2: TPanel;
    BitBtn2: TBitBtn;
    MediaPlayer1: TMediaPlayer;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    GroupBox3: TGroupBox;
    Memo2: TMemo;
    GroupBox4: TGroupBox;
    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;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SensitiveMap1Click(Sender: TObject);
    procedure Label31MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Label32MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Label33MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Label31Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormFluke45Panel: TFormFluke45Panel;
  subpanel_bot_funcion_abierto:boolean;
  tema1,tema2,tema3:integer;
                            {1 = Mostrar los botones modificadores de función}
                            {2 = Mostrar los botones modificadores de rango}
                            {3 = Mostrar los botones de función}
                            {4 =}
implementation

{$R *.DFM}

procedure TFormFluke45Panel.BitBtn1Click(Sender: TObject);
begin
if (1 in temaabierto) then FormFluke45BMod1.release;
if (2 in temaabierto) then FormFluke45BRango.release;
if (3 in temaabierto) then FormFluke45BFunc.release;
panelabierto:=false;
release;
end;

procedure TFormFluke45Panel.FormCreate(Sender: TObject);
begin
mediaplayer1.open;
subpanel_bot_funcion_abierto:=false;
tema1:=0; tema2:=0; tema3:=0;
temaabierto:=[0];
Screen.cursors[CR]:=cur;
SensitiveMap1.Cursor_alt:=CR;
SensitiveMap1.Situar_Cuadro(230,47,497,123,'Display primario',Label1);{Display primario}
SensitiveMap1.Situar_Cuadro(498,45,628,110,'Display secundario',Label2);{Display secundario}
SensitiveMap1.Situar_Cuadro(37,42,80,88,'Voltios,ohmios,diodos',Label3);{ Terminal de entrada de
                                                                          voltios, ohmios, test de diodos}
SensitiveMap1.Situar_Cuadro(104,42,146,86,'Amperios',Label4);{Terminal de entrada de amperios}
SensitiveMap1.Situar_Cuadro(38,112,81,157,'Terminal común',Label5);{Terminal de retorno de medidas}
SensitiveMap1.Situar_Cuadro(100,108,152,162,'Miliamperios',Label6);{Terminal de entrada de miliamperios}
SensitiveMap1.Situar_Cuadro(385,210,545,251,'Botones de rango',Label8);{Botones de rango}
SensitiveMap1.Situar_Cuadro(222,163,437,248,'Botones de función',Label7);{Botones de función}
SensitiveMap1.Situar_Cuadro(669,166,713,194,'Tecla Shift',Label9);{Tecla shift}
SensitiveMap1.Situar_Cuadro(666,222,712,248,'Frecuencia de medida',Label10);{Tecla Rate}
SensitiveMap1.Situar_Cuadro(604,266,650,294,'Encendido/Apagado',Label11);{Botón power}
SensitiveMap1.Situar_Cuadro(557,166,657,249,'Modificadores',Label12);{Modificadores de función}
{SensitiveMap1.Situar_Cuadro(,,,,'',Label13);{}

end;

procedure TFormFluke45Panel.SensitiveMap1Click(Sender: TObject);
var
   cuad,i:integer;
   qz:string;
begin
     memo1.clear;
     memo2.clear;
     labelmando.caption:='';
     label31.hide; label32.hide; label33.hide;
     cuad:=SensitiveMap1.Cuadro_activo;
     qz:=SensitiveMap1.Quezona(cuad);
     if (qz=' Display primario ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Display primario';
        Memo1.lines.Add('Es el display más grande del multímetro, en');
        Memo1.lines.Add('el que se pueden visualizar medidas.');
        Memo1.lines.Add('Las lecturas afectadas por los modificadores');
        Memo1.lines.Add('REL, MN MX, HOLD o dB, sólo se pueden ');
        Memo1.lines.Add('visualizar en este display.');
        Memo2.lines.Add('');
        tema1:=1;
        label31.Caption:='Mostrar los modificadores de función.';
        label31.show;
     end;
     if (qz=' Display secundario ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Display secundario';
        Memo1.lines.Add('Es el display más pequeño, en la parte');
        Memo1.lines.Add('derecha.');
        Memo1.lines.Add('En él no se pueden mostrar las lecturas');
        Memo1.lines.Add('afectadas por modificadores de función.');
        Memo2.lines.Add('La tecla "2ND" activa y desactiva el display secundario.');
        tema1:=1;
        label31.Caption:='Mostrar los modificadores de función.';
        label31.show;
     end;
     if (qz=' Voltios,ohmios,diodos ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Terminal de entrada de voltios,ohmios,diodos.';
        Memo1.lines.Add('Permite medir Voltajes en corriente continua y ');
        Memo1.lines.Add('alterna, resistencias y realizar test de diodos.');
        Memo2.lines.Add('1.-Conectando la clavija correspondiente al terminal.');
        Memo2.lines.Add('2.-Pulsando la tecla de función a medir adecuada.');
        Memo2.lines.Add('3.-Seleccionar el rango de medida con los botones de rango.');
        tema1:=2;
        label31.Caption:='Mostrar los botones de rango.';
        label31.show;
     end;
     if (qz=' Amperios ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={{strpas(strupper(}'Terminal de entrada de Amperios.';
        Memo1.lines.Add('Esta terminal permite medir corrientes');
        Memo1.lines.Add('y frecuencias.');
        Memo2.lines.Add('1.- Conectar la clavija correspondiente al terminal.');
        Memo2.lines.Add('2.- Seleccionar la función A~ o FREQ.');
        Memo2.lines.Add('3.-Seleccionar el rango de medida con los botones de rango.');
     end;
     if (qz=' Terminal común ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={{strpas(strupper(}'Terminal de retorno de medidas.';
        Memo1.lines.Add('Este terminal provee el cierre del circuito de medición.');
        Memo2.lines.Add('La segunda clavija necesaria para tomar la medida ');
        Memo2.lines.Add('(voltaje, resistencia...), va siempre conectada a este');
        Memo2.lines.Add('terminal.');
     end;
     if (qz=' Miliamperios ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Terminal de entrada de miliamperios.';
        Memo1.lines.Add('Permite medir miliamperios en corriente contínua o alterna, y frecuencias.');
        Memo2.lines.Add('1.-Conectando la clavija correspondiente al terminal.');
        Memo2.lines.Add('2.-Pulsando la tecla de función a medir adecuada(amperios en ');
        Memo2.lines.Add('   contínua o alterna, o frecuencia).');
        Memo2.lines.Add('3.-Seleccionar el rango de medida con los botones de rango.');
     end;
     if (qz=' Botones de rango ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Botones de rango.';
        Memo1.lines.Add('Se usan para seleccionar el rango en el que se');
        Memo1.lines.Add('realizará la medida.');
        Memo2.lines.Add('Pulsando el botón AUTO, se alterna entre el autorango y el rango manual.');
        Memo2.lines.Add('Con los botones de flecha, se puede variar el rango hacia arriba o ');
        Memo2.lines.Add('hacia abajo, en modo manual.');
        Memo2.lines.Add('En modo autorango, el propio multímetro decide cuál es la escala');
        Memo2.lines.Add('de medición más adecuada para la función de entrada.');
        Memo2.lines.Add('');
        Memo2.lines.Add('El display secundario no puede tener modo manual, siempre autorango.');
        tema1:=2;
        label31.Caption:='Mostrar los botones de rango.';
        label31.show;
     end;
     if (qz=' Botones de función ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Botones de función';
        Memo1.lines.Add('Permiten determinar la función que se medirá en el multímetro( voltaje, corriente...),'+
                                  ' continua o alterna.');
        Memo2.lines.Add('La pulsación de los botones por separado o de varios de ellos a la');
        Memo2.lines.Add('vez, determina qué función será la que mida el multímetro.');
        Memo2.lines.Add('Si se pulsa un botón de función después de pulsar el botón "2ND",');
        Memo2.lines.Add('la función se mide en el display secundario.');
        Memo2.lines.Add('');
        Memo2.lines.Add('Para ver una explicación detallada, pulsar el acceso "Mostrar los');
        Memo2.lines.Add('botones de función" del apartado "Temas relacionados", más ');
        Memo2.lines.Add('abajo.');
        tema1:=3;
        label31.Caption:='Mostrar los botones de función.';
        label31.show;
     end;
     if (qz=' Tecla Shift ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla shift.';
        Memo1.lines.Add('Permite alternar entre las funciones de los botones.');
        Memo2.lines.Add('La pulsación de la tecla activa las funciones secundarias de las ');
        Memo2.lines.Add('teclas, y la activación y desactivación del display secundario.');
        Memo2.lines.Add('La pulsación de la tecla 2nd y la posterior pulsación de una tecla');
        Memo2.lines.Add('que no tenga función secundaria, activa la función de dicha tecla ');
        Memo2.lines.Add('en el display secundario.');
     end;
     if (qz=' Frecuencia de medida ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla rate.';
        Memo1.lines.Add('Sirve para especificar la frecuencia de ');
        Memo1.lines.Add('muestreo(medida) de una función.');
        Memo2.lines.Add('Pulsándola, se puede cambiar de frecuencia de muestreo.');
        Memo2.lines.Add(' - Cuando la función a medir es la frecuencia (FREQ), la ');
        Memo2.lines.Add('   frecuencia de muestreo es un factor de la frecuencia que');
        Memo2.lines.Add('   se está midiendo.');
        Memo2.lines.Add(' - Cuando la función que se mide es cualquier otra, las');
        Memo2.lines.Add('   pulsaciones dela tecla RATE, permiten alternar entre');
        Memo2.lines.Add('   las tres velocidades distintas de muestreo: Lenta (Slow),');
        Memo2.lines.Add('   Media (Medium) y Rápida (Fast), representadas en el display');
        Memo2.lines.Add('   con los indicadores S,M y F.');
     end;
     if (qz=' Encendido/Apagado ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Tecla POWER.';
        Memo1.lines.Add('Permite encender y apagar el multímetro.');
        Memo2.lines.Add('Por simple pulsación.');
     end;
     if (qz=' Modificadores ') then
     begin
        if sonido then mediaplayer1.play;
        Labelmando.caption:={strpas(strupper(}'Modificadores de función.';
        Memo1.lines.Add('Permiten realizar una acción sobre una función de entrada.');
        Memo2.lines.Add('1.- Pulsar un botón de función para seleccionar una función ');
        Memo2.lines.Add('    primaria.');
        Memo2.lines.Add('2.- Pulsar un botón modificador de función (o varios),');
        Memo2.lines.Add('    para realizar la acción deseada sobre la entrada.');
        Memo2.lines.Add('');
        Memo2.lines.Add('Los modificadores de función no se pueden emplear con una');
        Memo2.lines.Add('función leída en el display secundario.');
        tema1:=1;
        label31.Caption:='Mostrar los modificadores de función.';
        label31.show;
     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 TFormFluke45Panel.Label31MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
    label31.cursor:=CR;
end;

procedure TFormFluke45Panel.Label32MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
    label32.cursor:=CR;
end;

procedure TFormFluke45Panel.Label33MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
    label33.cursor:=CR;
end;

procedure TFormFluke45Panel.Label31Click(Sender: TObject);
begin
     temaabierto:= temaabierto + [tema1];
     case tema1 of
     1:begin
       application.createform(TFormFluke45BMod1,FormFluke45BMod1);
       FormFluke45BMod1.show;
       end;
     2:begin
       application.createform(TFormFluke45BRango,FormFluke45BRango);
       FormFluke45BRango.show;
       end;
     3:begin
       application.createform(TFormFluke45BFunc,FormFluke45BFunc);
       FormFluke45BFunc.show;
       end;
     else begin end;
     end;
end;


end.
