Presentación 11 - Escuela Politécnica Nacional

Anuncio
Programación con Herramientas Visuales
Clase 11: Ventanas de Diálogo
Viernes, 24 de Enero de 2003
Iván Bernal, Ph.D.
imbernal@mailfie.epn.edu.ec
http://
http
://wwwfie.epn.edu.ec
wwwfie.epn.edu.ec//ibernal
Escuela Politécnica Nacional
Quito – Ecuador
Copyright @2003, I. Bernal
Agenda
• Ventanas de Diálogo Modales.
Dic. 02 – Abril 03
PHV
Iván Bernal, Ph.D
Ph.D..
http://
http
://wwwfie.epn.edu.ec
wwwfie.epn.edu.ec//ibernal
Escuela Politécnica Nacional
Quito - Ecuador
2
Ventanas de Diálogo Modales(1)
• Interacción con el usuario.
– Puede ser una simple o compleja “forma”, para conseguir
información del usuario.
– Es una ventana que recibe mensajes y que puede moverse
y cerrarse y en la que puede dibujarse.
• Tipos:
– Modal (modal).
• El usuario no puede trabajar en otro lugar en la misma
aplicación hasta que se cierre la ventana de diálogo.
• Más fáciles de programar.
– No Modal (modeless).
• El usuario puede trabajar en otra ventana así la
ventana de diálogo permanece en pantalla.
– Ambos tipos se derivan de CDialog.
Dic. 02 – Abril 03
PHV
Iván Bernal, Ph.D
Ph.D..
http://
http
://wwwfie.epn.edu.ec
wwwfie.epn.edu.ec//ibernal
Escuela Politécnica Nacional
Quito - Ecuador
3
Ventanas de Diálogo Modales(2)
• La mayoría de veces, una ventana de diálogo
está asociada a un recurso que identifica sus
elementos y su distribución geométrica dentro de
la ventana.
• Un ventana de diálogo contiene controles.
– “Edit”: cajas de texto.
– Botones.
– Listas.
–
–
–
–
Combos (Caja de texto mas una lista).
Cajas de texto estático: etiquetas.
Vista en forma de árbol (tree view).
Indicadores de progreso.
Dic. 02 – Abril 03
PHV
Iván Bernal, Ph.D
Ph.D..
http://
http
://wwwfie.epn.edu.ec
wwwfie.epn.edu.ec//ibernal
Escuela Politécnica Nacional
Quito - Ecuador
4
Ventanas de Diálogo Modales(3)
• Windows administra los controles agrupándolos y
definiendo una lógica de tabulación (Tab).
• Se puede acceder a los controles del diálogo mediante
punteros a objetos CWnd, o usando un índice ó ID.
• Un control envía mensajes a su ventana padre (diálogo)
en respuesta a una acción del usuario sobre el control.
• MFC y ClassWizard mejoran la lógica de Windows:
– Generación de una clase derivada de CDialog y adición de
variables en esta clase derivada para los controles utilizados.
– Generación de código para el intercambio de datos (bidireccional) entre los controles y las variables miembro, así
como validación de los datos.
Dic. 02 – Abril 03
PHV
Iván Bernal, Ph.D
Ph.D..
http://
http
://wwwfie.epn.edu.ec
wwwfie.epn.edu.ec//ibernal
Escuela Politécnica Nacional
Quito - Ecuador
5
Ventanas de Diálogo Modales(4)
• Pasos para añadir una ventana de diálogo:
– Crear la ventana de diálogo con el editor de recursos y agregar
controles.
– Crear una clase asociada derivada de CDialog.
– Añadir miembros dato, funciones de intercambio y validación
con ClassWizard.
– Agregar con ClassWizard manipuladores de mensajes para
eventos asociados a ciertos controles.
– Agregar el código de inicialización en la función OnInitDialog y
el necesario en los manipuladores.
• La función virtual OnOK se llama de forma automática, a
menos que el usuario cancele la operación.
– Escribir el código necesario para activar la ventan de diálogo.
• Podría ser en la vista.
Dic. 02 – Abril 03
PHV
Iván Bernal, Ph.D
Ph.D..
http://
http
://wwwfie.epn.edu.ec
wwwfie.epn.edu.ec//ibernal
Escuela Politécnica Nacional
Quito - Ecuador
6
Tabulación (1)
Orden de Tabulación (Tecla Tab)
Dic. 02 – Abril 03
PHV
Iván Bernal, Ph.D
Ph.D..
http://
http
://wwwfie.epn.edu.ec
wwwfie.epn.edu.ec//ibernal
Escuela Politécnica Nacional
Quito - Ecuador
7
Tabulación (2)
Dic. 02 – Abril 03
PHV
Iván Bernal, Ph.D
Ph.D..
http://
http
://wwwfie.epn.edu.ec
wwwfie.epn.edu.ec//ibernal
Escuela Politécnica Nacional
Quito - Ecuador
8
Agrupamiento (1)
• La selección de “Group”, marca el inicio de
un grupo de controles, en el cual el usuario
puede moverse de un control a otro con las
teclas de las “flechas”.
– Todos los controles en el orden de tabulación luego
del primer control con la propiedad de “Group”
seleccionada a “False” pertenece al mismo grupo.
– El siguiente control in el orden de tabulación con la
propiedad de “Group” seleccionada a “True” finaliza el
primer grupo y empieza el siguiente grupo.
Dic. 02 – Abril 03
PHV
Iván Bernal, Ph.D
Ph.D..
http://
http
://wwwfie.epn.edu.ec
wwwfie.epn.edu.ec//ibernal
Escuela Politécnica Nacional
Quito - Ecuador
9
Flujo de datos (1)
•
•
El valor de las variables miembro son
actualizadas solamente después que la
ventana de diálogo se cierra.
Se desea que al presionar el botón de
copiar, lo que el usuario ingrese en la
ventana de edición superior se copia a la
segunda ventana.
– La primera versión de código no
funciona.
– El valor de la variable m_strOriginal,
tipo CString, no está actualizada.
– La segunda versión actualiza las
variables con UpdateData(TRUE ) y
luego se usa m_strOriginal para
asignar a m_strReceptor. Debo
actualizar ahora el valor del control
asociado a m_strReceptor con
UpdateData(FALSE) .
Dic. 02 – Abril 03
PHV
Iván Bernal, Ph.D
Ph.D..
http://
http
://wwwfie.epn.edu.ec
wwwfie.epn.edu.ec//ibernal
Escuela Politécnica Nacional
Quito - Ecuador
10
Flujo de datos (1)
• Otra opción:
– Definir variables basadas en controles directamente.
Dic. 02 – Abril 03
PHV
Iván Bernal, Ph.D
Ph.D..
http://
http
://wwwfie.epn.edu.ec
wwwfie.epn.edu.ec//ibernal
Escuela Politécnica Nacional
Quito - Ecuador
11
Descargar