1. 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)
2. 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)
3. 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)
4. 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)
5. 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)
6. 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)
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)