Beruflich Dokumente
Kultur Dokumente
En esta seccin, se darn a conocer algunos los mecanismos bsicos para interactuar con un sistema.
Como ejemplo de una aplicacin visual, los procesadores de texto presentan al usuario una hoja en
blanco, los sistemas de hojas de clculo interactan mediante libros, hojas y celdas. As mismo dichas
aplicaciones cuentan con formas para que el usuario modifique tipos de fuente, cambie configuraciones,
guarde, asigne nombres a archivos, etc. Toda la informacin que el usuario necesite ingresar al sistema,
lo har a travs de botones, cajas donde ingresar texto, cuadros combinados para seleccionar opciones,
botones radio o cajas de seleccin. A su vez, el sistema proporciona mensajes y emite resultados ya sea
en ventanas de mensajes hechas ex profeso, en etiquetas, en cuadros de impresin, en las etiquetas de
los botones, etc. Las posibilidades de ingreso y emisin de resultados son variadas.
El problema bsicamente se puede resumir de manera simplista en hacer que la aplicacin tome
informacin del usuario, haga un procesamiento de la misma e imprima de manera visible algn
resultado. A los datos que el usuario proporcione, se le llamarn datos de entrada y a la accin que el
programa ejecute para mostrar sus resultados se le dar el nombre de datos de salida. Tradicionalmente
a esto en computacin se le conoce como proceso de entrada/salida (I/O, input/output). El siguiente
diagrama de flujo muestra de manera esquemtica cmo se representan diferentes tcnicas de entrada y
salida:
INICIO
Tarjeta
I/O Genrico
Teclado
Archivo de
datos
Proceso
Impresora
Archivo de
Pantalla
FIN
1)
2)
3)
4)
5)
6)
(b)
Tarjeta
I/O Genrico
Fig. 2.- Entrada de informacin
El uso de uno u otro smbolo depende de las preferencias de los autores de los textos y del nivel
tecnolgico que se maneje en las obras. Sin embargo, en este trabajo se utilizara la figura 2(a) como la
bsica para representar entrada manual del usuario. Cuando la entrada de informacin sea de alguna
manera diferente, se representar de manera acorde. As mismo, se dejar a criterio del programador
especificar de qu objeto se tomar la informacin respectiva.
De manera similar, para la salida de informacin se utilizan generalmente alguna de las siguientes
representaciones:
(a)
Impresora
(b)
I/O Genrico
Fig. 3.- Salida de informacin
La figura 3(a) se ha tomado en muchos libros de texto como la bsica para representar salida de
informacin. As mismo, esta convencin est sujeta a las preferencias del programador o a las
necesidades de la aplicacin a desarrollar.
Tanto para entrada y salida, la implementacin de la entrada/salida se tiene que especificar cuando se
disea el formulario. Finalmente se tiene que recordar que no todas las aplicaciones necesitan de emitir o
leer informacin del usuario. Existirn aplicaciones que no impriman informacin de resultados. As
mismo existirn aplicaciones que no requieran de leer datos del usuario.
Objetos y Entrada/Salida
La interaccin entre el usuario y el sistema se hace a travs del formulario. Sobre este se colocan
diversos objetos que sirven para capturar datos del usuario, imprimir resultados, servir de componentes
explicativos o ejecutar una accin. Existen una gran variedad de componentes en cualquier sistema de
desarrollo. Aunque cualquiera de esos objetos puede servir de elementos tanto de entrada como de
salida, se este trabajo se revisarn los siguientes:
Caja de edicin (Edit). Son elementos en los que el usuario ingresa texto de
manera directa. El valor que se ingrese se guarda en la propiedad Text del
objeto. El tipo del contenido es siempre una cadena de caracteres o texto. Si se
desea que el texto sea interpretado como nmero, se tiene que ejecutar una
rutina de conversin acorde a lo que se necesite.
Cuadro combinado (ComboBox). Este control consta de una caja de edicin, con
una lista de opciones aadidas. Se deja al programador la elaboracin de dicha
lista de opciones. Estas opciones se programan en la propiedad tems del
control. El valor que se ingrese se guarda en la propiedad Text del objeto.
Cuando el usuario selecciona uno de los elementos a elegir, dicho texto se
despliega en el contenido de la caja y se guarda en la propiedad Text. Aunque
se pueden seleccionar algn elemento de la lista, el usuario tiene la posibilidad
de ingresar texto de manera directa. Si se desea que el texto sea interpretado
como nmero, se tiene que ejecutar una rutina de conversin acorde a lo que se
necesite.
Cuadro de lista (ListBox). Un cuadro de lista presenta una lista de posibilidades a
elegir al usuario. Se deja al programador la elaboracin de dicha lista de
opciones. Estas opciones se programan en la propiedad tems del control. Una
vez seleccionado, el control guarda el ndice de la seleccin, comenzando desde
cero, para la primera posibilidad, hasta la n-sima posibilidad que el programador
halla elaborado en dicho control. El valor que se guarda en la propiedad
ItemIndex del objeto y es de tipo entero.
Cuadro de Seleccin (CheckBox) y Botn de Radio (RadioButton). Son aquellos
objetos que el usuario puede seleccionar. Estos objetos pueden estar en uno de
los siguientes estados, mas no en ambos: Seleccionado (verdadero) o no
seleccionado (falso). El estado de dichos objetos se encuentra guardado en la
propiedad Checked.
Grupo de Botones de Radio (RadioGroup). Presenta al usuario la posibilidad de
seleccionar una de entre una lista de varias posibilidades, utilizando botones de
radio. Se deja al programador la elaboracin de dicha lista de posibilidades.
Dicha lista se encuentra guardada en la propiedad Items de este objeto. Una
vez seleccionado, el control guarda el ndice de la seleccin, comenzando desde
cero, para la primera posibilidad, hasta la n-sima posibilidad que el
programador halla elaborado en dicho control. El valor que se guarda en la
propiedad ItemIndex del objeto y es de tipo entero. La propiedad ms
importante de este control es que la seleccin de una opcin es mutuamente
excluyente. En otras palabras, si se selecciona alguna opcin, las dems se
deseleccionan.
Cuadro de Etiqueta (Label). Estrictamente hablando, no es un objeto que el
usuario utilice como entrada, ya que este no puede modificar el contenido de
una etiqueta en un formulario. Sin embargo, se puede utilizar para que el
sistema imprima un mensaje en el formulario. El texto de una etiqueta se
encuentra guardado en la propiedad Caption de la misma. Si se requiere que
se muestre o se lea informacin numrica, dicha informacin tiene que ser
convertida de manera acorde al tipo que se maneje.
EJEMPLO
Tmese por ejemplo la siguiente aplicacin:
Se pretende crear una aplicacin que lea dos nmeros que el usuario ingresar en sendas cajas de
edicin, sume sus valores y que dicho valor se enve a una etiqueta. Prtase del formulario siguiente:
INICIO
A,B
C= A + B
FIN
En el caso del error 1, la lnea 39 de la unidad Unit1 (la que est asociada con el formulario de trabajo)
maneja tipos incompatibles Real y Caja de Edicin (TEdit). Lo mismo se puede decir con el error 2 en la
lnea 40. El error 3 establece que la lnea 42 de la misma unidad tiene un error de tipos incompatibles al
asignar un valor real a una variable de tipo Etiqueta (TLabel). El error 4 presenta un mensaje diciendo
que la aplicacin no puede seguir compilndose debido a errores en el cdigo.
En el caso de los errores 1 y 2, lo que sucede es que en realidad se est asignando un objeto Caja de
Edicin (Edit1, Edit2) a una variable real. En esencia si se quiere asignar una caja de edicin como valor
para una variable, la variable tendra que ser del mismo tipo, o sea caja de edicin. Sin embargo el valor
que se quiere utilizar para la variable real no est en TODO el objeto caja de edicin, sino en una de sus
propiedades. Cuando se mencion con anterioridad a algunos de los objetos que se pueden utilizar en un
formulario, se estableci que la propiedad que el usuario tiene acceso, para el caso de este objeto de
caja de edicin es la propiedad Text. Para el caso de este ejemplo, se podra suponer que si se substituye
la llamada apropiada a la propiedad Text de una caja de edicin, se podra eliminar este error. En este
caso el cdigo de las lneas con los errores 1 y 2 podra ser de la siguiente manera:
A:= Edit1.Text;
B:= Edit2.Text;
Para el caso del error 3 el problema que el compilador detect fue que no es posible asignarle un valor
real a la variable etiqueta, la cual es de tipo TLabel. Para este caso, si se pretende enviar dicho valor a
la etiqueta 4 (Label4), se tendr que enviar a la propiedad correspondiente. Para ello, el referido valor se
tendr que enviar a la propiedad Caption de la etiqueta. El cdigo correspondiente para resolver el error
3 podra ser el siguiente:
Label4.Text := C;
Una vez hechos estos cambios y cuando se piensa que ya se han resueltos todos los errores, si se
manda a compilar a la aplicacin, se produce los siguientes mensajes de error:
5.
6.
7.
8.
Aunque se han llamado a las propiedades que corresponden a cada objeto, ahora el problema es mas
bien de conversin de tipos entre las propiedades y las variables que recibirn los valores. Antes se
estableci que las propiedades Text y Caption de los objetos que se colocan en un formulario son de tipo
texto, o cadena de caracteres. Si se requiere leer o enviar informacin numrica a estas propiedades, se
tendran que hacer las conversiones correspondientes.
Para el caso de los errores 5 y 6 el cdigo que soluciona de manera definitiva tanto el problema de la
lectura de la propiedad correspondiente de la caja de edicin, como la conversin de tipo de texto a real,
ser el siguiente:
A:= strtofloat(Edit1.Text);
B:= strtofloat(Edit2.Text);
Para el caso del error 7, el envo del valor a la propiedad correspondiente, junto con la conversin
adecuada ser el siguiente:
Label4.Text := floattostr(C);
Al mandar a compilacin el programa, ya no se emiten mensajes de error. Ms lo anterior no significa que
no se produzcan errores en otras partes del funcionamiento de la aplicacin.
FUNCIONES DE CONVERSIN
Se ha mencionado que algunos de los controles que se han visto hasta ahora manejan informacin de
tipo texto. Por ejemplo, si un usuario ingresa un texto dentro de una caja de edicin, el texto sigue siendo
texto. Si el usuario ingresa un nmero, el nmero se considerar como texto. Si se requiere que una
variable de la aplicacin, declarada como de alguno de los tipos numricos disponibles, lea su valor de
una caja de texto, esto producir un error. Esto es extensivo para el caso que se quiera enviar
informacin a un control. Si se enva un valor numrico a un control de etiqueta sin antes haberlo
transformado, se producir un error de conversin de tipos.
En el ejemplo anterior, las funciones de conversin strtofloat y floattostr tienen como objetivo el
convertir un valor de texto a real de punto flotante y viceversa. Existen diversas funciones de conversin
para cada tipo de datos posibles. De entre estas funciones de conversin se pueden mencionar las
siguientes:
Existen muchas otras funciones de conversin adems de las ya mencionadas. Entre ellas se encuentran
por ejemplo HexToBin, TryStrToBool, CompToDouble, etc., cuyo fin son de convertir un valor de un tipo a
otro. En algunos casos se deber utilizar un proceso conocido como Type Casting en la literatura. Esto
no debe de abrumar al lector, puesto que dependiendo de las necesidades de una aplicacin, se debern
consultar con el sistema de ayuda para mayor informacin acerca de estas funciones. Sin embargo, una
manera de recordar cmo es una funcin de conversin de tipos es la siguiente:
TipoOriginalToTipoDestino()
Como una regla genrica, si se pretende leer informacin numrica de una propiedad dada de un objeto,
en el que el usuario ingresa informacin en un formulario, la funcin de conversin correspondiente debe
de comenzar con StrTo". En contrapartida, si se quiere mandar el valor de una variable de algn tipo
numrico a la propiedad de tipo texto de algn objeto, la funcin de conversin deber finalizar con
ToStr.
ASPECTOS SOBRE LA INTERACCIN CON EL USUARIO DE UNA APLICACIN
Haciendo referencia a la figura 4, se mencion que se haban agregado ms de una etiqueta de las que
necesita el algoritmo, solo con el fin de mantener entendible lo que se solicitaba del usuario. Sin
embargo, se dejaron abierta la posibilidad de mostrar de manera ms explcita al usuario qu posibles
valores se pueden ingresar en las cajas de edicin. Tmese el siguiente formulario como ejemplo:
('texto',
tipo de cuadro,
botones,
ndice de ayuda);
MessageDlgPos
('texto',
tipo de cuadro,
botones,
ndice de ayuda,
coordenada X,
coordenada Y);
Los tipos de cuadro que existen estn indicados en la lista que a continuacin se muestra. Tngase en
cuenta que segn el tipo de cuadro Windows pinta un icono en el cuadro de mensaje, por ejemplo un
cuadro de informacin mostrar un icono de exclamacin.
mtInformation
mtWarning
mtError
mtConfirmation
mtCustom
Los tipos de botones que se pueden poner son los siguientes:
mbYes
mbNo
mbOk
mbCancel
mbAbort
mbRetry
mbIgnore
mbAll
mbHelp
Cuando se ponen los tipos de botones que se desean, se deben poner entre corchetes ([ ]), y seguidos
de una coma. Otra opcin es poner un serie de botones predefinidos, pero si se hace de esta manera, no
se deben poner los corchetes. Los tipos de botones predefinidos son:
mbYesNoCancel
mbAbortRetryIgnore
mbOkCancel
Es la funcin de mensaje ms compleja para interaccin con el usuario que una aplicacin puede ofrecer,
puesto que puede proporcionar un ttulo que el programador introduce, as como establecer estilos para
la ventana, establecer un botn por defecto y un mtodo de escape, manejadores del sistema operativo,
etc. Delphi ofrece diversas opciones de sintaxis de la misma con el fin de facilitar la programacin de esta
instruccin en particular. Pero para lograr lo anterior, se deber incluir la librera QDialogs en la seccin
uses de la unidad. Una de las sintaxis que se pueden usar para esta funcin es como sigue:
MessageBox(
Ttulo,
Texto,
Estilo,
Botones,
Contexto,
X,
Y,
Defecto
Bitmap
//
//
//
//
//
//
//
//
//
);
Ttulo de la ventana
Texto del mensaje
Si se requiere desplegar un ttulo, utilcese mtCustom
Botones
Contexto de Ayuda
Posicin horizontal de la ventana en la pantalla
Posicin vertical de la ventana en la pantalla
Botn seleccionado por defecto
Imagen bmp a mandar junto con el mensaje
EJEMPLO
Se tiene el ejemplo anterior, pero ahora se han aadido mensajes del sistema de la siguiente manera:
procedure TForm1.Button1Click(Sender: TObject);
var
A, B, C: real;
begin
A:= strtofloat(Edit1.text);
ShowMessage('Variable A ingres con xito');
B:= strtofloat(Edit2.text);
ShowMessagePos('Variable B ingres con xito',100,100);
C:= A + B;
MessageDlg('C = A +B , Calculado', mtInformation, [mbOK], 0);
Label4.Caption := floattostr(C);
MessageDlg(
'Mensaje del sistema', 'Listo!!', mtCustom,
[mbOk], 0, mbOk, nil);
end;
En este caso se puede observar cmo se comportan las diferentes cajas de mensajes. Cabe recalcar que
para el caso de la instruccin:
MessageDlg(
interactiva. Para ello, Delphi provee la funcin InputBox, la cual se refieren a la manipulacin de
ventanas en las que el usuario ingresa informacin para ser usada en la aplicacin. La sintaxis ms
sencilla de la funcin anterior es:
InputBox
(TtuloDeLaVentana,
Pregunta,
ValorPorDefecto);
A diferencia de los mensajes, las cajas de ingreso necesariamente tienen que asignar el valor que el
usuario ingrese, a una variable. En el caso de la funcin anterior, el valor que el usuario proporciona se
considera de tipo texto (ya sea texto, nmero, valor de verdad, etc.). Tmese como ejemplo la siguiente
aplicacin: Supngase que se desea crear una aplicacin que le pida al usuario un dato y que imprima el
valor de este dato en una caja de mensaje. Sin poner mucha atencin en el formulario de trabajo, el botn
de ejecucin correspondiente contendr el siguiente cdigo fuente:
procedure TForm1.Button1Click(Sender: TObject);
var
entrada: string;
begin
entrada:= InputBox('Sistema...','Ingrese el valor', '');
Showmessage(entrada);
end;
Al ejecutar el cdigo anterior, se producen los siguientes mensajes:
Caja de ingreso:
Mensaje:
Tanto los objetos como las cajas de mensajes y las cajas de ingreso son algunas de la posibilidades que
se tienen a la mano para crear aplicaciones que interacten con el usuario. Sin embargo, no son las
nicas. Queda a juicio del lector el explorar diferentes maneras de crear aplicaciones utilizando los
conceptos aqu expuestos.