Sei sulla pagina 1di 53

Uso bsico de C++ Builder

Jess Salas Parrilla

Unidad

2b

Uso bsico de C++ Builder

Fichas o ventanas (Forms)


Las fichas tienen varias propiedades, mtodos y eventos, los cuales se pueden usar visualmente o haciendo referencia a ellos mediante el cdigo. Las propiedades modificables en tiempo de diseo ms importantes son las siguientes:

Propiedad

Significado
Nombre de la ficha. Esta propiedad contiene el identificador de la ficha que es utilizado dentro del programa como una variable. Es conveniente que todas las fichas de nuestro programa posean identificadores propios y que den pistas sobre el contenido de la ficha. Su contenido es un identificador. Ttulo de la ficha. Todas las fichas poseen en la parte superior un ttulo, el cual se modifica mediante la propiedad Caption. El contenido de Caption coincide, inicialmente, con el contenido de Name, pero no tienen que coincidir a la fuerza. El contenido es de tipo AnsiString. La propiedad Position toma un valor por defecto que es poDesigned. Este valor hace que la ficha aparezca en pantalla con la misma posicin que tena cuando se dise. Este valor no es el ms adecuado cuando el diseo de la aplicacin se realiza con monitores de gran tamao.

Name

Caption

Position.poDesigned

Entornos de desarrollo

Uso bsico de C++ Builder

Jess Salas Parrilla

Position.poDefault

Este valor produce que los valores de las 4 propiedades anteriores varen de forma aleatoria en cada ejecucin del programa. Esta opcin tampoco es muy apropiada ya que puede ocurrir que una ficha no aparezca en pantalla estando abierta. Con este valor en la propiedad Position se hace que el tamao de la ficha permanezca fijo, mientras que la posicin va cambiando con cada ejecucin. Inversa a la anterior, conserva la posicin de la ficha pero el tamao es fijado en tiempo de ejecucin. Con este valor se consigue que la ficha aparezca en el centro de la pantalla con el tamao original de diseo. Es una propiedad que puede contener tres valores posibles: wsNormal, wsMinimize y wsMaximize. Con el primer valor, la ficha aparece segn el diseo y segn el valor de la propiedad Position. Con el segundo valor, la ficha aparece minimizada en forma de un icono. Con el tercer valor, la ficha aparece ocupando toda la pantalla o maximizada. Esta propiedad permite escalar la ficha y su contenido. Si contiene el valor TRUE, permite el escalado. Si posee el valor de FALSE, no permite el escalado. Es un conjunto de valores que cada uno de ellos tiene el siguiente significado: TRUE: visualiza un botn en la esquina superior derecha que permite minimizar la ventana. FALSE: no aparece dicho botn. TRUE: visualiza un botn en la esquina superior derecha que permite maximizar la ventana abierta. TRUE: visualiza un botn en la esquina superior derecha que sirve para cerrar la ventana. Tambin visualiza un botn en la esquina superior izquierda con un men de sistema. Esta propiedad puede tener 6 valores diferentes: Este valor lo coge la ficha por defecto. Permite hacer la ficha lo grande que el usuario desee. Hace que el borde de la ficha aparezca algo ms fino que en el estado normal.

poDefaultPosOnly poDefaultSizeOnly poScreenCenter

WindowState

Scaled

BorderIcons - biMinimize - biMaximize

- biSystemMenu BorderStyle - bsSizeable - bsSingle

Entornos de desarrollo

Uso bsico de C++ Builder

Jess Salas Parrilla

- bsToolWindow - bsDialog - bsNone - bsSizeToolWin

Como el anterior, pero con una barra de ttulo menor, al estilo de las barras de herramientas. Con este valor, la ficha aparece segn se ha diseado, sin los botones minimizar y maximizar. Elimina el borde de la ventana, as como la barra de ttulo con todos sus controles. Esta opcin hace los bordes redimensionables con una barra de ttulo menor de lo normal. Por defecto esta propiedad tiene el valor TRUE. Dndole el valor de FALSE a esta propiedad desactivaremos el efecto tridimensional, quedando el fondo de la ficha en blanco. Esta propiedad permite cambiar el color de la parte cliente de la ficha. Esta propiedad almacena el identificador de la propiedad Name del men principal insertado en la ficha. Esta propiedad almacena el identificador de la propiedad Name del men flotante asignado a la ficha. Propiedad que contiene la cadena de caracteres que aparece en la ayuda flotante junto al ratn. Si esta propiedad est con el valor TRUE se visualiza la ayuda flotante y si est a FALSE no se visualiza dicha ayuda. TRUE: la ficha est activa. FALSE: la ficha no est activa. TRUE: la ficha se hace visible si Enabled est a true. FALSE: la ficha no es visible. fsNormal: no puede contener otras ventanas en su interior ni ser a su vez contenida en otra ventana. fsMDIForm: puede contener en su interior otras ventanas. fsMDIChild: son las ventanas que van a estar dentro de otra. fsStayOnTop: es para una ventana que siempre estar en el primer plano o visible en su totalidad. Es la propiedad que permite dar formato a todos los caracteres que existan dentro de la ficha. Cuando est con el valor de TRUE permite que aparezcan barras de desplazamiento dentro de la ventana cuando las dimensiones de sta se reducen con el ratn.

Ctl3D

Color Menu PopupMenu Hint ShowHint Enabled Visible

FormStyle

Font AutoScroll

Entornos de desarrollo

Uso bsico de C++ Builder

Jess Salas Parrilla

ActiveControl HelpContext ObjectMenuItem

Permite seleccionar el componente de los que contiene la ficha para que aparezca activado al abrir la ficha. Mediante esta propiedad podemos asociar a la ficha una determinada pgina de ayuda contextual. Se utiliza para indicar las opciones de un men que se activaran cuando se seleccione un objeto mediante el OLE. poNone: no mantiene proporcin alguna. poProportional: imprime el mismo nmero de puntos en impresora que en pantalla. poPrintToFit: ocupa el mayor espacio posible de la pgina manteniendo la proporcin de la ficha. No tiene significado alguno. Esta propiedad es de tipo Longint y se utiliza como variable para poder almacenar valores enteros. FALSE: las pulsaciones de teclas que se produzcan durante la ejecucin del programa pasan directamente al control de la ficha. TRUE: las pulsaciones de teclas son enviadas a la ficha y despus al control de la ficha. Esta propiedad de slo lectura podr ser consultada por el cdigo de la ficha principal o desde donde se llama a la actual ficha. Los valores que puede tomar esta propiedad estn desglosados en el componente Button.

PrintScale

Tag

KeyPreview

ModalResult

Los eventos son procedimientos que se ejecutan cuando se produce algn suceso que se pretende controlar mediante programa. Algunos eventos de la ficha se repiten en otros componentes que puede contener la ficha. Los eventos de una ficha son:

Eventos

Significado
Cuando el puntero del ratn se mueve por la ficha se ejecuta este evento. El evento recibe 3 parmetros: X e Y que son de tipo entero e indican la posicin del cursor expresada en puntos, y Shift que es de tipo conjunto que contendr uno de los siguientes valores dependiendo de qu teclas y botones del ratn estn pulsados.

OnMouseMove

Entornos de desarrollo

Uso bsico de C++ Builder

Jess Salas Parrilla

ssShift ssAlt ssCtrl ssRight ssLeft ssMiddle ssDouble

Una de las teclas de maysculas. La tecla <Alt> La tecla <Control> El botn derecho del ratn El botn izquierdo del ratn El botn central del ratn Los botones izquierdo y derecho del ratn.

OnMouseDown

Se ejecuta cuando se pulsa cualquiera de los botones del ratn estando ste sobre la ficha. Si el botn pulsado es el izquierdo y el puntero est encima de un componente toma el control este componente y no se ejecuta el evento. El evento recibe 3 parmetros: X, Y, Shift y Button. Este ltimo puede tomar tres valores: mbRight (botn derecho), mbLeft (botn izquierdo) y mbMiddle (botn central). Cada vez que se libera un botn del ratn sobre un control, ste recibe el evento OnMouseUp. Los parmetros son idnticos al evento anterior. Este evento tambin puede ejecutarse por la pulsacin de la barra espaciadora sobre un control o la pulsacin de la tecla <Intro> o <Escape>. En la mayora de las ocasiones se ejecuta por la pulsacin del botn izquierdo del ratn. Se ejecutar cuando se pulse dos veces seguidas con el botn izquierdo del ratn. Se ejecuta al pulsarse una tecla. Se ejecuta al liberar una tecla. Se ejecuta cuando se pulsa una tecla alfanumrica. Cuando se arrastra un objeto, aplicando la filosofa de arrastrar y soltar, al pasar el objeto por encima de un control se ejecuta varias veces el evento OnDragOver correspondiente al control. Se ejecuta una sola vez al soltar el objeto encima del control. Se ejecuta cuando la ficha va a ser creada permitiendo realizar inicializaciones. Este evento se ejecuta en el momento en que la ficha se convierte en la ventana activa en el entorno.

OnMouseUp

OnClick

OnDblClick OnKeyDown OnKeyUp OnKeyPress OnDragOver OnDragDrop OnCreate OnActivate

Entornos de desarrollo

Uso bsico de C++ Builder

Jess Salas Parrilla

OnShow OnHide OnDeactivate

Se ejecuta justo antes de que la ficha se haga visible. Se ejecuta justo antes de que la ficha sea ocultada. Este evento se ejecuta cuando la ficha se vuelve inactiva, porque se haya cambiado a otra ventana o aplicacin. Antes de realizar el cierre de la ventana se ejecuta este evento, que recibe como parmetro por referencia el llamado Action que puede contener los valores: caFree, cuando la ficha es cerrada; caMinimize, cuando la ficha se minimiza; caHide, cuando la ficha se oculta; caNone, cuando no se permite el cierre de la ficha. Se ejecuta cuando se va a cerrar la ficha. Este evento recibe el parmetro por referencia CanClose al que daremos el valor TRUE o FALSE dependiendo de que se permita o no dicho cierre. Cuando la ficha se va a destruir y a liberar la memoria ocupada, se ejecuta este evento. El evento OnEnter entra en ejecucin en el componente que se activa y OnExit en el componente que se desactiva. Este evento se ejecuta cada vez que la ficha necesita ser dibujada. Cada vez que el tamao de una ficha sea modificado durante la ejecucin se generar este evento, que se puede aprovechar para modificar la disposicin de los controles en su interior segn el nuevo tamao.

OnClose

OnCloseQuery

OnDestroy OnEnter, OnExit OnPaint

OnResize

Las fichas, como objetos que son, tambin tienen mtodos, entre los ms usuales estn:

Mtodos
Show BringToFront SendToBack Hide Close

Significado
Visualiza la ficha encima de las ventanas que estn abiertas. Trae la ficha del fondo al primer plano. Enva la ficha del primer plano al fondo de la pantalla. Hace que se oculte la ficha pero no se cierra, pudiendo acceder a los componentes de la ficha. Cierra la ficha

Entornos de desarrollo

Uso bsico de C++ Builder

Jess Salas Parrilla

Destroy Print ShowModal

Destruye la ventana. Una vez que la ficha ha sido destruida no ser posible acceder a sus componentes. Se utiliza para imprimir la ficha. Hace que la ficha se visualice y la aplicacin no pueda continuar mientras est abierta, para continuar con la aplicacin se debe cerrar la ficha abierta con ShowModal.

Label (etiquetas)
Las propiedades ms usuales son:

Propiedades
Name Caption Left Top Visible Width Height

Significado
Contiene un identificador mediante el cual se identifica el objeto. Es una cadena de caracteres la cual es visualizada en el interior del objeto. Es la coordenada que tiene el objeto respecto al borde izquierdo de su contenedor. Es la posicin en puntos que tiene el objeto con respecto al primer borde superior de la ficha. Si contiene el valor TRUE se hace visible. Si contiene el valor FALSE dicha etiqueta no ser visible. Expresa el ancho del objeto. Expresa cuntos puntos mide de alto el objeto. Hay que ponerle a TRUE cuando se quiere que el tamao del objeto se adapte al texto mostrado en tiempo de ejecucin. Se pone a FALSE cuando se quiere que el objeto tenga siempre la misma forma. Puede tomar distintos valores dependiendo de las necesidades:

AutoSize

Align

Entornos de desarrollo

Uso bsico de C++ Builder

Jess Salas Parrilla

alNone alTop alBottom alLeft alRight alClient

Conserva la posicin y dimensiones originales. Se coloca en el margen superior del contenedor. Se adapta al margen inferior del contenedor. Se coloca en el margen izquierdo del contenedor. Se adapta al margen derecho del contenedor. Toma todo el espacio disponible del contenedor.

Si AutoSize contiene el valor FALSE, esta propiedad puede tomar 3 valores diferentes: Alignmemt taLeftJustify taRightJustify taCenter Justificado a la izquierda. Justificado a la derecha. Justificado al centro.

WordWrap

Cuando est a FALSE, el texto que contiene la propiedad Caption solamente se visualiza en una nica lnea independientemente del valor que contenga la propiedad AutoSize. Si posee el valor TRUE y la propiedad AutoSize tambin contiene TRUE, la etiqueta contiene varias lneas de texto con los mrgenes de la caja de texto ajustados a la dimensin de la palabra ms larga; si AutoSize es FALSE el texto se adapta a las dimensiones que el programador le asigne a la caja de texto. Esta es una propiedad mediante la cual se puede apreciar fcilmente la herencia. Si a la propiedad Font de la ficha se le ha asignado algunas caractersticas diferentes de las que contiene por defecto, las etiquetas que se aadan a la ficha tendrn por defecto las caractersticas de las fuentes de la ficha. La gran ventaja de la POO permite que las caractersticas de sta propiedad sean diferentes de las heredadas de la ficha. Esta propiedad hace referencia al color de fondo del objeto. Esta propiedad permite que el fondo de un objeto sea transparente, es decir, que se pueda observar otro objeto que est debajo. TRUE: permite en Caption la escritura de letras subrayadas anteponindole el smbolo & a dicha letra. FALSE: el smbolo & pierde su significado y aparece en la etiqueta como un carcter ms.

Font

Color

Transparent

ShowAccelChar

Entornos de desarrollo

Uso bsico de C++ Builder

Jess Salas Parrilla

FocusControl

Nos permite seleccionar el objeto al cual va a estar ligada la etiqueta. Pulsando ALT y la letra de la etiqueta que est subrayada se activa el objeto que est asociado a la etiqueta. TRUE: permite visualizar la etiqueta de ayuda que aparece escrita en la propiedad Hint. FALSE: no visualiza la etiqueta de ayuda. Propiedad que contiene la etiqueta de ayuda que se visualizar cuando se pase con el ratn por encima del objeto. TRUE: si ShowHint est a falso implica que se visualizar la etiqueta de ayuda del objeto contenedor. FALSE: no visualiza la etiqueta del objeto contenedor. TRUE: en este caso la etiqueta se visualiza con todas sus propiedades, es decir, est activa. FALSE: la etiqueta se visualiza desactivada. TRUE: la etiqueta se visualiza. FALSE: la etiqueta no se visualiza. Permite seleccionar la forma que tendr el cursor del ratn cuando pase por encima de la etiqueta. Los valores posibles de esta propiedad son: CrDefault CrArrow CrCross CrlBeam CrSize CrSizeNESW CrSizeNS CrSizeNWSE CrSizeWE CrUpArrow CrHourglass CrDrag CrNoDrop CrHSplit crVSplit La que tenga actualmente. Puntero habitual en forma de flecha inclinada. Una cruz. El cursor de texto. Cuatro flechas unidas indicando reposicionamiento Flecha doble indicando cambio de tamao. Flecha doble indicando cambio de tamao. Flecha doble indicando cambio de tamao. Flecha doble indicando cambio de tamao. Flecha vertical con la punta hacia arriba. Reloj de arena. Flecha con documento para arrastrar y soltar. Seal de prohibido. Doble flecha horizontal. Doble flecha vertical.

ShowHint

Hint

ParentShowHint

Enabled

Visible

Cursor

Entornos de desarrollo

Uso bsico de C++ Builder

Jess Salas Parrilla

El componente Edit (edicin de datos)


Las propiedades ms usuales son:

Propiedades
Name

Significado
Contiene un identificador mediante el cual se identifica el objeto. Es una propiedad de tipo cadena (string). Su contenido puede ser editado en tiempo de ejecucin. Cuando est activo este componente se puede introducir a travs de l una cadena de caracteres, la cual se almacena en esta propiedad. A esta propiedad se le puede asignar cualquier valor inicial que el programador desee.

Text

Left, Top, Width y Son propiedades cuyo significado coincide con los vistos en la Height ficha. Visible Si contiene el valor TRUE se hace visible. Si contiene el valor FALSE dicho objeto no ser visible. TRUE: El componente est activo y puede ser editado en tiempo de ejecucin. FALSE: el componente est inactivo y, aunque sea visible, el componente no puede ser editado hasta que no se ponga esta propiedad a verdad. TRUE: el componente se ajusta a la dimensin de letra que contiene. FALSE: El componente tiene siempre la dimensin que le asigne el programador. Propiedades que permiten asignar al componente una etiqueta de ayuda contextual. Permite dar color al fondo del componente. Permite asignarle al componente un tipo de letra particular. Esta propiedad hereda el tipo de letra del componente que contenedor.

Enabled

AutoSize

Hint, ShowHint

Color Font

Entornos de desarrollo

10

Uso bsico de C++ Builder

Jess Salas Parrilla

Cursor

Mediante esta propiedad se elige la forma del puntero del ratn cuando ste se encuentre sobre el componente. No est disponible en tiempo de diseo. Tiene los mismos valores que en el componente Label. Si se quiere utilizar, se le tiene que dar el valor correspondiente en tiempo de ejecucin. Esta propiedad es de tipo integer. Contiene el nmero mximo de caracteres que puede almacenar. Inicialmente contiene el valor cero para indicar que en principio no existe ningn lmite. Los valores que puede tener esta propiedad son: ecNormal: no se realiza ninguna conversin. EcLowerCase: todas las maysculas a minsculas. EcUpperCase: todas las minsculas a maysculas Inicialmente contiene el valor de FALSE. Cuando se modifica la primera vez toma el valor TRUE y as permanece hasta que nos interese. Cuando nos interese que vuelva a tomar el valor FALSE se debe realizar en tiempo de ejecucin. FALSE: el contenido de la propiedad Text puede ser modificado por el teclado. TRUE: el contenido de Text no puede ser modificado por el teclado pero s puede ser modificado por el cdigo de nuestro programa. El carcter contenido en esta propiedad es el que se visualiza en el lugar de las letras que se pulsan. Inicialmente contiene el carcter nulo (#0) que permite visualizar los caracteres tecleados. En la propiedad Text estarn los caracteres tecleados. Permite conocer la primera posicin de los caracteres seleccionados. Hay que tener en cuenta que el primer carcter por la izquierda ocupa la posicin cero. Esta propiedad nos devuelve el nmero de caracteres selecionados Nos permite obtener el texto que se encuentra seleccionado. Tambin permite cambiar el texto seleccionado por otro. TRUE: oculta la seleccin cuando se desactiva el componente edit. FALSE: permanece el texto seleccionado cuando se desactiva el componente edit.

Align

MaxLength

CharCase

Modified

ReadOnly

PasswordChar

SelStart SelLength SelText

HideSelection

Entornos de desarrollo

11

Uso bsico de C++ Builder

Jess Salas Parrilla

AutoSelect

TRUE: cada vez que se active el componente edit se selecciona todo el texto. FALSE: cuando se activa el componente permanece como se dej antes de perder la activacin. TRUE: permite que el componente sea activado con la tecla tabulador. FASE: el componente no se puede activar mediante la tecla tabulador, pero s se puede activar con el ratn. Su contenido representa el orden en que se activar el componente dentro de todos los componentes existentes en la ficha. Este orden de activacin se puede variar con la opcin Tab Order del men emergente que aparece al pulsar con el botn derecho sobre la ficha. En la ventana de dilogo que se abre se pueden ordenar los componentes segn el criterio que el programador considere oportuno. Estas propiedades pueden tomar uno de los dos valores TRUE o FALSE. Cuando ParentColor contiene el valor verdad quiere decir que la propiedad Color del componente Edit hereda los valores de la propiedad Edit del componente contenedor. Cuando est a falso quiere decir que el componente actual tendr sus propios valores independientes del componente contenedor.

TabStop

TabOrder

ParentColor, ParentCtl3D, ParentFont, ParentShowHint

Mtodos
SelectAll ClearSelection Clear CopyToClipboard CutToClipboard

Significado
Selecciona todo el texto existente en el componente. Elimina todo el texto seleccionado en ese momento. Elimina todo el texto del componente. Todo el texto seleccionado es copiado en el portapapeles. Todo el texto seleccionado es copiado en el portapapeles y eliminado del componente que se est editando.

Eventos

Significado

Entornos de desarrollo

12

Uso bsico de C++ Builder

Jess Salas Parrilla

OnMouseDown, OnMouseMove, OnMouseUp, OnKeyPress, OnKeyDown, OnKeyUp OnEnter OnExit OnChange

Estos eventos ya se han estudiado.

Se ejecuta en el momento en que el componente Edit se convierte en el control activo de la ficha. Se ejecutar cuando deje de ser el componente activo. Cada vez que se inserte o elimine un carcter se ejecutar este evento. La programacin de este evento es muy habitual.

Botones (Button)
Este componente tiene varias propiedades en comn con los componentes vistos hasta ahora. Las propiedades ms usuales son:

Propiedades
Name Caption

Significado
Contiene un identificador mediante el cual se identifica el objeto. Esta propiedad contiene la cadena de caracteres que se visualiza con l. Cuando contiene el valor TRUE el botn est activo y se pueden ejecutar las acciones atribuidas a dicho botn. Si contiene el valor FALSE, el botn se desactiva y el cdigo asociado no se ejecuta aun cuando se intente pulsar dicho botn. Mediante esta propiedad se le puede dar formato al texto que se visualiza y contenido en la propiedad Caption. TRUE: este botn se hace el botn por defecto, es decir, cuando en una ficha existen varios botones, al pulsar la tecla <Intro> se ejecutar el evento OnClick del botn que tenga esta propiedad a verdad. En una ficha solamente puede existir un botn con el valor True en esta propiedad.

Enabled

Font

Default

Entornos de desarrollo

13

Uso bsico de C++ Builder

Jess Salas Parrilla

Cancel

TRUE: cuando esta propiedad es verdadera, este botn sera el que ejecutara su evento OnClick al pulsar la tecla <Escape>. En una ficha solamente puede existir un botn con el valor True en esta propiedad. Esta propiedad se utiliza para construir fichas de dilogo. Al pulsar el botn se cerrara la ficha de dilogo y se devolvera el valor correspondiente a la constante elegida en esta propiedad. Seguidamente se enumeran las constantes que sta propiedad puede tomar y los valores que devuelve al pulsar el botn. Constante Valor devuelto 0 idYes idNo idOk idCancel idAbort idRetry idIgnore

ModalResult

mrNone mrYes mrNo mrOk mrCancel mrAbort mrRetry mrIgnore

Ejemplo 2b.1
Enunciado Se desea construir una ficha como la siguiente:

Entornos de desarrollo

14

Uso bsico de C++ Builder

Jess Salas Parrilla

Al pulsar el botn Borrar cadena se debe limpiar el componente Edit y dejarlo vaco. El componente Edit solamente debe visualizar una cadena pero no editarla. El orden de activacin de los componentes para la tecla tabulador es: BotonLeer -> BotonBorrar -> Edit1. La ficha debe tener el formato de un cuadro de dilogo y debe aparecer centrada en la pantalla. Al pulsar el botn Leer cadena se debe llamar a la siguiente ficha:

Esta ficha es tambin un cuadro de dilogo. En este caso, el componente Edit s se puede editar. El orden de tabulacin es el siguiente: EditEntrada -> BotonAceptar -> BotonCancelar -> BotonSalir. Siempre que se llame a esta ficha tiene que aparecer el componente Edit a foco (activado). Cuando se pulse la tecla retorno equivale a pulsar el botn Aceptar. Cuando se pulse la tecla ESCape equivale a pulsar el botn Cancelar. Cuando se pulse el botn Aceptar, ste debe pasar a la propiedad ModalResult el valor idYes. La pulsacin del botn Cancelar pasa el valor idCancel. La pulsacin del botn Salir pasa el valor de idAbort. Cuando se activa la ficha se debe borrar el contenido del componente Edit. Despus de llamar a la ficha de entrada de cadenas, se debe tratar la causa de la salida de dicha ficha. Si se ha salido porque se ha pulsado el botn Aceptar, se debe visualizar en el componente Edit la cadena de caracteres que contena el componente Edit de la segunda ficha. Si la salida se ha producido porque se ha pulsado el botn Cancelar, en el componente Edit de la ficha principal se debe visualizar el mensaje Ha pulsado el botn CANCELAR. Si se ha salido porque se ha pulsado el botn Salir, hay que visualizar la cadena Ha pulsado el botn SALIR. Al pulsar el botn Aceptar y regresar a la ficha principal, sta queda de la siguiente forma:

Entornos de desarrollo

15

Uso bsico de C++ Builder

Jess Salas Parrilla

Solucin 2b.1 1. Abre el C++ Builder o, si ya ests en l, cierra todo (File -> Close all) y pulsa File -> New -> Application. 2. Salvar el proyecto. Para ello, sigue los siguientes pasos: a. Pulsa File -> Save Project as. b. Crea la carpeta Ejemplo0201 en la carpeta D:\Datos\Cbuilder6\. c. Renombra la propuesta de Unit1 como UnidadPrincipal y pulsa el botn Guardar. d. Renombra la propuesta de Project1 como Ejemplo0201. 3. Modifica las propiedades de la ventana (Form1) como se indica en la tabla siguiente:

Propiedad
BorderStyle Hint Position

Valor
BsDialog Prueba de ShowModal PoScreenCenter

Propiedad
Caption Name ShowHint

Valor
Prueba de ventanas. conexin de

VentanaPrincipal TRUE

4. Disea la ventana principal segn indica el enunciado de tal forma que: a. El campo de edicin se llame Salida (Name = Salida). La propiedad ReadOnly de Salida debe valer TRUE para que no se pueda modificar el contenido del campo de edicin. Pon la fuente que desees al campo de edicin (ej.: arial, negrita, 16 puntos). Elimina el contenido de la propiedad Text.

Entornos de desarrollo

16

Uso bsico de C++ Builder

Jess Salas Parrilla

b. En el botn para leer la cadena de caracteres se deben modificar las siguientes propiedades: Name = BotonLeerCadena, Caption = Leer cadena, Font = Arial, negrita, 20 puntos. c. En el botn para borrar la cadena de caracteres del campo de edicin, se deben modificar las siguientes propiedades: Name = BotonBorrarCadena, Caption = Borrar cadena, Font = Arial, negrita, 20 puntos. d. Hacer que la propiedad TabOrder de los botones y el componente de edicin quede de la siguiente forma: BotonLeerCadena=1, BotonBorrarCadena=2 y Salida=3. 5. Pulsa el icono de los disquetes para guardar las modificaciones. 6. Crear un nuevo formulario (ventana o ficha). Pulsa File -> new -> Form. Aparecer una nueva ventana vaca llamada Form1. Modifica las propiedades de esta nueva ventana que se indica en la siguiente tabla:

Propiedad
BorderStyle Position

Valor
BsDialog PoScreenCenter

Propiedad
Caption Name

Valor
Entrada de cadenas. VentanaDeLectura

7. Guardar la nueva ventana. Pulsa File -> Save As ..., sustituye el nombre Unit1 por UnidadEntrada y pulsa el botn Guardar. 8. Disea la nueva ventana segn indica el enunciado del ejemplo. Coloca en la ventana los siguientes componentes: 1 label, 1 campo Edit y tres botones. Al campo Edit llmale Entrada (Name = Entrada); modifcale la propiedad Font para que quede como Arial, negrita, 16 puntos; elimina el contenido de la propiedad Text. Al componente label modifcale la propiedad Caption para que tome el valor "Introduce aqu la cadena de caracteres". 9. En el botn de la izquierda se deben modificar las siguientes propiedades:

Propiedad
Caption Name TabOrder Aceptar

Valor

Propiedad
Default ModalResult Font TRUE. mrYes

Valor

BotonAceptar 1

Arial, negrita, 20 puntos

10. En el botn del medio se deben modificar las siguientes propiedades:

Entornos de desarrollo

17

Uso bsico de C++ Builder

Jess Salas Parrilla

Propiedad
Caption Name TabOrder

Valor
Cancelar BotonCancelar 2

Propiedad
Cancel ModalResult Font TRUE. mrCancel

Valor

Arial, negrita, 20 puntos

11. En el botn de la derecha se deben modificar las siguientes propiedades:

Propiedad
Caption ModalResult Font Salir MrAbort

Valor

Propiedad
Name TabOrder

Valor
BotonSalir. 3

Arial, negrita, 20 puntos

12. Guardar los cambios pulsando el icono de los disquetes. 13. Enlazar las ventanas. Pincha con el ratn sobre la ventana principal y observa que en el Object Inspector aparece el valor VentanaPrincipal. Pincha en File y selecciona la opcin Include Unit Hdr ..., en la ventana Use Unit que se abre debes seleccionar la opcin UnidadEntrada y pulsar el botn OK. Pulsa el icono de los disquetes para guardar los cambios. Haz doble clic sobre el botn LeerCadena, observa que se ha creado el mtodo OnClic de dicho botn, introduce en dicho mtodo el siguiente cdigo:
VentanaDeLectura->ShowModal(); switch (VentanaDeLectura->ModalResult) { case mrYes : Salida->Text=VentanaDeLectura->Entrada->Text; break; case mrCancel : Salida->Text="Ha pulsado el botn CANCELAR"; break; case mrAbort : Salida->Text="Ha pulsado el botn SALIR"; break; }

14. Para borrar la cadena del campo edit de la ventana principal, haz doble clic en el botn BotonBorrarCadena y teclea el siguiente cdigo:
Salida->Text="";

15. Haz que el campo edit de la ventana de entrada de texto tome el valor de cadena vaca cada vez que se activa la ficha y que dicho componente quede a foco en dicha activacin. Para hacer esto sigue los siguientes pasos: a. Haz clic en la ventana de entrada de texto y observa que el Object inspector toma el valor de VentanaDeLectura.

Entornos de desarrollo

18

Uso bsico de C++ Builder

Jess Salas Parrilla

b. Selecciona los eventos de dicha ventana. c. Haz doble clic en el evento OnActivate. d. Escribe el siguiente cdigo en el mtodo que se ha creado:
Entrada->Text=""; Entrada->SetFocus();

16. Guarda pulsando sobre el icono del disquete. 17. Selecciona la opcin Project del men principal y selecciona la opcin Build all Project, el proyecto se compila y si no hay errores ya se puede ejecutar. 18. Ejecuta el proyecto pulsando el icono que tiene un tringulo verde. El cdigo de la ventana principal es el siguiente:
//--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include "UnidadPrincipal.h" #include "UnidadEntradaCadenas.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TVentanaPrincipal *VentanaPrincipal; //--------------------------------------------------------------------------__fastcall TVentanaPrincipal::TVentanaPrincipal(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::BotonLeerCadenaClick(TObject *Sender) { VentanaDeLectura->ShowModal(); switch (VentanaDeLectura->ModalResult) { case mrYes : Salida->Text=VentanaDeLectura->Entrada->Text; break; case mrCancel : Salida->Text="Ha pulsado el botn CANCELAR"; break; case mrAbort : Salida->Text="Ha pulsado el botn SALIR"; break; } } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::BotonBorrarCadenaClick(TObject *Sender) { Salida->Text=""; } //---------------------------------------------------------------------------

El cdigo de la Ventana de entrada de texto es:


//--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include "UnidadEntradaCadenas.h"

Entornos de desarrollo

19

Uso bsico de C++ Builder

Jess Salas Parrilla

//--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TVentanaDeLectura *VentanaDeLectura; //--------------------------------------------------------------------------__fastcall TVentanaDeLectura::TVentanaDeLectura(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TVentanaDeLectura::FormActivate(TObject *Sender) { Entrada->Text=""; Entrada->SetFocus(); } //---------------------------------------------------------------------------

Entornos de desarrollo

20

Uso bsico de C++ Builder

Jess Salas Parrilla

Panel
Es un componente pensado especialmente para agrupar una serie de componentes que se desea que tengan alguna relacin entre ellos. Este control se suele utilizar para la creacin de barras de herramientas personalizadas, fondos, barras de estado, etc. Cuando se incluyen componentes en componentes de contenedor, se establece una nueva relacin padre-hijo entre el contenedor y los componentes que alberga. Las operaciones realizadas con el panel en la fase de diseo, como desplazamientos, copias y eliminaciones, tambin afectan a los componentes incluidos dentro de l. Los paneles son los primeros componentes que se aaden a la ficha en tiempo de diseo. Si existe algn componente en la ficha que se quiere forme parte del panel, se debe cortar y luego pegar dentro del panel. Las propiedades ms usuales del componente son:

Propiedades
Name

Significado
Contiene un identificador mediante el cual se identifica el objeto. Esta propiedad contiene la cadena de caracteres que se visualiza con l. Normalmente se suele vaciar si el componente se utiliza como un contenedor. Si se utiliza para disear una barra de estado, esta propiedad contendra la cadena que se quiera visualizar. Estas propiedades pueden tomar cualquiera de los siguientes valores de constantes:

Caption

BevelInner, BevelOuter

Constante bvNone bvLowered bvRaised

Significado Sin ningn efecto Hundido Resaltado

BevelWidth

Esta propiedad contiene un valor numrico entero positivo que indica la anchura del efecto producido por las dos propiedades anteriores. El valor de esta propiedad establece el ancho del borde del panel. Se ruega jugar con estas 4 propiedades para coger prctica en el aspecto visual.

BorderWidth

Entornos de desarrollo

21

Uso bsico de C++ Builder

Jess Salas Parrilla

MaskEdit
Este componente es idntico al componente Edit si no se establece ninguna mscara de control. Las propiedades de ste componente ms fundamentales son:

Propiedades

Significado
Contiene una cadena de caracteres que representa la mscara y algunos de ellos tienen un significado especial. Esta propiedad permite disear mscaras segn las necesidades del programador. Las mscaras se construyen a partir de la siguiente tabla de caracteres, los cuales tienen un significado especfico: Carcter C c A a L l 0 9 # < > <> \ : / ; Significado Obligatorio entrar un carcter. Permite la entrada de un carcter. Obligatorio entrar un carcter alfanumrico. Permite la entrada de un carcter alfanumrico. Obligatorio la entrada de un carcter alfabtico. Permite la entrada de un carcter alfabtico. Obligatorio la entrada de un carcter numrico. Permite la entrada de un carcter numrico. Permite la entrada de un carcter numrico o de signo. Los caracteres siguientes aparecern en maysculas. Los caracteres siguientes aparecern en minsculas. Desactiva la funcin de los dos caracteres anteriores. Interpreta el carcter siguiente como no especial. Representa un espacio en blanco. Separador de horas y minutos. Separador de fechas. Separador interno de la mscara.

EditMask

Text

Esta propiedad contendr los caracteres tecleados con formato o sin formato dependiendo de si la opcin Save Literal Characters en el cuadro de dilogo Input Mask Editor est activada o no respectivamente. Esta propiedad que es de slo lectura, contiene en cada momento el texto introducido junto con la mscara.

EditText

Entornos de desarrollo

22

Uso bsico de C++ Builder

Jess Salas Parrilla

El componente Image
Este componente se utiliza para poner imgenes sobre la ficha.

Propiedades
Picture AutoSize Stretch

Significado
Esta propiedad permite seleccionar el fichero de mapa de bits. TRUE: el rea del componente se adapta a la dimensin de la imagen. TRUE: la imagen se adapta al rea del componente.

BitBtn
Este componente es bsicamente un botn que cuenta con ciertas propiedades adicionales que le permiten visualizar una imagen al lado de un texto. Las propiedades ms caractersticas de este componente son:

Propiedades
Caption

Significado
Por defecto los ttulos aparecen en ingls. Para que aparezca en castellano debe cambiarse esta propiedad por el valor que se desee. La seleccin del tipo de botn se realiza en esta propiedad. Los valores que puede tomar esta propiedad son: Constante bkOk Botn

Kind bkCancel bkYes bkNo

Entornos de desarrollo

23

Uso bsico de C++ Builder

Jess Salas Parrilla

bkHelp bkClose bkAbort bkRetry bkIgnore bkAll Glyph NumGlyphs Propiedad mediante la cual se selecciona el fichero donde se encuentra la imagen que se quiere visualizar. Indica el nmero de grficos distintos que se visualizarn con los distintos estados del botn. Indica la posicin del grfico en el interior del botn. Esta propiedad puede tener los siguientes valores: Constante Layout BlGlyphLeft BlGlyphTop BlGlyphRight blGlyphBottom Significado A la izquierda En la parte superior central. A la derecha. En la parte inferior central.

Spacing Margin

Nmero de puntos que existirn entre el borde de la imagen y el texto. Nmero de puntos que existirn entre el borde del botn y la imagen.

En el fichero que se asigna a la propiedad Glyph pueden existir hasta un mximo de 4 imgenes dispuestas una junto a la otra horizontalmente, de las mismas dimensiones. La primera de ellas ser usada cuando el botn est en estado normal, la segunda cuando se halle desactivado, la tercera cuando est pulsado y la cuarta cuando permanezca en este ltimo estado. Si solamente se adjunta una imagen, sta tendr distintos aspectos en los distintos estados del botn.

Entornos de desarrollo

24

Uso bsico de C++ Builder

Jess Salas Parrilla

Ejemplo 2b.2
Hacer el ejemplo 2b.1 utilizando los BitBtn. Utilizar una imagen en la ficha de entrada de cadena para adornar la ficha. Solucin La ficha principal queda de la siguiente forma:

La ventana que permite leer una cadena queda de la siguiente forma:

Entornos de desarrollo

25

Uso bsico de C++ Builder

Jess Salas Parrilla

El cdigo de la ventana principal queda de la siguiente forma:


//--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include "UnidadPrincipal.h" #include "UnidadEntradaCadenas.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TVentanaPrincipal *VentanaPrincipal; //--------------------------------------------------------------------------__fastcall TVentanaPrincipal::TVentanaPrincipal(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::BotonLeerCadenaClick(TObject *Sender) { VentanaDeLectura->ShowModal(); switch (VentanaDeLectura->ModalResult) { case mrOk : Salida->Text=VentanaDeLectura->Entrada->Text; break; case mrCancel : Salida->Text="Ha pulsado el botn CANCELAR"; break; case mrAbort : Salida->Text="Ha pulsado el botn SALIR"; break; } } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::BotonBorrarCadenaClick(TObject *Sender) { Salida->Text=""; }

El cdigo de la unidad UnidadEntradaCadenas queda igual que en el ejemplo 1. Los valores de la propiedad ModalResult de los botones de la VentanaDeLectura son los que se muestran en la sentencia switch del cdigo.

Entornos de desarrollo

26

Uso bsico de C++ Builder

Jess Salas Parrilla

CheckBox
Se utiliza para indicar las distintas opciones que se pueden seleccionar. Se pueden construir grupos de este componente de tal forma que todos los elementos del grupo tienen una o varias caractersticas que les unen. Cada elemento CheckBox puede estar o no activado. Pueden existir varios de ellos seleccionados al mismo tiempo. La forma de este componente est representada en la siguiente figura por el grupo de componentes Propiedades del texto:

Las propiedades de este componente ms usuales son:

Propiedades
Caption ChecKed

Significado
Esta propiedad contiene la cadena de caracteres que se visualiza junto al componente. TRUE: si est marcado. FALSE: si no est marcado. TRUE: el estado del componente est reflejado en la propiedad State. FALSE: el estado del componente est indicado por la propiedad ChecKed. CbChecKed = marcado. CbUnchecKed = Desmarcado. CbGrayed = Indeterminado.

AllowGrayed

State

Entornos de desarrollo

27

Uso bsico de C++ Builder

Jess Salas Parrilla

RadioButtton
Cuando se quiere que solamente se pueda seleccionar uno de los componentes del grupo de componentes que se estn visualizando, se debe introducir el componente RadioButton. Un ejemplo son los componentes que estn introducidos en los grupos de componentes Tipos de letras y Puntos, como se muestra en la siguiente figura:

Las propiedades principales de RadioButton son: Name, Caption y ChecKed.

GroupBox
Este componente tiene como finalidad la de agrupar otros componentes que tienen caractersticas comunes y necesitan un mismo tipo de control. Por ejemplo, los componentes que hay dentro del grupo Tipos de letras son excluyentes entre ellos pero esta exclusin es independiente de la aplicada al grupo Puntos. La nica propiedad importante de este componente es Caption, donde se introduce la cadena de caracteres que hace de ttulo de dicho componente; si no se quiere que aparezca ttulo alguno, esta propiedad debe estar vaca. Si se cambia de posicin el componente, todos los componentes contenidos dentro de l se vern desplazados con l.

Entornos de desarrollo

28

Uso bsico de C++ Builder

Jess Salas Parrilla

RadioGroup
A veces es necesario saber cul de los botones de radio ha sido seleccionado, el componente GroupBox no aporta informacin sobre este suceso, para ello, se dispone del componente RadioGroup. Este nuevo componente permite aadir o insertar botones de radio al grupo en tiempo de ejecucin. Estas operaciones se realizan con los mtodos Add e Insert de la propiedad Items. Si existen dos RadioGroup con botones de radio, la exclusin de los botones de radio en los dos grupos no es independiente. Las propiedades ms importantes son:

Propiedades
Caption

Significado
Esta propiedad contiene la cadena de caracteres que se visualiza con el componente. Indica el nmero de columnas en las que se va a visualizar la lista de botones de radio. Esta propiedad es de tipo Tstrings, es decir, es un objeto cuya estructura es una lista de cadenas. Sobre esta lista de cadenas se pueden realizar operaciones tales como: Insertar, Aadir, Borrar, etc. con los mtodos Insert, Add, Delete, etc. Esta propiedad indica el orden del botn de radio que ha sido seleccionado. El valor 1 indica que no hay ninguno seleccionado. El valor 0 indica que est seleccionado el primer botn de radio de la lista, el valor 1 es para el segundo y as sucesivamente.

Columns

Items

ItemIndex

Ejemplo 2b.3
Hacer una aplicacin que muestre la ventana anterior. Debe visualizar en el campo (componente) label ms inferior el texto que est introducido en el campo edit. Dicho texto se debe visualizar segn la seleccin que se haya hecho en Tipos de letras, Propiedades del texto y Puntos. Cuando se selecciona la propiedad de texto Normal se deben deseleccionar el resto de las propiedades de texto. Para ver la implementacin de las propiedades del texto se debe consultar la ayuda del C++ Builder en Style para la VCL. Style es una propiedad de tipo conjunto con los valores (cursiva, negrita, tachado y subrayado). El aspecto de la ventana de la aplicacin debe ser parecido al siguiente:

Entornos de desarrollo

29

Uso bsico de C++ Builder

Jess Salas Parrilla

Solucin
//--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include "UnidadPrincipal.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TVentanaPrincipal *VentanaPrincipal; //--------------------------------------------------------------------------__fastcall TVentanaPrincipal::TVentanaPrincipal(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::EntradaClick(TObject *Sender) { Entrada->Text=""; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::EntradaChange(TObject *Sender) { Salida->Caption=Entrada->Text;

Entornos de desarrollo

30

Uso bsico de C++ Builder

Jess Salas Parrilla

} //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton1Click(TObject *Sender) { Salida->Font->Name="Arial"; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton2Click(TObject *Sender) { Salida->Font->Name="Courier New"; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton3Click(TObject *Sender) { Salida->Font->Name="Georgia"; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton4Click(TObject *Sender) { Salida->Font->Name="Times New Roman"; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton5Click(TObject *Sender) { Salida->Font->Size=6; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton6Click(TObject *Sender) { Salida->Font->Size=8; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton7Click(TObject *Sender) { Salida->Font->Size=9; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton8Click(TObject *Sender) { Salida->Font->Size=10; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton9Click(TObject *Sender) { Salida->Font->Size=11; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton10Click(TObject *Sender) { Salida->Font->Size=12; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton11Click(TObject *Sender) { Salida->Font->Size=14; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton12Click(TObject *Sender) { Salida->Font->Size=16; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton13Click(TObject *Sender) {

Entornos de desarrollo

31

Uso bsico de C++ Builder

Jess Salas Parrilla

Salida->Font->Size=18; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton14Click(TObject *Sender) { Salida->Font->Size=20; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton15Click(TObject *Sender) { Salida->Font->Size=24; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton16Click(TObject *Sender) { Salida->Font->Size=26; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton17Click(TObject *Sender) { Salida->Font->Size=32; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton18Click(TObject *Sender) { Salida->Font->Size=36; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton19Click(TObject *Sender) { Salida->Font->Size=48; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton20Click(TObject *Sender) { Salida->Font->Size=56; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton21Click(TObject *Sender) { Salida->Font->Size=72; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::NormalClick(TObject *Sender) { if (Normal->Checked) { Salida->Font->Style=TFontStyles(); if (Cursiva->Checked) Cursiva->Checked=false; if (Negrita->Checked) Negrita->Checked=false; if (Tachado->Checked) Tachado->Checked=false; if (Subrayado->Checked) Subrayado->Checked=false; } } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::CursivaClick(TObject *Sender) { if (Cursiva->Checked) { Salida->Font->Style=Salida->Font->Style << fsItalic; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsItalic; }

Entornos de desarrollo

32

Uso bsico de C++ Builder

Jess Salas Parrilla

//--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::NegritaClick(TObject *Sender) { if (Negrita->Checked) { Salida->Font->Style=Salida->Font->Style << fsBold; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsBold; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::TachadoClick(TObject *Sender) { if (Tachado->Checked) { Salida->Font->Style=Salida->Font->Style << fsStrikeOut; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsStrikeOut; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::SubrayadoClick(TObject *Sender) { if (Subrayado->Checked) { Salida->Font->Style=Salida->Font->Style << fsUnderline; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsUnderline; } //---------------------------------------------------------------------------

Entornos de desarrollo

33

Uso bsico de C++ Builder

Jess Salas Parrilla

ListBox
Este componente se utiliza para almacenar una lista de cadenas que pueden estar ordenadas o no. De dicha lista se selecciona un elemento o cadena que es con el que se va a trabajar. El elemento seleccionado ocupa un lugar dentro de la lista que viene indicado por la propiedad ItemIndex. La propiedad Items es la que contiene los elementos de la lista. Las propiedades ms importantes son:

Propiedades
Columns

Significado
Indica el nmero de columnas en las que se va a visualizar la lista de cadenas. Esta propiedad es de tipo Tstrings, es decir, es un objeto cuya estructura es una lista de cadenas. Sobre esta lista de cadenas se pueden realizar operaciones tales como: Insertar, Aadir, Borrar, etc. con los mtodos Insert, Add, Delete, etc. Esta propiedad indica el orden de la cadena que ha sido seleccionada. El valor 1 indica que no hay ninguna seleccionada. El valor 0 indica que est seleccionado la primera cadena de la lista, el valor 1 es para la segunda y as sucesivamente. TRUE: ordena automticamente la lista de cadena. FALSE: los elementos se muestran en el orden en que se aaden a la lista. TRUE: permite visualizar los elementos completamente en vez de la parte superior o inferior del texto. FALSE: indica que solamente puede haber un elemento seleccionado en un instante determinado. TRUE: en un instante determinado pueden existir varios elementos de la lista seleccionados. TRUE: la seleccin de los elementos se realiza con las teclas <Maysculas> y <Control> junto con el botn izquierdo del ratn. FALSE: la seleccin se realiza con el botn izquierdo del ratn. Esta propiedad es de tipo integer e indica cuntos elementos estn marcados o seleccionados en un instante determinado.

Items

ItemIndex

Sorted IntegralHeight

MultiSelect

ExtendedSelect

SelCount

Entornos de desarrollo

34

Uso bsico de C++ Builder

Jess Salas Parrilla

Selected

Propiedad de tipo tabla de booleanos. Contiene tantos elementos booleanos como elementos existen en la lista. Cuando un elemento de la lista est seleccionado su correspondiente elemento de Selected contiene el valor de TRUE, si no est seleccionado su correspondiente posicin en Selected contiene el valor FALSE. Esta propiedad se utiliza para indicar si el componente va a almacenar una lista de cadenas o de otros objetos. Esta propiedad puede tomar tres valores:

Style

Constante
lbStandard lbOwnerDrawFixed

Tipo de elemento
Todos los elementos son cadenas.

Cada elemento es distinto pero con una altura fija. lbOwnerDrawVariable Cada elemento es distinto y tiene una altura variable. ItemHeight Altura en puntos de los elementos de la lista. Esta propiedad tiene efecto siempre y cuando la propiedad Style contenga el valor de lbOwnerDrawFixed.

Entornos de desarrollo

35

Uso bsico de C++ Builder

Jess Salas Parrilla

Ejemplo 2b.4
Modificar el ejercicio anterior para que en lugar del grupo Tipos de letras, este grupo se implemente con una lista ListBox donde aparezcan todas las fuentes de letras que contenga el ordenador en ese momento. Para enlazar este componente hay que tener en cuenta que las fuentes que se van a visualizar tienen que ser asignadas a la propiedad Items y estas fuentes son heredadas del componente Screen. La lista de fuentes debe aparecer ordenada. En el mismo instante que se selecciona una fuente debe aplicarse su efecto en el texto de la etiqueta (label) ms baja. El aspecto que tiene que presentar la aplicacin es el siguiente:

Solucin
//--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include "UnidadPrincipal.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TVentanaPrincipal *VentanaPrincipal; //---------------------------------------------------------------------------

Entornos de desarrollo

36

Uso bsico de C++ Builder

Jess Salas Parrilla

__fastcall TVentanaPrincipal::TVentanaPrincipal(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::EntradaClick(TObject *Sender) { Entrada->Text=""; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::EntradaChange(TObject *Sender) { Salida->Caption=Entrada->Text; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton5Click(TObject *Sender) { Salida->Font->Size=6; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton6Click(TObject *Sender) { Salida->Font->Size=8; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton7Click(TObject *Sender) { Salida->Font->Size=9; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton8Click(TObject *Sender) { Salida->Font->Size=10; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton9Click(TObject *Sender) { Salida->Font->Size=11; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton10Click(TObject *Sender) { Salida->Font->Size=12; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton11Click(TObject *Sender) { Salida->Font->Size=14; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton12Click(TObject *Sender) { Salida->Font->Size=16; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton13Click(TObject *Sender) { Salida->Font->Size=18; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton14Click(TObject *Sender) { Salida->Font->Size=20; }

Entornos de desarrollo

37

Uso bsico de C++ Builder

Jess Salas Parrilla

//--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton15Click(TObject *Sender) { Salida->Font->Size=24; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton16Click(TObject *Sender) { Salida->Font->Size=26; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton17Click(TObject *Sender) { Salida->Font->Size=32; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton18Click(TObject *Sender) { Salida->Font->Size=36; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton19Click(TObject *Sender) { Salida->Font->Size=48; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton20Click(TObject *Sender) { Salida->Font->Size=56; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton21Click(TObject *Sender) { Salida->Font->Size=72; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::NormalClick(TObject *Sender) { if (Normal->Checked) { Salida->Font->Style=TFontStyles(); if (Cursiva->Checked) Cursiva->Checked=false; if (Negrita->Checked) Negrita->Checked=false; if (Tachado->Checked) Tachado->Checked=false; if (Subrayado->Checked) Subrayado->Checked=false; } } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::CursivaClick(TObject *Sender) { if (Cursiva->Checked) { Salida->Font->Style=Salida->Font->Style << fsItalic; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsItalic; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::NegritaClick(TObject *Sender) { if (Negrita->Checked) { Salida->Font->Style=Salida->Font->Style << fsBold; if (Normal->Checked) Normal->Checked=false;

Entornos de desarrollo

38

Uso bsico de C++ Builder

Jess Salas Parrilla

} else Salida->Font->Style=Salida->Font->Style >> fsBold; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::TachadoClick(TObject *Sender) { if (Tachado->Checked) { Salida->Font->Style=Salida->Font->Style << fsStrikeOut; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsStrikeOut; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::SubrayadoClick(TObject *Sender) { if (Subrayado->Checked) { Salida->Font->Style=Salida->Font->Style << fsUnderline; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsUnderline; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton1Click(TObject *Sender) { Salida->Font->Size=102; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::FormActivate(TObject *Sender) { TipoTexto->Items=Screen->Fonts; Salida->Caption=""; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::TipoTextoClick(TObject *Sender) { Salida->Font->Name=TipoTexto->Items->Strings[TipoTexto->ItemIndex]; } //---------------------------------------------------------------------------

Entornos de desarrollo

39

Uso bsico de C++ Builder

Jess Salas Parrilla

ComboBox
Las dos anteriores listas no permitan editar un elemento, para que esta posibilidad se contemple se invent el componente ComboBox, que es una combinacin de los componentes ListBox y Edit. Por influencia de la herencia, las propiedades de este nuevo componente sern la suma de las propiedades de los anteriores ms unas nuevas que le caracterizan. En este tipo de listas no es posible seleccionar ms de un elemento en un instante determinado. Estas propiedades son:

Propiedades

Significado
Esta propiedad se utiliza para indicar el estilo de componente que se va a utilizar. Esta propiedad puede tomar cinco valores:

Constante
Style csDropDown csSimple csDropDownList csOwnerDrawFixed csOwnerDrawVariable

Estilo
Lista con campo de edicin asociado. Campo de edicin sin lista. Lista sin campo de edicin. Elementos distintos con altura fija. Elementos distintos con altura variable.

DropDownCount Text

Contiene el nmero de lneas mximo que se visualizarn simultneamente cuando se despliegue la lista. Esta propiedad contendr el texto del elemento seleccionado.

Entornos de desarrollo

40

Uso bsico de C++ Builder

Jess Salas Parrilla

Ejemplo 2b.5
Modificar el ejercicio anterior de forma que se utilice la lista ComboBox en vez de ListBox. La aplicacin debe tener el siguiente aspecto:

Solucin
//--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include "UnidadPrincipal.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TVentanaPrincipal *VentanaPrincipal; //--------------------------------------------------------------------------__fastcall TVentanaPrincipal::TVentanaPrincipal(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::EntradaClick(TObject *Sender) {

Entornos de desarrollo

41

Uso bsico de C++ Builder

Jess Salas Parrilla

Entrada->Text=""; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::EntradaChange(TObject *Sender) { Salida->Caption=Entrada->Text; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton5Click(TObject *Sender) { Salida->Font->Size=6; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton6Click(TObject *Sender) { Salida->Font->Size=8; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton7Click(TObject *Sender) { Salida->Font->Size=9; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton8Click(TObject *Sender) { Salida->Font->Size=10; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton9Click(TObject *Sender) { Salida->Font->Size=11; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton10Click(TObject *Sender) { Salida->Font->Size=12; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton11Click(TObject *Sender) { Salida->Font->Size=14; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton12Click(TObject *Sender) { Salida->Font->Size=16; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton13Click(TObject *Sender) { Salida->Font->Size=18; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton14Click(TObject *Sender) { Salida->Font->Size=20; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton15Click(TObject *Sender) { Salida->Font->Size=24; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton16Click(TObject *Sender)

Entornos de desarrollo

42

Uso bsico de C++ Builder

Jess Salas Parrilla

{ Salida->Font->Size=26; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton17Click(TObject *Sender) { Salida->Font->Size=32; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton18Click(TObject *Sender) { Salida->Font->Size=36; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton19Click(TObject *Sender) { Salida->Font->Size=48; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton20Click(TObject *Sender) { Salida->Font->Size=56; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton21Click(TObject *Sender) { Salida->Font->Size=72; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::NormalClick(TObject *Sender) { if (Normal->Checked) { Salida->Font->Style=TFontStyles(); if (Cursiva->Checked) Cursiva->Checked=false; if (Negrita->Checked) Negrita->Checked=false; if (Tachado->Checked) Tachado->Checked=false; if (Subrayado->Checked) Subrayado->Checked=false; } } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::CursivaClick(TObject *Sender) { if (Cursiva->Checked) { Salida->Font->Style=Salida->Font->Style << fsItalic; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsItalic; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::NegritaClick(TObject *Sender) { if (Negrita->Checked) { Salida->Font->Style=Salida->Font->Style << fsBold; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsBold; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::TachadoClick(TObject *Sender) { if (Tachado->Checked)

Entornos de desarrollo

43

Uso bsico de C++ Builder

Jess Salas Parrilla

{ Salida->Font->Style=Salida->Font->Style << fsStrikeOut; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsStrikeOut; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::SubrayadoClick(TObject *Sender) { if (Subrayado->Checked) { Salida->Font->Style=Salida->Font->Style << fsUnderline; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsUnderline; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton1Click(TObject *Sender) { Salida->Font->Size=102; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::FormActivate(TObject *Sender) { TipoTexto->Items=Screen->Fonts; Salida->Caption=""; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::TipoTextoChange(TObject *Sender) { Salida->Font->Name=TipoTexto->Text; } //---------------------------------------------------------------------------

Entornos de desarrollo

44

Uso bsico de C++ Builder

Jess Salas Parrilla

Memo
Cuando el texto que debe introducir el usuario es extenso, el componente Edit no cubre esta necesidad y se debe utilizar el componente Memo. Este nuevo componente puede contener mltiples lneas de texto. La mayor parte de las propiedades del componente Edit tambin las posee el componente Memo. Las propiedades tpicas de este componente son:

Propiedades

Significado
El texto del componente se estructura en mltiples cadenas que estn contenidas en esta propiedad. En tiempo de ejecucin se puede tratar esta propiedad como si se tratase de una matriz en la que cada elemento es una lnea de texto. Esta propiedad es, a su vez, un objeto. Propiedad de Lines que contiene el nmero de lneas que existen en cada momento en el componente Memo. La primera lnea tiene como ndice el cero. Mtodo de Lines que permite aadir texto al componente Memo. Mtodo que permite insertar una lnea en una determinada posicin. Mtodo que permite eliminar una determinada lnea de texto. Mtodo que permite mover una lnea de posicin. Mtodo que permite intercambiar dos lneas de texto.

Lines

Lines->Count

Lines->Add Lines->Insert Lines->Delete Lines->Move Lines->Exchange

Lines->LoadFromFile Mtodo que permite leer texto de un archivo de texto. Lines->SaveToFile Mtodo que permite guardar en un fichero de texto el contenido de Memo. TRUE: una cadena o lnea de texto ocupa varias lneas del componente Memo. FALSE: una lnea de texto solamente ocupa una lnea del componente Memo.

WordWrap

Entornos de desarrollo

45

Uso bsico de C++ Builder

Jess Salas Parrilla

Esta propiedad permite que aparezca o no desplazamiento. Los valores de esta propiedad son: ScrollBars

barras

de

Constante
SsNone SsHorizontal SsVertical ssBoth

Tipo de barra
Ninguna barra de desplazamiento. Horizontal Vertical Ambas

WantTabs

TRUE: cuando el componente Memo est activo y se pulsa la tecla de tabulacin se produce un salto de tabulacin. FALSE: al pulsar la tecla de tabulacin se le quita el control al componente Memo. Tiene el mismo efecto que la anterior propiedad pero con la tecla de retorno.

WantReturns

Entornos de desarrollo

46

Uso bsico de C++ Builder

Jess Salas Parrilla

Ejemplo 2b.6
Hacer el mismo ejemplo anterior pero utilizando el componente Memo para introducir el texto y darle formato. Poner un botn para borrar el contenido del componente Memo. La ventana debe tener un aspecto parecido al siguiente:

Solucin
//--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include "UnidadPrincipal.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TVentanaPrincipal *VentanaPrincipal; //--------------------------------------------------------------------------__fastcall TVentanaPrincipal::TVentanaPrincipal(TComponent* Owner)

Entornos de desarrollo

47

Uso bsico de C++ Builder

Jess Salas Parrilla

: TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton5Click(TObject *Sender) { Salida->Font->Size=6; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton6Click(TObject *Sender) { Salida->Font->Size=8; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton7Click(TObject *Sender) { Salida->Font->Size=9; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton8Click(TObject *Sender) { Salida->Font->Size=10; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton9Click(TObject *Sender) { Salida->Font->Size=11; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton10Click(TObject *Sender) { Salida->Font->Size=12; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton11Click(TObject *Sender) { Salida->Font->Size=14; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton12Click(TObject *Sender) { Salida->Font->Size=16; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton13Click(TObject *Sender) { Salida->Font->Size=18; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton14Click(TObject *Sender) { Salida->Font->Size=20; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton15Click(TObject *Sender) { Salida->Font->Size=24; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton16Click(TObject *Sender) { Salida->Font->Size=26; } //---------------------------------------------------------------------------

Entornos de desarrollo

48

Uso bsico de C++ Builder

Jess Salas Parrilla

void __fastcall TVentanaPrincipal::RadioButton17Click(TObject *Sender) { Salida->Font->Size=32; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton18Click(TObject *Sender) { Salida->Font->Size=36; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton19Click(TObject *Sender) { Salida->Font->Size=48; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton20Click(TObject *Sender) { Salida->Font->Size=56; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton21Click(TObject *Sender) { Salida->Font->Size=72; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::NormalClick(TObject *Sender) { if (Normal->Checked) { Salida->Font->Style=TFontStyles(); if (Cursiva->Checked) Cursiva->Checked=false; if (Negrita->Checked) Negrita->Checked=false; if (Tachado->Checked) Tachado->Checked=false; if (Subrayado->Checked) Subrayado->Checked=false; } } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::CursivaClick(TObject *Sender) { if (Cursiva->Checked) { Salida->Font->Style=Salida->Font->Style << fsItalic; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsItalic; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::NegritaClick(TObject *Sender) { if (Negrita->Checked) { Salida->Font->Style=Salida->Font->Style << fsBold; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsBold; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::TachadoClick(TObject *Sender) { if (Tachado->Checked) { Salida->Font->Style=Salida->Font->Style << fsStrikeOut; if (Normal->Checked) Normal->Checked=false; }

Entornos de desarrollo

49

Uso bsico de C++ Builder

Jess Salas Parrilla

else Salida->Font->Style=Salida->Font->Style >> fsStrikeOut; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::SubrayadoClick(TObject *Sender) { if (Subrayado->Checked) { Salida->Font->Style=Salida->Font->Style << fsUnderline; if (Normal->Checked) Normal->Checked=false; } else Salida->Font->Style=Salida->Font->Style >> fsUnderline; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::RadioButton1Click(TObject *Sender) { Salida->Font->Size=102; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::FormActivate(TObject *Sender) { TipoTexto->Items=Screen->Fonts; Salida->Text=""; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::TipoTextoChange(TObject *Sender) { Salida->Font->Name=TipoTexto->Text; } //--------------------------------------------------------------------------void __fastcall TVentanaPrincipal::BotonBorrarClick(TObject *Sender) { Salida->Clear(); } //---------------------------------------------------------------------------

Entornos de desarrollo

50

Uso bsico de C++ Builder

Jess Salas Parrilla

Ejercicios
Ejercicio 2b.1
Hacer una aplicacin en Delphi que pida la introduccin de una fecha a travs de un componente TEdit y cuando se pulse el botn Aceptar muestre en un componente TLabel el da de la semana correspondiente a dicha fecha. La ventana puede tener el siguiente formato:

Ejercicio 2b.2
Hacer una aplicacin en Delphi que pida la introduccin de dos nmeros enteros positivos. El ms pequeo se utilizar como ao inicial y el mayor se utilizar como ao final. El programa debe calcular los aos que son bisiestos comprendidos entre los dos nmeros anteriores. Los aos que son bisiestos se deben introducir en un componente TListBox. Se deben contar la cantidad de aos bisiestos y mostrarla en la ventana. Se deben hacer validaciones, de tal forma que si se introduce una cadena que no es un nmero entero se debe mostrar un mensaje de error. Un formato de esta ventana podra ser:

Entornos de desarrollo

51

Uso bsico de C++ Builder

Jess Salas Parrilla

Ejercicio 2b.3
Hacer una aplicacin en Delphi que pida la introduccin de dos nmeros enteros positivos. El ms pequeo se utilizar como ao inicial y el mayor se utilizar como ao final. El programa debe calcular los aos jacobeos que hay entre el ao inicial y el ao final. Los aos que son jacobeos los debe mostrar en un componente TListBox. Se deben hacer validaciones, de tal forma que si se introduce una cadena que no es un nmero entero se debe mostrar un mensaje de error. Un formato de esta ventana podra ser:

Ejercicio 2b.4
Hacer un programa en Delphi que pida la introduccin de un nmero entero positivo y calcule todos los nmeros amigos que hay entre el uno y el nmero introducido. Un nmero entero es amigo de otro cuando la suma de todos los divisores del primer nmero da como resultado el segundo y la suma de todos los divisores del segundo nmero da como resultado el primer nmero. Utilizar componentes TListBox para mostrar los nmeros que son amigos y sus divisores. Cuando se seleccione un nmero deben aparecer sus divisores en el componente TListBox destinado a tal cuestin. El formato de la ventana debe ser el siguiente:

Entornos de desarrollo

52

Uso bsico de C++ Builder

Jess Salas Parrilla

Ejercicio 2b.5
Hacer un programa en Delphi que muestre el factorial de los 33 primeros nmeros enteros y el factorial del nmero entero mayor que 33 que se introduzca en un componente TEdit. Tambin debe mostrar los tiempos inicial, final y diferencia de la ejecucin del bucle de clculo. Los factoriales se deben mostrar en un componente TMemo. El formato de la ventana debe ser el siguiente:

Entornos de desarrollo

53

Potrebbero piacerti anche