|
{
|
|
Adtos 1.0 Software de gestión de Aulas Tecnológicas
|
|
Copyright (C) 2011-2012, Consejería de Educación,Junta de Extremadura
|
|
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 grupos;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Math,inicio,globales,globales1,textomensajes,Classes, SysUtils, LResources,
|
|
Forms, Controls, Graphics, Dialogs, ExtCtrls, ComCtrls, StdCtrls;
|
|
type
|
|
|
|
{ TfrmGrupos }
|
|
|
|
TfrmGrupos = class(TForm)
|
|
btnAnadirCurso: TButton;
|
|
btnAnadirGrupo: TButton;
|
|
btnEliminarCurso: TButton;
|
|
btnEliminarGrupo: TButton;
|
|
btnLimpiarCurso: TButton;
|
|
btnLimpiarGrupo: TButton;
|
|
btnVolver: TButton;
|
|
btnModificarCurso: TButton;
|
|
btnModificarGrupo: TButton;
|
|
edGrupo: TEdit;
|
|
edCurso: TEdit;
|
|
Image1: TImage;
|
|
imlIcoDis: TImageList;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
Label49: TLabel;
|
|
Label50: TLabel;
|
|
Label51: TLabel;
|
|
Label52: TLabel;
|
|
Label53: TLabel;
|
|
lblCurso: TLabel;
|
|
lstCursos: TListBox;
|
|
lstGrupos: TListBox;
|
|
procedure btnAnadirCursoClick(Sender: TObject);
|
|
procedure btnAnadirGrupoClick(Sender: TObject);
|
|
procedure btnEliminarCursoClick(Sender: TObject);
|
|
procedure btnEliminarGrupoClick(Sender: TObject);
|
|
procedure btnLimpiarCursoClick(Sender: TObject);
|
|
procedure btnLimpiarGrupoClick(Sender: TObject);
|
|
procedure btnModificarCursoClick(Sender: TObject);
|
|
procedure btnModificarGrupoClick(Sender: TObject);
|
|
procedure btnVolverClick(Sender: TObject);
|
|
procedure FormActivate(Sender: TObject);
|
|
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure lstCursosClick(Sender: TObject);
|
|
procedure lstGruposClick(Sender: TObject);
|
|
procedure OrdenataDragDrop(Sender, Source: TObject; X, Y: Integer);
|
|
procedure OrdenataDragOver(Sender, Source: TObject; X, Y: Integer;
|
|
State: TDragState; var Accept: Boolean);
|
|
procedure OrdenataMouseDown(Sender: TObject; Button: TMouseButton;
|
|
Shift: TShiftState; X, Y: Integer);
|
|
private
|
|
procedure AnadirCurso;
|
|
procedure AnadirGrupo(cur:integer);
|
|
procedure CargarListaCursos();
|
|
procedure CargarListaGrupos(aul: integer);
|
|
procedure CargarListaGrupos();
|
|
procedure CargarOrdenatas();
|
|
procedure chkEquipoGrupoclick(sender: Tobject);
|
|
procedure edalu1keypres(Sender: TObject; var Key: char);
|
|
procedure EliminarCurso(cur: integer);
|
|
procedure EliminarGrupo();
|
|
procedure LimpiarCamposAlumnos();
|
|
procedure LimpiarCamposGrupo();
|
|
procedure ModificarCurso;
|
|
procedure ModificarGrupo;
|
|
procedure MostrarPersonal();
|
|
procedure MostrarServidoresAulas();
|
|
procedure OrdenataMouseEnter(Sender: TObject);
|
|
procedure recolocaComponetesMovido(numOrd: integer);
|
|
procedure restaurarAula();
|
|
function ValidarDatosCurso(): boolean;
|
|
function ValidarDatosGrupo(cur: integer): boolean;
|
|
{ private declarations }
|
|
public
|
|
{ public declarations }
|
|
end;
|
|
|
|
var
|
|
frmGrupos: TfrmGrupos;
|
|
Ordenata:Array of TImage;
|
|
edAlu1:Array of TLabel;
|
|
chkEquipoGrupo:Array of TCheckBox;
|
|
PuntoO,fPuntoD:TPoint;
|
|
numOrdO,numOrdD:integer;
|
|
|
|
implementation
|
|
|
|
{ TfrmGrupos }
|
|
const
|
|
W_ORDENADOR:integer=63;H_ORDENADOR:integer=58;
|
|
|
|
var
|
|
fcurso,fgrupo:integer;
|
|
|
|
procedure TfrmGrupos.EliminarGrupo();
|
|
var
|
|
grupo:string;
|
|
i:integer;
|
|
grups:array of string;
|
|
begin
|
|
if (lstgrupos.Items.count=0) or (lstgrupos.ItemIndex=-1) then
|
|
begin
|
|
mensaje(MEN_SELECCIONE_GRUPO, aceptar);
|
|
exit;
|
|
end;
|
|
g_Cursos[fcurso].numerogrupos:=g_Cursos[fcurso].numerogrupos-1;
|
|
SetLength(grups, g_Cursos[fcurso].numerogrupos);
|
|
lstgrupos.Items.Delete(fgrupo);
|
|
grupo:=lstgrupos.Items[lstgrupos.ItemIndex];
|
|
for i:=0 to g_Cursos[fcurso].numerogrupos-1 do
|
|
g_Cursos[fcurso].nombregrupos[i]:=lstGrupos.items[i];
|
|
for i:=0 to g_num_ord_aula do
|
|
if g_Cursos[fcurso].cgrupos[i] = fgrupo then
|
|
g_Cursos[fcurso].cgrupos[i]:=-2;
|
|
fgrupo:=-1;
|
|
mensaje('el grupo '+ grupo +' ha sido eliminado',aceptar);
|
|
btneliminarGrupo.Enabled:=false;
|
|
btnModificarGrupo.Enabled:=false;
|
|
LimpiarCamposGrupo();
|
|
end;
|
|
|
|
procedure TfrmGrupos.ModificarGrupo;
|
|
var
|
|
i:integer;
|
|
begin
|
|
if (lstgrupos.Items.count=0) or (lstgrupos.ItemIndex=-1) then
|
|
begin
|
|
mensaje(MEN_GRUPO_MODIFICAR, aceptar);
|
|
exit;
|
|
end;
|
|
g_Cursos[fcurso].nombregrupos[lstGrupos.ItemIndex]:=edGrupo.text;
|
|
lstGrupos.Items[lstGrupos.ItemIndex]:=edGrupo.text;
|
|
for i:=0 to g_num_ord_aula-1 do
|
|
begin
|
|
if g_Cursos[fcurso].cgrupos[i] =fgrupo then
|
|
g_Cursos[fcurso].cgrupos[i]:=-2;
|
|
if chkEquipoGrupo[i].Checked then
|
|
g_Cursos[fcurso].cgrupos[i]:=fgrupo;
|
|
end;
|
|
mensaje(MEN_GRUPO_MODIFICADO, aceptar);
|
|
end;
|
|
|
|
procedure TfrmGrupos.LimpiarCamposGrupo();
|
|
var
|
|
i:integer;
|
|
begin
|
|
lstgrupos.itemindex:=-1;
|
|
edgrupo.Text:='';
|
|
for i:=0 to g_num_ord_aula-1 do
|
|
chkEquipoGrupo[i].Checked:=false;
|
|
end;
|
|
|
|
Function TfrmGrupos.ValidarDatosGrupo(cur:integer):boolean;
|
|
var
|
|
j,i:integer;
|
|
TextoMensaje:string;
|
|
begin
|
|
TextoMensaje:='';
|
|
if length(edgrupo.Text)<1 then
|
|
TextoMensaje:=MEN_INDICA_NOMBRE
|
|
else if length(lblcurso.Caption)<1 then
|
|
TextoMensaje:=MEN_INDICA_AULA
|
|
else
|
|
begin
|
|
j:=0;
|
|
for i:= 0 to g_num_ord_aula-1 do
|
|
if chkEquipoGrupo[i].Checked then inc(j);
|
|
if j=0 then
|
|
textomensaje:=MEN_SELECCIONA_EQUIPO;
|
|
for i:=0 to g_Cursos[cur].numerogrupos -1 do
|
|
begin
|
|
if g_Cursos[cur].nombregrupos[i]= edGrupo.Text then
|
|
textomensaje:=MEN_GRUPO_EXISTE;
|
|
end;
|
|
end;
|
|
result:=TextoMensaje='';
|
|
if not result then
|
|
mensaje(TextoMensaje,aceptar);
|
|
end;
|
|
|
|
procedure TfrmGrupos.AnadirGrupo(cur:integer);
|
|
var
|
|
i:integer;
|
|
grup:integer;
|
|
begin
|
|
grup:=g_Cursos[cur].numerogrupos;
|
|
g_Cursos[cur].numerogrupos:=g_Cursos[cur].numerogrupos+1;
|
|
setlength(g_Cursos[cur].nombregrupos,g_Cursos[cur].numerogrupos);
|
|
g_Cursos[cur].nombregrupos[grup]:=edGrupo.text;
|
|
for i:=0 to g_num_ord_aula-1 do
|
|
if chkEquipoGrupo[i].Checked then
|
|
g_Cursos[cur].cgrupos[i]:=grup;
|
|
CargarListaGrupos(cur);
|
|
LimpiarCamposGrupo();
|
|
end;
|
|
procedure TfrmGrupos.EliminarCurso(cur:integer);
|
|
var
|
|
curso:string;
|
|
miscursos:array of Tcursos;
|
|
i,j,z:integer;
|
|
begin
|
|
setlength(miscursos, g_NumCursos-1);
|
|
j:=0;
|
|
for i:=0 to g_NumCursos-1 do
|
|
begin
|
|
if i<>cur then
|
|
begin
|
|
miscursos[j].nombre:= g_Cursos[i].nombre;
|
|
miscursos[j].numeroalumnos:=g_Cursos[i].numeroalumnos;
|
|
miscursos[j].numerogrupos:= g_Cursos[i].numerogrupos;
|
|
setlength(miscursos[j].nombrealumnos,miscursos[j].numeroalumnos);
|
|
SetLength(miscursos[j].posicionequipo,miscursos[j].numeroalumnos);
|
|
setlength(miscursos[j].nombregrupos,miscursos[j].numerogrupos);
|
|
setlength(miscursos[j].cgrupos,miscursos[j].numeroalumnos);
|
|
for z:=0 to miscursos[j].numeroalumnos -1 do
|
|
begin
|
|
miscursos[j].nombrealumnos[z]:=g_Cursos[i].nombrealumnos[z];
|
|
miscursos[j].posicionequipo[z].x:=g_Cursos[i].posicionequipo[z].x;
|
|
miscursos[j].posicionequipo[z].y:=g_Cursos[i].posicionequipo[z].y;
|
|
miscursos[j].cgrupos[z]:=g_Cursos[i].cgrupos[z]
|
|
end;
|
|
for z:=0 to miscursos[j].numerogrupos -1 do
|
|
begin
|
|
miscursos[j].nombregrupos[z]:=g_Cursos[i].nombregrupos[z];
|
|
end;
|
|
j:=j+1;
|
|
end;
|
|
end;
|
|
fcurso:=-1;
|
|
g_NumCursos:=g_NumCursos-1;
|
|
SetLength(g_Cursos,g_NumCursos);
|
|
g_Cursos:=miscursos;
|
|
curso:=lstCursos.Items[lstCursos.itemindex];
|
|
lstCursos.Items.Delete(lstCursos.itemindex);
|
|
mensaje('el curso '+ curso +' ha sido eliminado',aceptar);
|
|
btneliminarCurso.Enabled:=false;
|
|
btnModificarCurso.Enabled:=false;
|
|
cargarlistaCursos();
|
|
LimpiarCamposAlumnos();
|
|
end;
|
|
|
|
procedure TfrmGrupos.ModificarCurso;
|
|
var
|
|
curso:string;
|
|
i:integer;
|
|
begin
|
|
if (lstCursos.Items.count=0) or (lstCursos.ItemIndex=-1) then exit;
|
|
curso:=edCurso.text;
|
|
if mensaje('¿Desea modificar el curso ' +curso+'?',sino)=2 then exit;
|
|
lstCursos.Items[fcurso]:=curso;
|
|
g_Cursos[fcurso].nombre:=curso;
|
|
for i:=0 to g_num_ord_aula-1 do
|
|
begin
|
|
g_Cursos[fcurso].nombrealumnos[i]:=edAlu1[i].Caption;
|
|
g_Cursos[fcurso].posicionequipo[i].X:=Ordenata[i].Left;
|
|
g_Cursos[fcurso].posicionequipo[i].y:=Ordenata[i].top;
|
|
end;
|
|
mensaje('El curso ' + edcurso.Caption + ' ha sido modificado correctamente',aceptar);
|
|
end;
|
|
|
|
Function TfrmGrupos.ValidarDatosCurso():boolean;
|
|
var
|
|
TextoMensaje:string;
|
|
begin
|
|
if length(trim(edCurso.text)) <1 then
|
|
TextoMensaje:=MEN_ELIGE_NOMBRE
|
|
else
|
|
TextoMensaje:='';
|
|
result:=TextoMensaje='';
|
|
if not result then
|
|
mensaje(TextoMensaje,aceptar);
|
|
end;
|
|
|
|
procedure TfrmGrupos.LimpiarCamposAlumnos();
|
|
var
|
|
i:integer;
|
|
begin
|
|
lstcursos.itemindex:=-1;
|
|
lstgrupos.Clear;
|
|
edgrupo.Text:='';
|
|
edCurso.text:='';
|
|
lblcurso.caption:='';
|
|
for i:=0 to g_num_ord_aula-1 do
|
|
begin
|
|
chkEquipoGrupo[i].Checked:=false;
|
|
//edalu1[i].Caption:='';
|
|
end;
|
|
btnEliminarCurso.Enabled:=false;
|
|
btnEliminargrupo.Enabled:=false;
|
|
btnModificargrupo.Enabled:=false;
|
|
btnModificarcurso.Enabled:=false;
|
|
restaurarAula();
|
|
end;
|
|
|
|
procedure TfrmGrupos.AnadirCurso;
|
|
var
|
|
nc,i:integer;
|
|
begin
|
|
g_NumCursos:=g_NumCursos+1;
|
|
SetLength(g_Cursos,g_NumCursos);
|
|
nc:=g_NumCursos-1;
|
|
g_Cursos[nc].nombre:=edCurso.text;
|
|
g_Cursos[nc].numeroalumnos:=g_num_ord_aula;
|
|
g_Cursos[nc].numerogrupos:=0;
|
|
SetLength(g_Cursos[nc].nombrealumnos,g_num_ord_aula);
|
|
SetLength(g_Cursos[nc].posicionequipo, g_num_ord_aula);
|
|
SetLength(g_Cursos[nc].cgrupos,g_num_ord_aula);
|
|
for i:=0 to g_num_ord_aula-1 do
|
|
begin
|
|
g_Cursos[nc].nombrealumnos[i]:=edAlu1[i].Caption;
|
|
g_Cursos[nc].posicionequipo[i].X:=Ordenata[i].Left;
|
|
g_Cursos[nc].posicionequipo[i].y:=Ordenata[i].top;
|
|
g_Cursos[nc].cgrupos[i]:=-2;
|
|
end;
|
|
cargarlistaCursos();
|
|
LimpiarCamposAlumnos();
|
|
end;
|
|
|
|
procedure TfrmGrupos.CargarListaCursos();
|
|
var i:integer;
|
|
begin
|
|
if g_NumCursos=0 then exit;;
|
|
lstCursos.Clear;
|
|
for i:=0 to g_NumCursos-1 do
|
|
lstcursos.Items.Add(g_Cursos[i].nombre);
|
|
end;
|
|
|
|
procedure TfrmGrupos.CargarListaGrupos();
|
|
var
|
|
i:integer;
|
|
begin
|
|
lstgrupos.Clear;
|
|
if g_Cursos[fcurso].numerogrupos=0 then exit;
|
|
for i:=0 to g_Cursos[fcurso].numerogrupos-1 do
|
|
lstgrupos.Items.Add(g_Cursos[fcurso].nombregrupos[i]);
|
|
end;
|
|
|
|
procedure TfrmGrupos.chkEquipoGrupoclick(sender:Tobject);
|
|
var
|
|
inumima,inumord:integer;
|
|
begin
|
|
inumord:=(sender as TCheckBox).tag;
|
|
inumima:=ifthen((sender as TCheckBox).Checked,1,0);
|
|
imlIcoDis.GetBitmap(inumima,Ordenata[inumord].Picture.Bitmap)
|
|
end;
|
|
procedure TfrmGrupos.MostrarServidoresAulas();
|
|
var
|
|
tor,wo,ho,lb,tb :integer;
|
|
lor,sepl,spt,i,numsep,numfilas:integer;
|
|
posi3,posi2,cambioi: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;
|
|
if g_tipoAula>= 7 then spt:=spt-10;
|
|
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];
|
|
Ordenata[i].SetBounds(lb,tb,wo,ho);
|
|
Ordenata[i].visible:=true;
|
|
end;
|
|
for i:=g_num_ord_aula to g_num_ord_pantalla-1 do
|
|
begin
|
|
Ordenata[i].visible:=false;
|
|
end
|
|
end;
|
|
|
|
|
|
Procedure TfrmGrupos.MostrarPersonal();
|
|
var
|
|
i:integer;
|
|
begin
|
|
tamanoMonitorPersonal(g_ColumnasPersonal);
|
|
for i:=0 to high(Ordenata) do
|
|
Ordenata[i].visible:=false;
|
|
for i:=0 to g_num_ord_aula-1 do
|
|
begin
|
|
Ordenata[i].SetBounds(equipoalumno[i].L,equipoalumno[i].T+10,g_anchoMonitorPersonal,g_altoMonitorPersonal);
|
|
Ordenata[i].Visible:=true;
|
|
end;
|
|
end;
|
|
procedure TfrmGrupos.OrdenataMouseEnter(Sender: TObject);
|
|
var
|
|
numeord:integer;
|
|
begin
|
|
numeord:=(sender as Timage).tag;
|
|
(sender as Timage).ShowHint:=(Trim(equipoAlumno[numeord].mihost)<>'');
|
|
if (g_mostrarNombreUsuario) then
|
|
begin
|
|
if (equipoAlumno[numeord].EstadoActivadEquipo=eUsuario) then
|
|
(sender as Timage).Hint:='Usuario: ' +equipoAlumno[numeord].UsuarioActivo
|
|
else
|
|
(sender as Timage).Hint:='Equipo: '+equipoAlumno[numeord].mihost;
|
|
|
|
end;
|
|
end;
|
|
Procedure TfrmGrupos.CargarOrdenatas();
|
|
var
|
|
fuente,altoe,i:integer;
|
|
begin
|
|
setlength(Ordenata,g_num_ord_pantalla);
|
|
setlength(edalu1,g_num_ord_pantalla);
|
|
setlength(chkEquipoGrupo,g_num_ord_pantalla);
|
|
for i:=g_num_ord_pantalla-1 downto 0 do
|
|
begin
|
|
Ordenata[i]:= TImage.Create(self);
|
|
with Ordenata[i] do
|
|
begin
|
|
width:=W_ORDENADOR;
|
|
Height:=H_ORDENADOR;
|
|
stretch:=true;
|
|
Cursor:=crarrow;
|
|
imlicodis.GetBitmap(0,Picture.Bitmap);
|
|
OnMouseDown:=@OrdenataMouseDown;
|
|
//OnMouseUp:=@OrdenataMouseUp;
|
|
//OnMouseMove:=@OrdenataMouseMove;
|
|
OnMouseEnter:=@OrdenataMouseEnter;
|
|
OnDragOver:=@OrdenataDragOver;
|
|
OnDragDrop:=@OrdenataDragDrop;
|
|
Parent:=self;
|
|
tag:=i;
|
|
visible:=false;
|
|
end;
|
|
end;
|
|
if g_DisenoClase=0 then
|
|
MostrarServidoresAulas()
|
|
else
|
|
MostrarPersonal();
|
|
if g_num_ord_aula>18 then
|
|
begin
|
|
fuente:=6;altoe:=14
|
|
end
|
|
else
|
|
begin
|
|
fuente:=7;altoe:=14;
|
|
end;
|
|
|
|
for i:= 0 to g_num_ord_pantalla-1 do
|
|
begin
|
|
edalu1[i]:= TLabel.Create(self);
|
|
with edalu1[i] do
|
|
begin
|
|
AutoSize:=false;
|
|
Transparent:=true;
|
|
SetBounds(Ordenata[i].Left, (Ordenata[i].top+Ordenata[i].height),(Ordenata[i].Width),altoe);
|
|
Font.Name:='Sans';
|
|
Font.Size :=fuente;
|
|
|
|
//maxlength:=22;
|
|
//BorderStyle:=bsSingle;
|
|
Alignment:=taCenter;
|
|
Parent:=self;
|
|
visible:=false;
|
|
//OnKeyPress:=@edalu1keypres;
|
|
// OnMouseDown:=@edualuMouseDown;
|
|
// OnMouseUp:=@edualu1MouseUp;
|
|
// OnMouseMove:=@edualu1MouseMove;
|
|
|
|
if (i<g_num_ord_aula) then
|
|
begin
|
|
if Trim(equipoAlumno[i].UsuarioActivo) <> '' then
|
|
Caption:=equipoAlumno[i].UsuarioActivo
|
|
else
|
|
Caption:=equipoAlumno[i].mihost;
|
|
end;
|
|
end;
|
|
end;
|
|
for i:=g_num_ord_aula to g_num_ord_pantalla-1 do
|
|
begin
|
|
edalu1[i].visible:=false;
|
|
ordenata[i].Visible:=false;
|
|
end;
|
|
for i:= 0 to g_num_ord_aula-1 do
|
|
begin
|
|
chkEquipoGrupo[i]:= TCheckBox.Create(self);
|
|
with chkEquipoGrupo[i] do
|
|
begin
|
|
Checked:=false;
|
|
Visible:=true;
|
|
SetBounds(Ordenata[i].Left-4+Ordenata[i].Width,Ordenata[i].Top-5,10,10);
|
|
Caption:='';
|
|
Parent:=self;
|
|
tag:=i;
|
|
Cursor:=crHandPoint;
|
|
OnClick:=@chkEquipoGrupoclick;
|
|
Enabled:=true;
|
|
visible:=false;;
|
|
end;
|
|
end;
|
|
for i:=0 to g_num_ord_aula-1 do
|
|
begin
|
|
chkEquipoGrupo[i].Visible:=true;
|
|
Ordenata[i].Visible:=true;
|
|
edAlu1[i].Visible:=true;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmGrupos.edalu1keypres(Sender: TObject; var Key: char);
|
|
begin
|
|
if key=',' then key:=#0;
|
|
end;
|
|
|
|
procedure TfrmGrupos.FormCreate(Sender: TObject);
|
|
begin
|
|
top:=13;
|
|
left:=(screen.Width-width) div 2;
|
|
CargarOrdenatas();
|
|
end;
|
|
|
|
procedure TfrmGrupos.FormShow(Sender: TObject);
|
|
begin
|
|
CargarListaCursos();
|
|
end;
|
|
|
|
procedure TfrmGrupos.FormActivate(Sender: TObject);
|
|
begin
|
|
if frmMain.Visible then frmMain.Hide;
|
|
end;
|
|
|
|
procedure TfrmGrupos.btnVolverClick(Sender: TObject);
|
|
begin
|
|
close;
|
|
end;
|
|
|
|
procedure TfrmGrupos.btnAnadirCursoClick(Sender: TObject);
|
|
var
|
|
grupoexiste:boolean;
|
|
i:integer;
|
|
begin
|
|
grupoexiste:=false;
|
|
if ValidarDatosCurso then
|
|
begin
|
|
for i:=0 to High(g_Cursos) do
|
|
if edCurso.text = g_Cursos[i].nombre then
|
|
grupoexiste:=true;
|
|
if grupoexiste then
|
|
mensaje('El curso ' + edCurso.text + ' ya existe. Haz clic en modificar si deseas realizar algún cambio',aceptar)
|
|
else
|
|
AnadirCurso;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmGrupos.btnAnadirGrupoClick(Sender: TObject);
|
|
begin
|
|
if ValidarDatosGrupo(fcurso) then
|
|
AnadirGrupo(fcurso);
|
|
end;
|
|
|
|
procedure TfrmGrupos.btnEliminarCursoClick(Sender: TObject);
|
|
begin
|
|
EliminarCurso(fcurso)
|
|
end;
|
|
|
|
procedure TfrmGrupos.btnEliminarGrupoClick(Sender: TObject);
|
|
begin
|
|
EliminarGrupo
|
|
end;
|
|
|
|
procedure TfrmGrupos.btnLimpiarCursoClick(Sender: TObject);
|
|
begin
|
|
LimpiarCamposAlumnos;
|
|
end;
|
|
|
|
procedure TfrmGrupos.btnLimpiarGrupoClick(Sender: TObject);
|
|
var
|
|
i:integer;
|
|
begin
|
|
lstgrupos.ItemIndex:=-1;
|
|
edgrupo.Text:='';
|
|
for i:=0 to g_num_ord_aula-1 do
|
|
chkEquipoGrupo[i].Checked:=false;
|
|
end;
|
|
|
|
procedure TfrmGrupos.btnModificarCursoClick(Sender: TObject);
|
|
begin
|
|
if lstcursos.ItemIndex=-1 then
|
|
mensaje(MEN_SELECCIONE_CURSO,aceptar)
|
|
else
|
|
ModificarCurso
|
|
end;
|
|
|
|
procedure TfrmGrupos.btnModificarGrupoClick(Sender: TObject);
|
|
begin
|
|
ModificarGrupo;
|
|
end;
|
|
|
|
procedure TfrmGrupos.FormClose(Sender: TObject;
|
|
var CloseAction: TCloseAction);
|
|
begin
|
|
CloseAction:=cafree;
|
|
end;
|
|
|
|
procedure TfrmGrupos.FormCloseQuery(Sender: TObject;
|
|
var CanClose: boolean);
|
|
begin
|
|
if mensaje(MEN_SALIR_ZONA,sino)=2 then
|
|
canclose:=false
|
|
else
|
|
begin
|
|
EscribirficheroCursos;
|
|
application.ProcessMessages;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmGrupos.lstcursosClick(Sender: TObject);
|
|
var
|
|
micurso:string;
|
|
i:integer;
|
|
begin
|
|
if lstcursos.itemindex=-1 then exit;
|
|
fcurso:=lstcursos.itemindex;
|
|
micurso:=lstcursos.Items[lstcursos.itemindex];
|
|
edCurso.text:=micurso;
|
|
lblcurso.caption:=micurso;
|
|
btnEliminarCurso.Enabled:=true;
|
|
if g_Cursos[fcurso].numeroalumnos <> g_num_ord_aula then
|
|
begin
|
|
Mensaje('El curso elegido no coincide con este aula, tiene distinto números de equipos. Selecciona otro o pulsa eliminar para borrarlo', Aceptar);
|
|
exit;
|
|
end;
|
|
|
|
for i:=0 to g_num_ord_aula-1 do
|
|
begin
|
|
chkEquipoGrupo[i].Checked:=false;
|
|
if i< g_Cursos[fcurso].numeroalumnos then
|
|
begin
|
|
//edAlu1[i].caption:= g_Cursos[fcurso].nombrealumnos[i];
|
|
Ordenata[i].SetBounds(g_Cursos[fcurso].posicionequipo[i].x,g_Cursos[fcurso].posicionequipo[i].y,Ordenata[i].Width,Ordenata[i].Height);
|
|
recolocaComponetesMovido(i);
|
|
end
|
|
end;
|
|
btnEliminarCurso.Enabled:=true;
|
|
btnModificarCurso.Enabled:=true;
|
|
CargarListaGrupos(fcurso);
|
|
end;
|
|
|
|
procedure TfrmGrupos.lstGruposClick(Sender: TObject);
|
|
var
|
|
migrupo:string;
|
|
i:integer;
|
|
begin
|
|
if lstgrupos.itemindex=-1 then exit;
|
|
migrupo:=lstgrupos.Items[lstgrupos.itemindex];
|
|
fgrupo:=lstgrupos.itemindex;
|
|
edgrupo.Text:=migrupo;
|
|
for i:=0 to g_num_ord_aula-1 do
|
|
begin
|
|
chkEquipoGrupo[i].Checked:=false;
|
|
if i< g_Cursos[fcurso].numeroalumnos then
|
|
if g_Cursos[fcurso].cgrupos[i]=fgrupo then
|
|
chkEquipoGrupo[i].Checked:=true;
|
|
end;
|
|
btnEliminarGrupo.Enabled:=true;
|
|
btnModificarGrupo.Enabled:=true;
|
|
end;
|
|
procedure TfrmGrupos.recolocaComponetesMovido(numOrd:integer);
|
|
begin
|
|
edalu1[numOrd].SetBounds(Ordenata[numOrd].Left, (Ordenata[numOrd].top+Ordenata[numOrd].height),(Ordenata[numOrd].Width),edalu1[numOrd].height);
|
|
chkEquipoGrupo[numOrd].SetBounds(Ordenata[numOrd].Left-4+Ordenata[numOrd].Width,Ordenata[numOrd].Top-5,10,10);
|
|
end;
|
|
procedure TfrmGrupos.restaurarAula();
|
|
var
|
|
i,lor,tor,wor,hor:integer;
|
|
begin
|
|
for i:=0 to g_num_ord_aula -1 do
|
|
begin
|
|
lor:=equipoAlumno[i].L;
|
|
tor:=equipoAlumno[i].T;
|
|
wor:=Ordenata[i].Width;
|
|
hor:=Ordenata[i].height;
|
|
Ordenata[i].SetBounds(lor,tor,wor,hor);
|
|
edalu1[i].SetBounds(lor,tor+hor,wor,edalu1[i].height);
|
|
chkEquipoGrupo[i].SetBounds(lor+wor-4,tor-5,12,12);
|
|
end;
|
|
end;
|
|
procedure TfrmGrupos.OrdenataDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
begin
|
|
numOrdD:=Timage(sender).Tag;
|
|
(source as Timage).SetBounds((sender as Timage).left, (sender as Timage).top, (sender as Timage).width,(sender as Timage).height);
|
|
(Sender as Timage).SetBounds(PuntoO.x, PuntoO.y, (source as Timage).width,(source as Timage).height);
|
|
recolocaComponetesMovido(numOrdO);
|
|
recolocaComponetesMovido(numOrdD);
|
|
end;
|
|
|
|
procedure TfrmGrupos.OrdenataDragOver(Sender, Source: TObject; X,
|
|
Y: Integer; State: TDragState; var Accept: Boolean);
|
|
begin
|
|
Accept:= (Source is TImage);
|
|
end;
|
|
|
|
procedure TfrmGrupos.OrdenataMouseDown(Sender: TObject;
|
|
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
if button = mbLeft then
|
|
begin
|
|
numOrdO:= TImage(sender).tag;
|
|
PuntoO:=Point(TImage(Sender).Left,TImage(Sender).top);
|
|
TImage(Sender).BeginDrag(false,5)
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmGrupos.CargarListaGrupos(aul:integer);
|
|
var
|
|
i:integer;
|
|
begin
|
|
lstgrupos.Clear;
|
|
if g_Cursos[aul].numerogrupos = 0 then exit;
|
|
for i:=0 to g_Cursos[fcurso].numerogrupos -1 do
|
|
lstgrupos.Items.Add(g_Cursos[aul].nombregrupos[i]);
|
|
end;
|
|
|
|
initialization
|
|
{$I grupos.lrs}
|
|
|
|
end.
|
|
|