Vous êtes sur la page 1sur 7

I.S.T. “F.P.G.V.


Computación e Informática Programación Distribuida y Concurrente

GUÍA DE LABORATORIO N° 04

OBJETIVOS:
 Creación y uso de Array Bidimensionales.
 Creación y uso de procedimientos con parámetros.
 Uso de variables de memoria con diferentes alcances.
 Creación de un Formulario de Inicio de Sesión.

1.1 CONSIDERACIONES INICIALES

Debe abrir su proyecto anterior y deberá agregar los formularios para las aplicaciones siguientes:

1.2 CREACIÓN DE LA UNIDAD DE CÓDIGO DELPHI “MÓDULO” FORMULARIO (ArrayRegistro.pas)

a) En el formulario inserte los controles necesarios y establezca las propiedades necesarias para obtener la
siguiente apariencia:

b) Ahora procedemos a establecer la Propiedades a los objetos según la gráfica anterior, para luego establecer
propiedad (NAME) tal como se indica a continuación:

 Para el formulario deberá establecer como NAME: frmArrayRegistro


 Para los TextBox y ComboBox establecer el NAME según se observa en la figura.
 Para los RadioButton establesca los nombres rbtMasculino y rbtFemenino respectivamente.
 Para los botones de Desplazamiento su NAME será: BtnPrimero, BtnAnterior, BtnSiguiente,
BtnUltimo.
 Para los botones de Operaciones su NAME será: BtnNuevo, BtnGuardar, BtnEditar,
BtnCancelar, BtnBuscar, BtnEliminar, BtnListar y BtnSalir.

Docente: Lic. José Luis Ponce Segura www.vigilvirtual.com Prac04 (1 de 7)


I.S.T. “F.P.G.V.”
Computación e Informática Programación Distribuida y Concurrente

c) Ahora proceda a escribir el código correspondiente a los objetos necesarios:

Declare las variables y/o procedimientos en la sección PRIVATE tal como se observa a continuación:
{ Private declarations }
listar:boolean;
alumnos:Array[1..10,1..9] of string;
i, t, pos:Byte;
sexo:String;
procedure mostrardatos;
procedure limpiar;
procedure HabilitaBotones(sw:Boolean);
procedure habilitacontroles(estado:Boolean);
Objeto: TfrmArrayRegistro Evento: OnCreate
procedure TfrmArrayRegistro.FormCreate(Sender: TObject);
begin
// Agregando items al combobox cboEspecialidad
cboEspecialidad.Items.Add('Computación e Informática');
cboEspecialidad.Items.Add('Secretariado Ejecutivo');
cboEspecialidad.Items.Add('Contabilidad');
cboEspecialidad.Items.Add('Electricidad');
cboEspecialidad.Items.Add('Electrónica');
cboEspecialidad.Items.Add('Construcción Civil');
updown1.min := 1;
updown1.max := 6;
edciclo.ReadOnly := True;
HabilitaControles(False);
HabilitaBotones(True);
// Estableciendo el nro. de columnas y filas de la grilla
stringgrid1.ColCount:=9;
stringgrid1.RowCount:=10;
// Fijando la primera columna y fila para uso de encabezados
stringgrid1.FixedCols:=1;
stringgrid1.FixedRows:=1;
//Encabezados para las columnas
//grilla.Celda[Columna,fila]:=ValorTipoCadena
//Nótese que la Col y Fil empiezan desde cero
stringgrid1.cells[1,0]:='Codigo';
stringgrid1.cells[2,0]:='Apellidos';
stringgrid1.cells[3,0]:='Nombres';
stringgrid1.cells[4,0]:='Dirección';
stringgrid1.cells[5,0]:='Sexo';
stringgrid1.cells[6,0]:='Teléfono';
stringgrid1.cells[7,0]:='Especialidad';
stringgrid1.cells[8,0]:='Ciclo';
stringgrid1.cells[9,0]:='e-mail';
i:=1;
listar:=false;
end;
Objeto: edApellidos Evento: onKeyPress
procedure TfrmArrayRegistro.edApellidosKeyPress(Sender: TObject; var Key: Char);
begin
If key=#13 Then
begin
edNombres.setfocus;
end;
end;
Objeto: edApellidos Evento: onExit
procedure TfrmArrayRegistro.edApellidosExit(Sender: TObject);
begin
edApellidos.Text :=uppercase(edApellidos.Text);
end;

Docente: Lic. José Luis Ponce Segura www.vigilvirtual.com Prac04 (2 de 7)


I.S.T. “F.P.G.V.”
Computación e Informática Programación Distribuida y Concurrente

Objeto: rbtMasculino Evento: Onclick


procedure TfrmArrayRegistro.rbtMasculinoClick(Sender: TObject);
begin
if TRadioButton(sender).name='rbtMasculino' then
begin
sexo:='masculino';
end;
if TRadioButton(sender).name='rbtFemenino' then
begin
sexo:='femenino';
end;
end;
Procedimiento creado por el Usuario: Limpiar
procedure TfrmArrayRegistro.limpiar;
var nro:byte;
begin
for nro:=0 to frmArrayRegistro.ControlCount-1 do
begin
// Para limpiar las Cajas
if (frmArrayRegistro.controls[nro] is TEdit) then
begin
TEdit(frmArrayRegistro.controls[nro]).clear;
end;
// Para limpiar los radiobutton
if (frmArrayRegistro.controls[nro] is TRadioButton) then
begin
TRadioButton(frmArrayRegistro.controls[nro]).checked:=false;
end;
// Para limpiar el comobobox
if (frmArrayRegistro.controls[nro] is TComboBox) then
begin
TComboBox(frmArrayRegistro.controls[nro]).itemindex:=-1;
end;
end; // fin del for
end;
Procedimiento creado por el Usuario: Habilitacontroles
procedure TfrmArrayRegistro.Habilitacontroles(estado:Boolean);
var nro:byte;
begin
for nro:=0 to frmArrayRegistro.ControlCount-1 do
begin
if (frmArrayRegistro.controls[nro] is TEdit) or
(frmArrayRegistro.controls[nro] is TRadioButton) or
(frmArrayRegistro.controls[nro] is TComboBox)
then
begin
TEdit(frmArrayRegistro.controls[nro]).enabled:=estado;
end;
end;
end;
Procedimiento creado por el Usuario: HabilitaBotones
procedure TfrmArrayRegistro.HabilitaBotones(sw:Boolean);
begin
BtnNuevo.Enabled := sw;
BtnGuardar.Enabled := Not sw;
BtnEditar.Enabled := sw;
btnCancelar.Enabled := Not sw;
btnEliminar.Enabled := sw;
btnListar.Enabled:=sw;
btnBuscar.Enabled := sw;
BtnSalir.Enabled := sw;
end;

Docente: Lic. José Luis Ponce Segura www.vigilvirtual.com Prac04 (3 de 7)


I.S.T. “F.P.G.V.”
Computación e Informática Programación Distribuida y Concurrente

Procedimiento creado por el Usuario: mostrardatos


procedure TfrmArrayRegistro.mostrardatos;
begin
edCodigo.Text := alumnos[pos, 1];
edApellidos.Text := alumnos[pos, 2];
edNombres.Text := alumnos[pos, 3];
edDireccion.Text := alumnos[pos, 4];
If alumnos[pos, 5] = 'masculino' Then
begin
RbtMasculino.Checked := True;
end
else
begin
RbtFemenino.Checked := True;
end;
edTelefono.Text := alumnos[pos, 6];
cboespecialidad.itemindex:= strtoint(alumnos[pos, 7]);
edciclo.text:= alumnos[pos, 8];
edEmail.Text := alumnos[pos, 9];
end;
Objeto: btnNuevo Evento: OnClick
procedure TfrmArrayRegistro.btnNuevoClick(Sender: TObject);
begin
If i = 10 Then
begin
showmessage('ya no se puede agregar mas alumnos...');
btnPrimeroClick(sender);
end
else
begin
limpiar;
edCodigo.Text :=Formatcurr('00000',i); // dar formato
HabilitaControles(True);
HabilitaBotones(False);
end;
end;
Objeto: btnGuardar Evento: OnClick
procedure TfrmArrayRegistro.btnGuardarClick(Sender: TObject);
begin
If (edApellidos.Text ='') Or (edNombres.Text = '') Then
begin
showmessage('debe ingresar nombres y apellidos');
Exit;
end;
alumnos[i, 1] := edCodigo.Text;
alumnos[i, 2] := edApellidos.Text;
alumnos[i, 3] := edNombres.Text;
alumnos[i, 4] := edDireccion.Text;
alumnos[i, 5] := sexo;
alumnos[i, 6] := edTelefono.Text;
alumnos[i, 7] := inttostr(cboespecialidad.itemindex);
alumnos[i, 8] := edciclo.text;
alumnos[i, 9] := edEmail.Text;
t := i;
i:=i+ 1;
btnPrimeroClick(sender);
HabilitaControles(False);
HabilitaBotones(True);
end;

Docente: Lic. José Luis Ponce Segura www.vigilvirtual.com Prac04 (4 de 7)


I.S.T. “F.P.G.V.”
Computación e Informática Programación Distribuida y Concurrente

Objeto: btnCancelar Evento: Onclick


procedure TfrmArrayRegistro.btnCancelarClick(Sender: TObject);
begin
btnPrimeroClick(sender);
HabilitaControles(False);
HabilitaBotones(True);
btnPrimeroClick(sender);
end;
Objeto: btnBuscar Evento: OnClick
procedure TfrmArrayRegistro.btnBuscarClick(Sender: TObject);
var
codi:string;
x:integer;
begin
codi := InputBox('Ingrese código del alumno a buscar','Buscar','valor');
For x := 1 To i - 1 do
begin
If codi= alumnos[x, 1] Then
begin
pos := x;
mostrardatos;
exit;
end;
end;
ShowMessage('Código no existe');
end;
Objeto: btnListar Evento: Onclick
procedure TfrmArrayRegistro.btnListarClick(Sender: TObject);
begin
if listar=false then
begin
btnlistar.caption:='Ocultar';
frmArrayRegistro.Height:=frmArrayRegistro.Height+ stringgrid1.Height +10;
listar:=true;
end
else
begin
btnlistar.caption:='Listar';
frmArrayRegistro.Height:=frmArrayRegistro.Height- stringgrid1.Height -10;
listar:=false;
end;
end;
Objeto: btnPrimero Evento: OnClick
procedure TfrmArrayRegistro.btnPrimeroClick(Sender: TObject);
begin
pos := 1;
mostrardatos;
end;
Objeto: btnAnterior Evento: OnClick
procedure TfrmArrayRegistro.btnAnteriorClick(Sender: TObject);
begin
If pos > 1 Then
begin
pos := pos - 1;
mostrardatos;
end;
end;

Docente: Lic. José Luis Ponce Segura www.vigilvirtual.com Prac04 (5 de 7)


I.S.T. “F.P.G.V.”
Computación e Informática Programación Distribuida y Concurrente

Objeto: btnSiguiente Evento: OnClick


procedure TfrmArrayRegistro.btnSiguienteClick(Sender: TObject);
begin
If pos < t Then
begin
pos := pos + 1;
mostrardatos;
end;
end;
Objeto: btnUltimo Evento: OnClick
procedure TfrmArrayRegistro.btnUltimoClick(Sender: TObject);
begin
pos := t;
mostrardatos;
end;

1.3 CREACIÓN DE LA UNIDAD DE CÓDIGO DELPHI “MÓDULO” (InicioSesion.pas)

a) En el formulario inserte los controles necesarios y establezca las propiedades necesarias para obtener la
siguiente apariencia:

b) Ahora procedemos a establecer la Propiedad (Name) a los siguientes objetos:

Objeto Propiedad Valor Asignado


Form1 Name frmInicioSesion
Edit1 Name edUsuario
Edit2 Name edPassword
Button1 Name BtnAceptar
Button2 Name BtnCancelar
NOTA: establezca las demás propiedades que usted crea conveniente.

Docente: Lic. José Luis Ponce Segura www.vigilvirtual.com Prac04 (6 de 7)


I.S.T. “F.P.G.V.”
Computación e Informática Programación Distribuida y Concurrente

c) Ahora proceda a escribir el código correspondiente:

Declare la variable nveces en la sección PRIVATE


{ Private declarations }
nveces:Integer;
Ahora deberá hacer referencia al módulo “Unidad de Código” (NO formulario) que se mostrará , esto va
después de IMPLEMENTATION

// implementation

uses ArrayRegistro; // Sólo debe agregar ésta línea

// {$R *.dfm}
Objeto: btnAceptar Evento: OnClick
procedure TfrmInicioSesion.btnAceptarClick(Sender: TObject);
begin
// Nótese que la contraseña es JOSELO con mayúsculas
if upperCase(edpassword.text)='JOSELO' then
Begin
frmArrayregistro.show;
// Luego deberá mostrar el Form PrmPrincipal "Menú"
frmInicioSesion.hide;
end
else
Begin
ShowMessage('Intento Nro. ' + inttostr(nveces+1) + ', Acceso Denegado,
Usuario: ' + edUsuario.Text);
nveces:=nveces + 1;
If nveces >= 3 Then
Begin
ShowMessage('Lo siento, tuvo sus 3 oportunidades... para otra vez será');
Close;
end;
End;
end;

TAREA ENCARGADA: ….. / …../ ………..

 Implemente Usted los procedimientos para Editar, Eliminar, etc. del formulario FrmArrayRegistro.
 Implemente el ó los procedimientos para que se muestren los datos en la grilla “StringGrid” del Formulario
FrmArrayRegistro.
 Investigue acerca de cómo validar los datos de entrada para ser implementados en el formulario
FrmArrayRegistro:
 No debe permitir dejar vació ningún atributo del alumno antes de guardar.
 Sólo se deberá ingresar número o letras donde corresponda. Ejemplo: en Apellidos no debe permitir el
ingreso de números.
 Deberá hacer los cambios necesarios para que el Formulario de inicio de sesión valide usuario y password antes
de ingresar al sistema.
 Diseñe Usted un formulario de presentación para su Aplicación, éste deberá tener animación y/o algunos otros
cambios que usted considere convenientes, deberá guardarlo como: Presentacion.pas, éste deberá mostrarse
unos segundos después del Formulario FrmInicioSesion, para luego mostrar el Menú Principal.

Docente: Lic. José Luis Ponce Segura www.vigilvirtual.com Prac04 (7 de 7)