Proyecto

General

Perfil

Descargar (10,2 KB) Estadísticas
| Rama: | Revisión:
23a384b9 Elisa
{
Adtos 1.0 Software de gestión de Aulas Tecnológicas
Programación: Manuel Narváez Martínez <mnarvaez007@gmail.com>
Diseño gráfico: Ana María Zamora Moreno
Desarrollado con Lazarus 0.9.26

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
}
unit aulas;

{$mode objfpc}{$H+}

interface

uses
globales,globales1,textomensajes,Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls, Buttons, Process,cldetectarequposalumnos, Grids,HTTPDefs;

type

{ TfrmEquiposAulas }

TfrmEquiposAulas = class(TForm)
btnSalir: TButton;
imgIco: TImage;
imlEncender: TImageList;
imgF: TImage;
Label1: TLabel;
Label2: TLabel;
sgEquiposAlu: TStringGrid;

procedure btnSalirClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject);
private
procedure AsignarImagen(numero:integer;viendopro:boolean);
procedure cambiarImagenBoton(numequ:integer;viendopro:Boolean);
procedure CrearEtiquetasOr();
procedure CrearOrdenadores();
procedure MostrarPortatiles();
procedure muestraEquiposAula(equipos:String);
procedure OrdConclic(Sender: TObject);
{ private declarations }
public
{ public declarations }
end;

var
frmEquiposAulas: TfrmEquiposAulas;
BotonPulsado: Array [0..69] of Boolean;
OrdCon:array[0..69] of TImage;
lblOrd:array[0..69] of Tlabel;
mihilo:ThrDetectarEquiposAlumnos;

implementation
uses inicio;
var
f_numord:integer;
procedure TfrmEquiposAulas.OrdConclic(Sender: TObject);
Const
EQUIPOS_ACTIVOS:String='equipos_aula';
var
orden:string;
estado:Boolean;
begin

f_numord:=(sender as Timage).Tag;
if (not (equipoServidorAula[f_numord].EstadoActivadEquipo in [eUsuario,eEncendido])) then
begin
mensaje(MEN_NO_USUARIO,aceptar);
exit;
end;
try
estado:= BotonPulsado[f_numord];
cambiarImagenBoton(f_numord, BotonPulsado[f_numord]);
if estado then exit;
enabled:=false;
orden:=HTTPEncode(EQUIPOS_ACTIVOS);
orden:= 'hallarProcesosActivos ' + orden + ' X' ;
with ThrDetectarEquiposAlumnos.Create(equipoServidorAula[f_numord].IP,orden) do
begin
OnDetectarEquipos:=@muestraEquiposAula;
resume;
end;
except
////writeln('Error al realizar consulta');
enabled:=true;
end
end;
procedure TfrmEquiposAulas.cambiarImagenBoton(numequ:integer;viendopro:Boolean);
var
i :integer;
miproceso:boolean;
begin

miproceso:= not viendopro;
for i:=0 to g_num_servidores_aula -1 do
begin
BotonPulsado[i]:=false;
AsignarImagen(i,BotonPulsado[i])
end;
BotonPulsado[numequ]:=miproceso;
AsignarImagen(numequ,BotonPulsado[numequ])
end;
procedure TfrmEquiposAulas.CrearOrdenadores();
var
i:integer;
begin
for i:= low(ordcon) to high(ordcon) do
begin
ordcon[i]:=Timage.Create(self);
with ordcon[i] do
begin
tag:=i;
Visible:=false;
Stretch:=true;
if i<g_num_servidores_aula then
AsignarImagen(i,false);
onclick:=@ordconclic;
Cursor:=crhandpoint;
Parent:=self;
end;
BotonPulsado[i]:=false;
end;
end;
procedure TfrmEquiposAulas.AsignarImagen(numero:integer;viendopro:boolean);
var
imgNum:integer;
begin
imgNum:=0;
OrdCon[numero].enabled:=false;
ordCon[numero].Cursor:=crArrow;
if (equipoServidorAula[numero].EstadoActivadEquipo = eAveriado) then
imgNum:=0
else if (equipoServidorAula[numero].EstadoActivadEquipo in[ eApagado, eEncendiendo, eApagando]) then
imgNum:=1
else
begin
if viendopro then imgNum:=3 else imgNum:=2;
OrdCon[numero].enabled:=true;
ordCon[numero].Cursor:=crHandPoint;
end;
imlEncender.getBitmap(imgNum,ordCon[numero].picture.Bitmap);
end;

procedure TfrmEquiposAulas.CrearEtiquetasOr();
var
i:integer;
begin
for i:= low(lblOrd) to high(lblOrd) do
begin
lblOrd[i]:=Tlabel.Create(self);
with lblOrd[i] do
begin
tag:=i;
Color:=clwhite;
transparent:=true;
autosize:=false;
alignment:=tacenter;
font.Name:='Sans';
font.Size:=6;
layout:=tlcenter;
Visible:=false;
if i< g_num_servidores_aula then
begin
Enabled:=equipoServidorAula[i].EstadoActivadEquipo <>eAveriado;
caption:=equipoServidorAula[i].mihost;
end;
Cursor:=crarrow;
Parent:=self;
end;
end
end;



procedure TfrmEquiposAulas.btnSalirClick(Sender: TObject);
begin
close;
end;

procedure TfrmEquiposAulas.FormActivate(Sender: TObject);
begin
if frmMain.Visible then frmMain.hide;
end;

procedure TfrmEquiposAulas.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
CloseAction:=cafree;
end;

procedure TfrmEquiposAulas.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
if mensaje('¿Deseas salir de esta zona?',sino)=2 then
canclose:=false
else
begin
frmMain.show;
hide;
end;
end;

procedure TfrmEquiposAulas.FormCreate(Sender: TObject);
begin
top:=13;left:=(screen.Width-width)div 2;
CrearOrdenadores;
CrearEtiquetasOr;
MostrarPortatiles()
end;

procedure TfrmEquiposAulas.MostrarPortatiles();
var
tor,wo,ho,lb,tb :integer;
spt,i,numsep,numfilas:integer;
begin
wo:=g_Distribuciones[g_TipoAula].ancho;
ho:=g_Distribuciones[g_TipoAula].alto;
tor:=g_Distribuciones[g_TipoAula].altura;
numfilas:=(g_num_ord_pantalla div g_Distribuciones[g_TipoAula].numColumnas);
numsep:=numfilas -1;
spt:=(tor-(numfilas*ho)) div numsep;
for i:=g_num_ord_pantalla-1 downto 0 do
begin
tb:= i div g_Distribuciones[g_TipoAula].numColumnas;
tb:= g_Distribuciones[g_TipoAula].altura-tb*(g_Distribuciones[g_TipoAula].alto+spt);
lb:= i mod g_Distribuciones[g_TipoAula].numColumnas;
lb:= g_Distribuciones[g_TipoAula].izquierda+ g_Distribuciones[g_TipoAula].sepH[lb];
ordcon[i].SetBounds(lb,tb,wo,ho);
ordcon[i].visible:=true;
with lblOrd[i]do
begin
SetBounds(ordcon[i].Left-23,ordcon[i].top+ordcon[i].height+1,ordcon[i].Width+47,15);
visible:=true;
end
end;

for i:=g_num_servidores_aula to g_num_ord_pantalla-1 do
begin
ordcon[i].visible:=false;
lblOrd[i].visible:=false;
end
end;



procedure TfrmEquiposAulas.muestraEquiposAula(equipos:String);
var
sl,seips:TStringList;
i:integer;
equipo,ip,mac,usuario,estado:String;
miestado:String;
begin
if trim(equipos)='' then mensaje('No hay ningún equipo encendido en este aula.',aceptar);
enabled:=true;
try
try
sl:=TStringList.create;
seips:=TStringList.create;
sl.text:=equipos;
//writeln('equipos ',equipos);
seips.Delimiter:='&';
sgEquiposAlu.Clean;
for i:=0 to sl.Count -1 do
begin
seips.DelimitedText:=sl[i];
seips.Delimiter:='&';
//////writeln(seips[0],seips[1]);
usuario:=seips[3];
estado:=seips[4];
mac:=seips[2];
ip:=seips[1];
equipo:=seips[0];
miestado:='Apagado';
if estado='1' then
begin
miestado:='Encendido';
if (trim(usuario)<>'') then
begin
miestado:=usuario;
end;
end;
sgEquiposAlu.Cells[0,i+1]:=inttostr(i+1);
sgEquiposAlu.Cells[1,i+1]:=miestado;
sgEquiposAlu.Cells[2,i+1]:=equipo;
sgEquiposAlu.Cells[3,i+1]:=ip;
sgEquiposAlu.Cells[4,i+1]:=mac;
end;
except
// mensaje('error al ller lista',aceptar);
end;
finally
sl.Free;
seips.free;
end;
//meProceso.Lines.add(procesos);
end;



initialization
{$I aulas.lrs}

end.