UNIDAD 5.- C++BUILDER COMPONENTES

TEMA 9 CREACION DE COMPONENTES NO VISUALES C++BUILDER


En este temas se analiza, la creación y construcción de componentes no visuales.

La necesidad de este tipo de componentes se desprende del hecho de que existen muchas tareas de programación de carácter repetitivo a lo largo de la construcción de muchas aplicaciones, por ejemplo se manejan en 10 programas, o tareas o aplicaciones distintas el mismo conjunto de tres fórmulas matemáticas o financieras, etc.

En caso como estos, es mas conveniente crear un componente especializado en solución de dichas fórmulas y estarlo reutilizando en las diversas aplicaciones que lo ocupen.

Para realizar esto primero diseñamos la clase correspondiente, tal como el ejemplo de clases en paginas anteriores:

// declaración de la clase, sus variables y sus métodos
Class fórmulas
{
int areatriangulo( int base, int altura);
float pesosdolares (int pesos, float tipocambio);
double promedio(int calif1, int calif2);
}
// implementacion de los métodos de la clase
int formulas::areatriangulo(int base, int altura)
{ return base* altura /2 ;}
float formulas::pesosdolares(int pesos, float tipocambio)
{ return pesos/tipocambio; }
double formulas::promedio(int calif1, int calif2)
{return (calif1+calif2)/2.0 ;}

La pasamos ahora al C++Builder, el procedimiento comentado es:

Procedimiento:

1.- File, Close All

2.- Componente New,

Clase Name = fórmulas

Ancestor = TComponent

Page = Standard

* Observar que todo clase no visual, se deriva de TComponent, con esto se asegura un mínimo visual de propiedades, incluyendo un icono de default, para la barra de componentes y un par de eventos, los métodos de la clase es lo que se va a construir y programar.

3.- File Save As, fórmulas, Save

4.- A la vista queda el editor con formulas.cpp , en la parte de arriba donde dice #include <formulas.h>, poner cursor encima y click derecho para el popupmenu, seleccionar la primera opción, de open source/header file, y con esto ya se tendrán a la vista los dos archivos que se ocupan para construir la clase, ellos son formulas.cpp y formulas.h

En estos dos archivos se construye la clase, la parte declarativa de la clase queda en el archivo formulas.h y la parte de implementacion o los métodos quedan en el archivo formulas.cpp, como observación en PASCAL solo se ocupa el archivo llamado unit.pas y ahí quedan juntos pero en su área apropiada las dos partes de una clase, su declaración y su implementación.

Observar el código ya generado por C++Builder de formulas.h;

//----------------------------------------------------------
#ifndef formulasH
#define formulasH
//----------------------------------------------------------
#include <vcl\SysUtils.hpp>
#include <vcl\Controls.hpp>
#include <vcl\Classes.hpp>
#include <vcl\Forms.hpp>
//----------------------------------------------------------
class fórmulas : public TComponent
{
prívate:
protected:
public:
__fastcall fórmulas(TComponent* Owner);
__published:
};
//----------------------------------------------------------
#endif

1.- Recordar que es en este archivo el .h donde se hace la declaración de la clase.

2.- Observar que C++Builder ya definió la clase y la hizo un descendiente publico de TComponent, esto de publico es para permitir que todos los demás componentes puedan accesar las propiedades y métodos de la clase Fórmulas.

3.- Variables, métodos( procedimientos y funciones) y propiedades que ocupe la clase fórmulas deberán declararse dentro de la llaves.

4.- Tomar nota que pueden existir cuatro tipos diferente de variables, métodos y propiedades, ellos son:

prívate: solo métodos dentro de la propia clase, tienen

acceso y pueden manipularlos.

protected: No pueden ser accesados por código fuera de la la clase, pero si por métodos de la propia clase.

public: Código externo, otras clases y métodos propios pueden accesarlos.

_published: Solo para propiedades que se quiera que aparezcan en el inspector de objetos.

5.- Para el ejemplo de la clase que se esta manejando, se escriben o mejor dicho declaran los métodos en la parte publica de la clase, como en el siguiente ejemplo

//----------------------------------------------------------------
#ifndef formulasH
#define formulasH
//----------------------------------------------------------------
#include <vcl\SysUtils.hpp>
#include <vcl\Controls.hpp>
#include <vcl\Classes.hpp>
#include <vcl\Forms.hpp>
//----------------------------------------------------------------
class fórmulas : public TComponent
{
prívate:
protected:
public:
__fastcall fórmulas(TComponent* Owner);
int areatriangulo( int base, int altura);
float pesosdolares (int pesos, float tipocambio);
double promedio(int calif1, int calif2);
__published:
};
//----------------------------------------------------------------
#endif

6.- La parte de implementacion, se escribe al final del archivo .cpp, como se muestra en el siguiente ejemplo.

//----------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop
#include "formulas.h"
//----------------------------------------------------------------
static inline fórmulas *ValidCtrCheck()
{
return new fórmulas(NULL);
}
//----------------------------------------------------------------
__fastcall formulas::formulas(TComponent* Owner):TComponent(Owner)
{
}
//----------------------------------------------------------------
namespace Fórmulas
{
void __fastcall Register()
{
TComponentClass classes[1] = {__classid(fórmulas)};
RegisterComponents("Standard", classes, 0);
}
}
//----------------------------------------------------------------
// implementacion de los métodos de la clase
int formulas::areatriangulo(int base, int altura)
{ return base* altura /2 ;}
float formulas::pesosdolares(int pesos, float tipocambio)
{ return pesos/tipocambio; }
double formulas::promedio(int calif1, int calif2)
{return (calif1+calif2)/2.0 ;}

* Solo se escriben los últimos renglones y en la posición indicada, es decir al final del archivo .cpp

7.- Files, Save All

8.- File, Close All

9.- Component, Install, Add, Browse, formulas.cpp, Open, Ok hasta

que Done=Make, entonces OK

* Observar el nuevo icono de fórmulas image117.jpgen la barra de componentes.

Ejemplo de aplicación:

1. Pantalla de Diseño:

image118.jpg

b) Código

//----------------------------------------------------------------
   void __fastcall TForm1::Button1Click(TObject *Sender)
   {
   Edit3->Text=formulas1->promedio(Edit1->Text.ToInt(),
   Edit2->Text.ToInt() );
   }
   //----------------------------------------------------------------

3. Pantalla de corrida

image119.jpg

Politica de Privacidad