Você está na página 1de 6

Delphi paso a paso (XII)

Delphi y Windows 95 (y III)


Por Vladimir Algara

En esta tercera y última parte voy a finalizar con los controles disponibles en Windows 95 y,
como ya se recordó en la entrega anterior, sólo están disponibles en las versiones de Delphi a
partir de la 2.0 en adelante.

Los distintos controles a abordar en esta entrega serán los que se ven a continuación.

Cabecera de control

Barra de estado

Spinner (UpDown)

HotKey (teclas activas)

Editor de texto enriquecido (RTF)

Todos ellos se encuentran en la paleta de herramientas (paleta de elementos); bajo la pestaña


que lleva por nombre Win95.

Cabeceras de control
Son identificadores que suelen encontrarse en la parte superior de la ventana (la alineación por
defecto, respecto de la ventana , es de AlTop) y que responden a la pulsación efectuada sobre
ellos. En realidad, yo las concibo como un invento cómodo de agrupar los PushButton y darles
un aspecto diferente al que estamos acostumbrados, pues se trata de controles que no llegan a
la organización que nos puede dar las estructuras en forma de lista, ni la funcionalidad de las
carpetas (pestañas).

En cualquier caso, se gestionan, como ya he dicho, con la misma lógica que los PushButton, de
ahí que no vaya a hacer mucho hincapié en su manipulación, limitándome a contar las
diferencias que existen entre uno y otro.

En la figura 1 se muestra el control comentado, que pertenece a la clase THeaderControl, y


más abajo se enumeran sus propiedades y sus eventos más resultones.

Figura 1: Ejemplo de Cabecera de Control

Para la definición de las distintas secciones se utiliza la ventana destinada a tal fin, y que se
puede ver en la figura 2.

1
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - © Grupo EIDOS
Figura 2: Definición de las secciones de un THeaderControl

Como se puede advertir se dispone de dos posibles operaciones, la de añadir nuevas


secciones (New) y la de eliminar alguna de las existentes (Delete). De acuerdo a aquella que se
tenga seleccionada, en la parte de la derecha de la ventana podremos modificar distintos
elementos (los cuales se corresponden con sendas propiedades de la clase THeaderControl), a
saber:

- Text Literal que aparecerá en la sección creada. Puede modificarse en tiempo de


ejecución.
- Width Anchura en píxels de la sección. Este ancho, si no se especifica explícitamente,
se puede cambiar en tiempo de ejecución, bien por acción del usuario, bien a
través de programación.
- MinWidth Valor mínimo que la columna puede alcanzar. Esto limita la decisión de usuario
de hacer tan pequeña como quiera la sección que se decida a redimensionar,
de ahí que el valor por defecto sea 0, lo cual permite reducir a la mínima
expresión el tamaño del rectángulo. Si no se quiere que el usuario sobrepase
unos límites mínimos será aquí donde indicar esta frontera.
- MaxWidth Valor máximo que la columna puede alcanzar. Si no se quiere que el usuario
sobrepase unos límites máximo será aquí donde indicar esta frontera.
- Alignment Tipo de alineación del texto en la celda, según los valores de la tabla 1.

Valor Descripción
taLeftJustify Alineación a la izquierda
taCenter centrado
taRightJustify Alineación a la derecha
Tabla 1: Tipo de justificaciones disponibles.

- Style Tipo de contenido que va a tener la cabecera de control. Puede ser un texto sin
más (entonces se fija el valor de Style a hsText, que es el valor por defecto), o
puede contener cabeceras de control anidadas (en cuyo caso habría que fijar el
valor a hsOwnerDraw).
- AllowClick Permite o no que las distintas secciones de la cabecera de control respondan, o
no, cuando se hace clic sobre ellas.

Como ocurriera con los PushButton, se puede especificar qué procedimiento invocar cuando se
produzca el evento OnClick. En el fuente 1 de más abajo se implementa una sencilla línea de
código cuyo único cometido es hacer aparecer una ventana informando del hecho de que una
de las secciones ha sido pulsada.

2
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - © Grupo EIDOS
// --- Fuente 1 ---------------------------------------------------------
procedure TDlgFiesta.HacerClicEnSeccion( HeaderControl: THeaderControl;
Section: THeaderSection );
begin
MessageDlg( 'Estoy aquí, en ' + Section.Text, mtConfirmation,
mbYesNoCancel , 0);
end;

Lo único a resaltar, por resaltar algo, es que se accede a la propiedad Text de la variable
Section, que es pasada automáticamente al procedimiento cuando se realiza un clic en alguna
de las secciones. Al ser Section una variable de la clase THeaderSection, podemos consultar o
modificar cualquiera de sus datos accesibles, y Text es el que interesa, para conocer el literal
sobre el cual se pinchó.

Barra de estado
Las habituales barras de control de Windows fueron sustituidas por las más completas de
Windows 95, en las que, además de disponer de un control más específico del
redimensionamiento de la ventana, lo cual es accesorio, se dispone de un lugar en el que poder
informar de la cuestión que se desee. La asociación de esta zona a la ventana hace que
cualquier suceso se pueda ver allí reflejado, independientemente del tipo de ventana que se
esté manipulando y sin necesidad de mostrar una ventana adicional.

En la figura 3 se ofrece un aspecto tan completo como poco estético de lo que se puede
mostrar en una barra de estado con formato Windows 95.

Figura 3: Tipos de Barras de estado

Si en las cabeceras de control el tipo de alineación por defecto era en la parte superior de la
ventana, en las barras de estado es en el lado opuesto, es decir, la variable encargada de la
alineación respecto a la ventana toma un valor de AlBottom.

3
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - © Grupo EIDOS
Tipo de barra sencilla
Son las más habituales, pues dan una información genérica no agrupable. Para especificarla
hay que jugar con dos datos: SimplePanel, que deberá tener un valor verdadero, y SimpleText,
donde se indicará el literal a mostrar (accesible, lógicamente, en tiempo de ejecución). Esto
hace que obtengamos la barra de estado de la figura 3 que lleva por leyenda "Texto sencillo".

Tipo de barra compuesta


Son menos habituales pero más completas y organizadas, pues dan información específica
que, además, podemos agrupar por el criterio que nos parezca más intuitivo. Para especificarla
hay que jugar con SimplePanel, que deberá tener un valor falso, y Panels, donde se indicarán
el/los distintos bloques de información (aparte de la información contenida en ellos).

En la figura 3 se distingue la existencia de tres secciones, cada una de ellas alineada respecto
al habitáculo que la contiene, con un tamaño predeterminado y mostrando un aspecto realzado,
hundido o plano según criterios seguidos en la fase de diseño. Este diseño se realiza en una
ventana casi idéntica a la que se ha mostrado en la figura 2, en la que el único elemento
novedoso sería es aspecto realzado, etc. al que hacía referencia. Este dato se encuentra
tipificado en la Variable Bevel, y los valores posibles se dan en la tabla 2.

Valor Descripción
pbNone Sin realzado, aspecto plano
pbLowered Hundido
pbRaised Realzado, sobresaliendo
Tabla 2: Tipo de realzados disponibles.

Otros datos de interés son las propiedades SizeGrip (para mostrar o no el triángulo de la
esquina inferior derecha donde se redimensiona la ventana) y Hints (para poner etiquetas
explicativas de lo que la barra de estado hace). Esta última propiedad ya había sido comentada
en entregas anteriores, y ya se explicó que siempre iba asociada a la propiedad ShowHints que
permite o no mostrar dichas etiquetas, pero aquí, como estamos tratando un control
íntimamente ligado a la ventana, la propiedad ShowHints que hay que manipular es la de la
ventana, no la del control (pues éste no la posee)

Spinner
Los spinner son contadores que, normalmente, van asociados a controles de edición de tipo
numérico, en los que al pinchar la flecha arriba el valor se incrementa, decrementándose al
pinchar la flecha abajo (o las teclas de navegación). Digo que, normalmente, los spinner van
asociados a controles de edición de tipo numérico, pero en realidad se pueden asociar a
cualquier control existente en la ventana.

Las propiedades de la clase TUpDown, a la cual pertenece este control, son:

- Associate Control con el que se va a asociar el spinner. Se trata de un ComboBox en el


que aparece la relación de todos los controles. Nosotros podemos asignarlo en
tiempo de ejecución, pero cuidado con equivocarse al hacerlo, pues provoca un
error de excepción insalvable.
- AlignButton Posición relativa respecto al control al que el spinner está asociado. Los valores
permitidos son a la derecha ( udRight) o a la izquierda (udLeft).

4
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - © Grupo EIDOS
- ArrowKey Permitir el uso de la flecha arriba y flecha abajo para simular la pulsación del
ratón sobre el spinner (será efectivo cuando el control de edición tenga el foco)
o para usarlas como teclas de navegación por el control de edición. El valor por
defecto es true.
- Max/Min Valores máximos y mínimos alcazables.
- Wrap Hace que la lista sea circular, es decir, que si se está pulsando la flecha arriba y
se intenta sobrepasar el tope máximo fijado, cuando Wrap esté a false
permanecerá en dicho máximo, pero cuando esté a true seguirá aumentando
desde el mínimo fijado hacia arriba. Una lógica similar hay que aplicar cuando
lo que se está haciendo es pulsar la flecha abajo en vez de la flecha arriba.

- Position Es el lugar donde se almacena el valor actual del control de edición. Es


accesible y modificable.

Teclas activas
Este control es autoexplicativo, pues se trata de la posibilidad que tenemos de activar, o mejor
dicho, asociar a una pulsación de tecla una cierta operativa.

Cuando se define, delimita y asigna un determinado comportamiento a este tipo de controles,


se dispone, de una forma abreviada, de realizar una operación más o menos repetitiva
mediante un teclazo.

Propiedades
- AutoSize Permite que el tamaño del control se adapte al contenido, el cual será la tecla
asociada a dicho control, por ejemplo Alt-F12. No es lo mismo ubicar F12 en el
control que Ctrl-Alt-W.
- BorderStyle Tipo de enmarcado que llevará el control. Puede llevar un marco sencillo (valor
bsSimple) o no llevar ninguno (bsNone), son las dos únicas alternativas.
- HotKey Tecla que se asociará al control. Si pinchamos sobre el ComboBox asociado a
esta propiedad en el inspector de objetos, aparecerá la relación de las teclas
que se permite utilizar.
- InvalidKeys Relación de las teclas no permitidas. La relación de teclas válidas se ve filtrada
por los modificadores que elijamos en esta propiedad, los cuales se encuentran
representados en la tabla 3.

Valor Descripción
hcNone Todas las combinaciones de teclas son válidas.
hcShift La tecla Shift no está permitida en la definición de la tecla.
hcCtrl La tecla Ctrl no está permitida en la definición de la tecla.
hcAlt La tecla Alt no está permitida en la definición de la tecla.
hcShiftCtrl La combinación de teclas Shift+Ctrl no está permitida en la
definición de la tecla.
hcShiftAlt La combinación de teclas Shift+Alt no está permitida en la
definición de la tecla.
hcCtrlAlt La combinación de teclas Ctrl+Alt no está permitida en la
definición de la tecla.
hcShiftCtrlAlt La combinación de teclas Shift+Ctrl+Alt no está permitida en la
definición de la tecla.

En el fuente 2 se ha programado un procedimiento que provoque el cierre de la ventana y que


regrese a la principal.

5
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - © Grupo EIDOS
// --- Fuente 2 ---------------------------------------------------------
procedure TDlgFiesta.QueHago(Sender: TObject);
begin
Close;
end;

Bueno, aquí termino con este complicadísimo código, dejando el comentario de los controles de
edición para formatos RTF (Rich Text Format -Texto enriquecido como lo traducen en Windows
95) para que el lector lo compare con el de controles de edición multilínea, pues son idénticos
en su estructura (heredan de una clase común), aunque el contenido del primero es, si se me
permite, mucho más rico que el del segundo. Un saludo.

6
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - © Grupo EIDOS

Você também pode gostar