Está en la página 1de 383

UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS


CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES

INTERFACES GRÁFICAS PARA DESARROLLO DE APLICACIONES JAVA

EN BLACKBERRY, COMPLEJIDAD DEL DESARROLLO Y

PROPUESTA DE AMBIENTE DE DESARROLLO

GRÁFICO

TESIS DE GRADO

Previa a la obtención del Título de:

INGENIERO EN SISTEMAS COMPUTACIONALES

HÉCTOR WILLIAM PILLIGUA ROBALINO


TUTOR: DAVID BENAVIDES
GUAYAQUIL – ECUADOR

2013

I
REPOSITORIO NACIONAL EN CIENCIAS Y TECNOLOGÍA

FICHA DE REGISTRO DE TESIS

TÍTULO “interfaces gráficas para desarrollo de aplicaciones java en BlackBerry, complejidad del desarrollo y
propuesta de ambiente de desarrollo grafico.”
REVISORES:

INSTITUCIÓN: Universidad de Guayaquil FACULTAD: Ciencias Matemáticas y Físicas

CARRERA: Ingeniería en sistemas computacionales

FECHA DE PUBLICACIÓN: Noviembre del 2013 N° DE PÁGS.: 183

ÁREA TEMÁTICA: Desarrollo Windows

PALABRAS CLAVES: desarrollo móvil, complejidad de desarrollo , lenguaje java, IDE gráfico, optimización de programación
RESUMEN: Para el desarrollo de aplicaciones móviles se generó la aplicación que facilita una interface gráfica que permitirá
manipular los diferentes elementos de la aplicación móvil y facilitando el desarrollo de los mismos, permite generar una solución
que se importa en el ambiente de eclipse, y una vez en este ambiente se facilita la publicación.
N° DE REGISTRO(en base de datos): N° DE CLASIFICACIÓN:

DIRECCIÓN URL (tesis en la web):

ADJUNTO PDF SI NO
X

CONTACTO CON AUTOR: Teléfono: E-mail:

0997450851 hector.pilligua.hwpr@gmail.com

CONTACTO DE LA INSTITUCIÓN Nombre:


Teléfono:

II
APROBACIÓN DEL TUTOR

En mi calidad de Tutor De la tesis, “Interfaces Gráficas para Desarrollo de

Aplicaciones Java en BlackBerry, Complejidad del Desarrollo y Propuesta de

Ambiente de Desarrollo Grafico“, elaborado por el Sr. Héctor William Pilligua

Robalino, egresado de la Carrera de Ingeniería en Sistemas Computacionales,

Facultad de Ciencias Matemáticas y Físicas de la Universidad de Guayaquil,

previo a la obtención del Título de Ingeniero en Sistemas, me permito declarar

que luego de haber orientado, estudiado y revisado, la apruebo en todas sus partes.

Atentamente

………………………………….
Ing. David Benavides
TUTOR

III
CERTIFICACIÓN DE GRAMATÓLOGO

Quien suscribe el presente certificado, se permite informar que después de haber

leído y revisado gramaticalmente el contenido de la tesis de grado de: Héctor

William Pilligua Robalino. Cuyo tema es: Interfaces gráficas para desarrollo de

aplicaciones java en BlackBerry, complejidad del desarrollo y propuesta de

ambiente de desarrollo gráfico.

Certifico que es un trabajo de acuerdo a las normas morfológicas, sintácticas y


simétricas vigentes.

ATENTAMENTE,

NOMBRE DEL GRAMATÓLOGO


# LICENCIA

IV
DEDICATORIA

El presente trabajo lo dedico a todas las personas que han hecho posible que se

pueda realizar así como a todos lo que han estado conmigo de manera directa e

indirecta. A mi madre que me brindaba su paciencia, en especial a mi hermano

que me dio el impulso necesario para poder meterme en la carrera de ingeniería

en sistemas, de no haber sido por el ahora no sé dónde me encontraría ni qué

tipo de amistades tendría.

Héctor William Pilligua Robalino

V
AGRADECIMIENTO

Se agradece el presente a mi familia que sin el apoyo de ellos no hubiera

sido posible el culminar mi carrera profesional, en especial a todas esas

personas que se han hecho mis amistades, sin el consejo de ellos no

hubiera seguido esta carrera, porque aquí se me ha presentado problemas

personales pero ellos y ellas siempre estaban ahí para darme ánimos y

fuerzas

Héctor William Pilligua Robalino

VI
TRIBUNAL DE GRADO

Ing. Fernando Abad Montero Ing. Juan Chanabá Alcócer


DECANO DE LA FACULTAD DIRECTOR
CIENCIAS MATEMÁTICAS Y FÍSICAS

Ing. David Benavides Ing. Miguel Molina Calderón


TUTOR Miembro de tribunal
TRIBUNAL

Ing. Héctor Lara Gavilanes Ing. Israel Ortega Oyala


Miembro de tribunal Miembro de Tribunal

AB. Juan Chávez A.


SECRETARIO

VII
UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS


CARRERA DE INGENIERÍA EN SISTEMAS
COMPUTACIONALES

INTERFACES GRÁFICAS PARA DESARROLLO DE APLICACIONES

JAVA EN BLACKBERRY, COMPLEJIDAD DEL DESARROLLO Y

PROPUESTA DE AMBIENTE DE DESARROLLO

GRAFICO

Proyecto de trabajo de grado que se presenta como requisito para optar por el

título de INGENIERO en SISTEMAS COMPUTACIONALES

Autor: Héctor William Pilligua Robalino

C.I. 092261482-1

Tutor: Ing. David Benavides.

Guayaquil, Noviembre de 2013

VIII
CERTIFICADO DE ACEPTACIÓN DEL TUTOR

En mi calidad de Tutor del Primer Curso de Fin de Carrera, nombrado por el


Departamento de Graduación y la Dirección de la Carrera de Ingeniería en
Sistemas Computacionales de la Universidad de Guayaquil,

CERTIFICO:

Que he analizado el Proyecto de Grado presentado por el egresado Héctor


William Pilligua Robalino, como requisito previo para optar por el título de
Ingeniero cuyo problema es:

¿Cómo favorecer el desarrollo de aplicaciones para dispositivos BlackBerry


proponiendo un ambiente de desarrollo grafico?, Considero aprobado el trabajo en
su totalidad.

Presentado por:

Héctor William Pilligua Robalino . ___092261482-1_____


Apellidos y Nombres completos Cédula de ciudadanía N°

Tutor Ing.: David Benavides

Guayaquil, Noviembre de 2013

IX
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS
CARRERA DE INGENIERÍA EN SISTEMAS
COMPUTACIONALES

Autorización para Publicación de Tesis en Formato Digital

1. Identificación de la Tesis

Nombre Alumno: Héctor William Pilligua Robalino


Dirección: Oriente entre la 12 y la 13 pasando el puente de la A
Teléfono: 0997450851 E-mail:
hector.pilligua.hwpr@gmail.com

Facultad: Matemáticas y Físicas


Carrera: Ingeniería en Sistemas Computacionales
Título al que opta: Ingeniería en Sistemas Computacionales
Profesor guía: Ing. David Benavides

Título de la Tesis: Interfaces gráficas para desarrollo de aplicaciones Java en

BlackBerry, complejidad del Desarrollo y propuesta de ambiente de desarrollo

gráfico.

Temas Tesis: Desarrollo de aplicaciones, software, móvil, aplicación Windows

2. Autorización de Publicación de Versión Electrónica de la Tesis


A través de este medio autorizo a la Biblioteca de la Universidad de Guayaquil y a
la Facultad de Ciencias Matemáticas y Físicas a publicar la versión electrónica de
esta tesis.

Publicación electrónica:

Inmediata x Después de 1 año

Firma Alumno:

3. Forma de envío:
El texto de la Tesis debe ser enviado en formato Word, como archivo .Doc. o
.RTF y .Pdf para PC. Las imágenes que la acompañen pueden ser: .gif, .jpg o .tiff.

X
DVDROM x CDROM

ÍNDICE GENERAL

APROBACIÓN DEL TUTOR III


CERTIFICACIÓN DE GRAMATÓLOGA IV
DEDICATORIA V
AGRADECIMIENTO VI
TRIBUNAL DE GRADO VII
DECLARACIÓN EXPRESA VIII
CERTIFICADO DE ACEPTACIÓN DEL TUTOR X
ÍNDICE GENERAL XI
ÍNDICE DE CUADROS XIII
ÍNDICE DE GRÁFICOS XIV
RESUMEN XVII
ABSTRACT XVIII
INTRODUCCIÓN 1-9
CAPITULO I – EL PROBLEMA 10-31
Ubicación del problema en un contexto 10-13
Situación conflicto 13-14
Causas y consecuencias del problema 7-16
Causas 14-16
Consecuencias 16-17
Delimitación del problema 17
Formulación del problema 17
Evaluación del problema 17-20
Objetivo de la investigación 21-24
Objetivo Generales 21
Objetivos Específicos 21-22
Alcances 22-24
Alcances y limitaciones de la investigación 24-27
Justificación e importancia de la investigación 27-31
CAPITULO II- MARCO TEÓRICO 32-108
Antecedentes del estudio 32-36
Fundamentación teórica 37
Java J2ME 37-38
KVM 38-40

XI
Connected Limited Device Configuration (CLDC) 40-41
Connected Device Configuration (CDC) 41-42
CVM 42-43
RIM 43-44
NET_RIM_API 44
LENGUAJE DE PROGRAMACION 44-45
Programación Imperativa 44
Lenguaje Imperativo 44
Programación Declarativa 45
LENGUAJE MAQUINA 46
APLICACIONES 46-47
Aplicaciones de Negocio 46
Aplicaciones de Utilería 47
Aplicaciones de entretenimiento 47
INTERFACES GRÁFICAS 47-54
Metáforas 55-60
Java 61
ByteCode 61-65
JRE 65
J2SE 66
J2EE 66-67
J2ME 67-68
JDBC 68-69
JMS 70-79
JavaBeans 80-81
JavaScript 81-82
Servlet 82
PLATAFORMA .NET 83-84
BIBLIOTECAS DE CLASES .NET 84
COM 84
Common Language Runtime (CLR) 84-89
Microsoft Intermediate Language (MSIL) 90-92
Lenguaje de Programación C# 93-95
BLACKBERRY 96-98
Ambiente de Desarrollo Grafico 98
El Estándar de Calidad ISO 9001 99-100
Factores de calidad ISO 9126 100-104
Desarrollo de Widgets para Dispositivos BlackBerry 104
FUNDAMENTACIÓN LEGAL 105-106
Preguntas a Contestarse 106
Variables de la Investigación 106-107
DEFINICIONES CONCEPTUALES 107
CAPÍTULO III – METODOLOGÍA 108-144

XII
Diseño de la investigación 109
Modalidad de la investigación 109-110
Población y muestra 110-113
Tamaño de la muestra 113-116
Operacionalización de las variables 116-118
Instrumentos de recolección de datos 119-124
Procedimientos de la Investigación 124-126
Recolección de la Información 126
Procesamiento y análisis 127-139
Criterios para la elaboración de la propuesta 140
Criterios para la validación de la propuesta 140-144
CAPÍTULO IV – MARCO ADMINISTRATIVO 145-147
Cronograma 145-146
Presupuesto 146-147
CAPÍTULO V – CONCLUSIÓN Y RECOMENDACIÓN 148-151
Conclusiones 148-149
Recomendaciones 149-151
BIBLIOGRAFÍA 151-152
ANEXOS

XIII
ÍNDICE DE CUADROS

Pág.

Cuadro N° 1 111
Cuadro de Población
Cuadro N° 2 112
Población Aproximada 1
Cuadro N° 3 113
Población Aproximada 2
Cuadro N° 4 114
Población Aproximada 3
Cuadro N° 1 115
Cuadro Población 4
Cuadro N° 5 117
Matriz de operacionalización de variables

Cuadro N° 6 127
Condición del informante

Cuadro N° 7 129
Utiliza Dispositivos BlackBerry

Cuadro N° 8 130
Adaptación a Nuevas Herramientas

Cuadro N° 9 132
Lenguaje de Programación más Utilizados

Cuadro N° 10 134
Desarrollo de Aplicaciones con tecnología J2ME

Cuadro N° 11 135
Conocimiento de Herramientas para Desarrollo de Aplicaciones
para Dispositivos Móviles

Cuadro N° 12 136
Uso de IDE Grafico para Desarrollo de Aplicaciones

Cuadro N° 14 137
Desarrollos Frecuentes de Sistemas Informáticos

Cuadro N° 13 138
Sistemas Operativos Móviles

XIII
Cuadro N° 15 139
Sistemas Herramientas de Programación más Utilizadas para
Desarrollo de Aplicativos Móviles

Cuadro N° 16 143
Valoración de las Preguntas por los Expertos

Cuadro N° 17 147
Proyección Inicio del Negocio

XIV
ÍNDICE DE GRÁFICOS
Pág.
Gráfico N° 1 38
Java 2 Micro Edition

Gráfico Nº 2 41
Preverificación de Clases en CDLC/KVM.

Gráfico N°3 42
Relaciones APIs de Java.

Gráfico Nº 4 48
Interfaces Graficas.

Gráfico Nº 5 55
Metáfora.

Gráfico Nº 6 79
Aplicaciones.

Gráfico Nº 7 80
Applets.

Gráfico Nº 8 81
JavaBean.

Gráfico Nº 9 82
JavaScritp

Gráfico Nº 10 82
Servlets

Gráfico Nº 11 96
BlackBerry

Gráfico Nº 12 127
Condición del Informante.

Gráfico Nº 13 129
Uso de Dispositivos BlackBerry.

Gráfico Nº 14 130
Adaptación a Nuevas Herramientas.

XV
Gráfico Nº 15 132
Lenguaje de Programación más Utilizados.

Gráfico Nº 16 134
Desarrollo de Aplicaciones con tecnología J2ME.

Gráfico Nº 17 135
Conocimiento de Herramientas para Desarrollo de
Aplicaciones para Dispositivos Móviles.

Gráfico Nº 18 136
Uso de IDE para Desarrollo de Aplicaciones.

Gráfico Nº 19 137
Desarrollos Frecuentes de Sistemas Informáticos.

Gráfico Nº 20 138
Sistemas Operativos Móviles.

Gráfico Nº 21 139
Herramientas de Programación más Utilizadas para Desarrollo
de Aplicativos Móviles.

XVI
ANEXOS
Anexo N° 1 155
FLUJO DE PROCESOS

Anexo Nº 2 156
ENCUESTA PARA SELECCIÓN DE EXPERTOS
Anexo N°3 158
DETERMINACIÓN DEL COEFICIENTE K
Anexo Nº 4 159
ENCUESTA A LOS EXPERTOS SELECCIONADOS
Anexo Nº 5 160
CRITERIOS DE LOS EXPERTOS CONSULTADOS.
MATRIZ DE FRECUENCIAS DE LA ENCUESTA
Anexo Nº 6 161
IMAGEN DE CADA UNO DE LOS VALORES DE LAS
CELDAS DE LA TABLA DE FRECUENCIAS
ACUMULATIVAS RELATIVAS, POR LA INVERSA DE
LA CURVA NORMAL
Tabla 5. IMAGEN DE CADA UNO DE LOS VALORES

Anexo Nº 7 162
.Encuesta

XVII
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS

CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES

INTERFACES GRÁFICAS PARA DESARROLLO DE APLICACIONES JAVA

EN BLACKBERRY, COMPLEJIDAD DEL DESARROLLO Y

PROPUESTA DE AMBIENTE DE DESARROLLO

GRÁFICO

Autor: Héctor William Pilligua Robalino


Tutor: Ing. David Benavides.

RESUMEN

Para el desarrollo de aplicaciones en dispositivos móviles se deben considerar la


tecnología habida en el dispositivo móvil así como conectividad, funcionalidades,
sistema operativo, servicios y demás, motivo por el cual se centra en el estudio a
los Smartphone de BlackBerry con sistema operativo BlackBerry OS que se
ejecuta bajo el lenguaje nativo de java j2me. El desarrollo de aplicaciones sobre
J2ME se ve truncado por las limitantes que ofrece el dispositivo, así como el poco
conocimiento que se tiene en el desarrollo de estas aplicaciones, los diferentes
objetos que se pueden implementar en una aplicación, los diferentes eventos con
los cuales se pueden interactuar. El producto a entregarse tiene como finalidad
brindar una herramienta de desarrollo amigable para los programadores que vean
afinidad a realizar aplicaciones para dispositivos móviles BlackBerry, y que por
diversos motivos no lo han hecho ya sea como por ejemplo , poco conocimiento
en los objetos de desarrollo para móviles, IDE que brindan solo interacción con el
código fuente y no brindan un entorno amigable que facilite estas aplicaciones, la
tesis actual contara con ayuda para el desarrollo de aplicaciones lo cual reducirá
considerablemente el tiempo de desarrollo así como mejora en la interfaz de
usuario a entregarse a los propietarios de los dispositivos.

XVIII
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS

CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES

INTERFACES GRÁFICAS PARA DESARROLLO DE APLICACIONES JAVA

EN BLACKBERRY, COMPLEJIDAD DEL DESARROLLO Y

PROPUESTA DE AMBIENTE DE DESARROLLO

GRÁFICO

ABSTRACT

For the development of applications for mobile devices technology must be


considered view on the mobile device and connectivity features, operating system
and other services, which is why our study we focus on the BlackBerry
Smartphone with BlackBerry OS operating system that runs on the native
language of java j2me. Application development on J2ME is truncated by the
limitations offered by the device, and the little knowledge we have in the
development of these applications, different objects that can be implemented in an
application, the different events which can interact. The delivered product is
intended to provide a user-friendly development tool for programmers who see
affinity to make BlackBerry applications for mobile devices , and which for
various reasons have not either cause as little knowledge of the development
objects mobile , only IDE that provide interaction with the source code and do not
provide a friendly environment to facilitate these applications , the current project
will feature support for the development of applications which will significantly
reduce development time and improved user interface to surrender to the owners
of the devices.

XIX
ABREVIATURAS
ASP Application Service Providers
CLR Common Language Runtime
MSIL Microsoft Intermediate Language
RIM Research In Motion
RIM Research In Motion
CLR Common Language Runtime
MSIL Microsoft Intermediate Language
CLDC Connected Limited Device Configuration
CDC Connected Device Configuration
KVM Kilobyte Virtual Machine
JNI Java Native interface
CVM Compact Virtual Machine
GUI Graphical User Interface
JVM Máquina Virtual de Java
J2SE Java Platform, Standard Edition o Java SE
J2EE Java Platform, Enterprise Edition o Java EE
J2ME Java 2 Micro Edition
API Interfaces de Programación de Aplicaciones
JDBC Java Data Base Connectivity
RMI Java Remote Method Invocation
JMS Java Message Service

XX
INTRODUCCIÓN

Desde la aparición de la primera generación de computadores en el año 1940, la

programación de sistemas informáticos ha sido de gran importancia, ya que es el

motor de conocimientos para el funcionamiento de las computadoras.

En la década de los 50 aparece el primer programa que se lo considero como

sistema operativo propiamente dicho, esto se presentó como un sistema batch que

permitía el manejo de memoria, procesamiento por lotes y almacenamientos

temporales.

En los años 70 aparecen los sistemas Atlas y OS/360, lo cual dio paso al

conocimiento de Unix, fortaleciendo el desarrollo de sistemas mediante este

sistema. Ya en esta década se hizo la presentación de BDOS y CP/M, lo cual se

los pueden conocer como los primeros sistemas operativos.

En los años 70 hacen su aparición los lenguajes de programación, los cuales

tenemos como prevalencia C++. Eiffel, Haskell y Miranda. En esta época también

se mejora la interacción con los diferentes componentes de red que se comenzaron

a utilizarse en los computadores personales. En el año de 1973 se considera que

hacen su aparición los teléfonos móviles.

1
En la década de los 80 empezó el auge de los computadores personales, las cuales

ya contaban con un sistema operativo que permitida trabajar con ventanas y

menues,

Con el pasar del tiempos el desarrollo de sistemas computacionales se ha ido

intensificando, lo cual ha dado mejoras en las herramientas de desarrollo,

generando nuevos métodos de trabajos para el desarrollo de sistemas, pasando de

programar en lenguaje de bajo nivel que consistía en el desarrollo de los sistemas

directo en la memoria del equipo usando lenguaje assembler a programar en

lenguajes de alto nivel, como por ejemplo visual estudio que ofrece interfaces de

fácil entendimiento para desarrollos de sistemas computacionales.

Desde la primera generación hacia la actualidad la tecnología ha ido avanzando de

tal manera que ya no se piensa solo en equipos de trabajo estacionarios, sino en

dispositivos móviles, así como por ejemplo tenemos las computadoras portátiles,

los telefónicos, localizadores, asistentes personales, libros digitales, navegadores

web, Smartphone, consolas de videojuegos, entre otros. Esto ha dado lugar a que

el desarrollo de los sistemas también se oriente hacia estos dispositivos,

generando diferentes herramientas de desarrollo de sistemas, dando pasó a

diferentes lenguajes de programación.

El desarrollo de los sistemas informáticos se desarrollaban por líneas de códigos,

lo cual demanda un gran conocimiento del lenguaje que se está utilizando para el

2
desarrollo de aplicaciones, en vista de esto se desarrollaron herramientas que

facilitan el trabajo a los programadores, ya sea facilitando el desarrollo de las

interfaces de usuarios, así como el brindar ayudas en el desarrollo del código, esto

ha dado la facilidad de que el programador se dedique más a la lógica del

desarrollo y no en el desarrollo de las interfaces.

Con estos avances se ha visto la necesidad de desarrollar los sistemas operativos

para los diferentes equipos móviles, brindando una especie de inteligencia a los

dispositivos creando así los conocidos Smartphone o teléfonos inteligentes, los

cuales facilitan el trabajo a los propietarios, entre los cuales sobresalen, Android,

IOS, JavaRIM, Windows Mobile.

Con la aparición de los equipos móviles, el desarrollo de aplicaciones se centró en

ese nuevo hito, se comenzó como en los equipos de escritorios, desarrollando

programas que se ejecutan directamente en la memoria, con el paso del tiempo y

los avances tecnológicos se han ido implementando nuevos alcances a los equipos

móviles lo cual hacia que su funcionalidad no se limiten a realizar o recibir

llamadas o mensajes de textos o agendas, sino al manejo de imágenes, acceso a

internet, manejo de multimedia, música, radio, entre otras funcionalidades.

En la actualidad el desarrollo de aplicaciones está orientado a equipos

estacionarios y a dispositivos móviles, tomando un notable crecimiento en el

3
último, debido al desarrollo de la tecnología se ha visto un notable crecimiento en

la conectividad móvil, lo que ha provocado este incremento.

Los primeros pioneros que brindaron un equipo que ofrecía varios procesos en

paralelo y permitir llevar un entorno de oficina móvil fueron BlackBerry con su

sistema operativo java RIM versión 1.4.

El desarrollo de aplicaciones móviles fue evolucionando con el pasar del tiempo,

comenzando por el año 1998 con aplicaciones para los PDA los cuales eran

herméticos y solo desarrollados por los propietarios de la marca, después con el

tiempo se ha ido expandiendo estas aplicaciones llegando a la actualidad a tener

un IDE que se pueden adaptar a diferentes aplicativos que se utilizan para

desarrollo de aplicaciones informáticas así como myeclipse, eclipse, netbeans,

visual estudio y aplicaciones web en general ya que el desarrollo de aplicaciones

web también ha tenido buena acogida entre los diferentes dispositivos móviles sin

considerar el sistema operativo con el cual estén trabajando.

El lenguaje java y su evolución y brinda la facilidad de desarrollar aplicaciones y

poder dejarlos implementados en los diferentes dispositivos habidos hasta la

fecha, esto se debe a que java permite un lenguaje de alto nivel de fácil adaptación

para el desarrollador.

4
A pesar de los avances en los diferentes lenguajes de programación, el desarrollo

de las aplicaciones para dispositivos móviles no es fácil, sino más bien es

complejo en el desarrollo, más aun cuando se necesitan desarrollar aplicaciones

con interfaces gráficas.

Para el desarrollo de las aplicaciones móviles java en especial para los

dispositivos BlackBerry se han desarrollado sistemas que permite el desarrollo de

estos programas, así como plugins, sin embargo, la complejidad del desarrollo de

las aplicaciones, en especial de las interfaces dificultan el desarrollo de los

mismos, por ello vi la necesidad de crear un sistema permita el desarrollo de las

interfaces gráficas, así como manipular las diferentes propiedades los objetos

contenidos en las interfaces de usuarios de las aplicaciones java, implementando

la acción en el elemento botón para la implementación de acciones, la

implementación de un ambiente gráfico para el desarrollo de las aplicaciones java

RIM para los dispositivos BlackBerry.

La presente tesis tiene como finalidad facilitar el desarrollo de aplicaciones para

dispositivos BlackBerry, brindando una interfaz gráfica que facilite el desarrollo

de las interfaces gráficas para los diferentes aplicativos que se desee crear para el

dispositivo móvil.

5
Brinda la generación de la solución a ser importada en el aplicativo eclipse, esto

facilita al desarrollador la revisión y generación final del aplicativo a ser

implementado en el dispositivo eclipse.

Permite la modificación del código generado, personalizando la funcionalidad de

la aplicación, cuenta con la funcionalidad de compilación, disminuyendo la

cantidad de errores que se hayan generado por la manipulación de las clases por

parte del desarrollador.

El aplicativo permitirá una mejor comprensión del desarrollo de los programas

para dispositivos BlackBerry, ya que mostrara el código generado de cada control

utilizado en la pantalla que se esté creando.

El módulo de la generación del código java se basa en los diferentes objetos

agregados en la pantalla del móvil, así como las acciones que el usuario haya

ingresado en la acciones de los botones agregados.

El módulo de compilación se encarga de la revisión y compilación del código que

se haya generado en el aplicativo, en el caso de que el código esta correcto se

mostrara una advertencia, en el caso de que el cogido generado o desarrollado

posea algún error se mostrara el error del mismo.

6
El módulo de generación de solución se encarga de recolectar las clases

generadas, desarrollar los archivos necesarios y copiar los recursos agregados para

la generación de un sistema de archivos que se cargara en el programa de eclipse,

este interpretara el programa generado, así como las clases que se han creado y

dejara todo correcto para la generación del ejecutable.

Las herramientas de desarrollo para incluir en esta aplicación fueron C# para el

entorno de escritorio y el sistema de archivos de Windows para la generación de

la solución a importarse. Considerando estos elementos se ha desarrollado la

presente tesis, la cual está estructurada en cuatro capítulos que se detallan a

continuación.

El primer capítulo trata sobre la ubicación del problema, a través de los

antecedentes, estableciendo de donde se manifiesta el problema, las causas y

consecuencias del mismo, el análisis del objeto de estudio, identificando campo,

área, aspecto y tema, determinando los objetivos específicos y generales.

En el segundo capítulo se fundamentan teóricamente diferentes componentes del

objeto de investigación relacionados con la reserva de boletos de viaje terrestre a

través de las nuevas tecnologías, se plantea las variables, dimensiones,

indicadores, hipótesis que constituyen el problema de la investigación.

En el tercer capítulo explica la metodología utilizada a través de instrumentos de

recolección y análisis de datos, definiendo la población y muestra en que se

7
realizará la investigación, estableciendo los instrumentos de recolección de los

datos y la técnica que se utilizará.

En el cuarto capítulo presenta el análisis del presupuesto para la implementación

del sistema así como el cronograma de actividades requerido para su completa

funcionalidad.

En el quinto capítulo muestra las conclusiones una vez realizado el análisis, de las

mismas se detallarán las recomendaciones del estudio

8
UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS

CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES

INTERFACES GRÁFICAS PARA DESARROLLO DE APLICACIONES JAVA

EN BLACKBERRY, COMPLEJIDAD DEL DESARROLLO Y PROPUESTA

DE AMBIENTE DE DESARROLLO GRÁFICO

Tesis de grado que se presenta como requisito para optar por el título de

INGENIERO en SISTEMAS COMPUTACIONES

Autor: Hector William Pilligua Robalino.

C.I.: 0922614821

David Benavides

TUTOR

Guayaquil, Noviembre de 2013

9
CAPÍTULO I

EL PROBLEMA

PLANTEAMIENTO DEL PROBLEMA

Ubicación del Problema en un Contexto

Para el desarrollo de aplicaciones existen diferentes lenguajes de programación

entre ellos se encuentran ADA, Basic, C, C#, Cobol, Fortran, Java, MatLab, LISP,

Pascal, PHP, Perl, Phyton, Bash Script, JavaScript, ASP, todos estos lenguajes

ofrecen una interacción con el sistema operativo a un alto y un bajo nivel,

mediante líneas de código.

Estas aplicaciones de desarrollaban para equipos estáticos, ya sean estos

computadoras personales o equipos más especializados así como por ejemplos

servidores, en el año 1995 se vio una nueva oportunidad con los dispositivos

móviles, con el pasar de los tiempos ha ido mejorando la tecnología móvil y con

ello los programas que se encontraban en estos dispositivos ha ido progresando,

esto produjo que hayan más requerimientos por parte de los usuarios (dueño de

equipo móvil).

Con la aparición del concepto de oficina móvil, se vio la necesidad de

personalizar las aplicaciones para las diferentes demandas que se presentaban por

partes de los dueños de los equipos, esto fomento en gran cantidad el desarrollo de

aplicaciones por parte de los programadores independientes, así también llevo a

10
algunas empresas de desarrollo de sistemas a inclinarse por esta tecnología para

poder cubrir estos requerimientos que en su mayoría son de índole

administrativos.

El inconveniente de desarrollar aplicaciones para equipos BlackBerry es que no

hay la suficiente información disponible en las redes sociales, foros, así también

no se encuentran muchos documentos que ayuden en la tarea, y esto complica el

programas las aplicaciones para los equipos BlackBerry.

Una de las herramientas que ofrece el desarrollo de aplicaciones para dispositivos

móviles es Netbeans, que ofrece un entorno tanto gráfico con por líneas de

código, el inconveniente de esta herramienta es que las aplicaciones desarrolladas

en este programa no son totalmente compatibles con lis dispositivos BlackBerry.

Otra herramienta que tenemos y es de mayor uso es eclipse, esta herramienta

cuenta con un plugin que permite crear aplicaciones para los dispositivos

BlackBerry, lo cual permite la total compatibilidad del programa desarrollado con

el dispositivo móvil, esta herramienta no cuenta con una interfaz gráfica que

facilite el desarrollo de las interfaces graficas con el usuario, la ventaja de esta

herramienta es que permite la publicación de las aplicaciones de manera sencilla y

permite la instalación del aplicativo en el mismo dispositivo.

11
El lenguaje de visual estudio no cuenta con un plugin o alguna librería que

permita el desarrollo de aplicaciones para los dispositivos BlackBerry, esta

herramienta solo permite el desarrollo de las aplicaciones para dispositivos que

cuente con sistemas operativos soportados pos Microsoft, por ejemplo los

dispositivos PDA con sistema operativo Windows Mobile.

En la actualidad no existen programas que permiten crear aplicaciones móviles a

nivel de interfaces de usuarios (front-end) para dispositivos BlackBerry que

utilicen la tecnología de java RIM, las herramientas existentes me permiten

trabajar a nivel de back-end en el cual diseñar la interfaz de usuario se hacer una

labor tediosa, lo cual genera en los clientes una inconformidad por el producto

recibido en la mayoría de las ocasiones, ya que el desarrollo no cumple con las

facilidades solicitadas, a pesar de que netbeans permite desarrollar aplicaciones

para dispositivos móviles y estas son compatibles con los dispositivos

BlackBerry, en su mayoría no son compatibles y al no utilizar objetos propios del

dispositivo móvil, no aprovechan al máximo los recursos del equipo y esto

provoca que sean lentos y fallen en ocasiones.

La tecnología móvil es una nueva área en comparación con las otras tecnologías

existentes motivo por el cual no hay las suficientes herramientas que faciliten su

utilización, de allí que surge lo siguiente.

12
Variable Independiente:

 Interfaces Gráficas para Desarrollo de Aplicaciones Java para BlackBerry

Variables dependientes:

 Complejidad del Desarrollo de Aplicaciones Java Móvil .

 Implementación de Ambiente de Desarrollo Gráfico para Java Móvil de

BlackBerry

Situación Conflicto Nudos Críticos

En la actualidad hay aplicaciones que permiten crear aplicaciones java para

dispositivos BlackBerry, entre ellas tenemos el programa Research In Motion que

es un editor propio de BlackBerry, este programa permite trabajar con los objetos

de la aplicación para los dispositivos móviles pero no a nivel gráfico sino a nivel

de código. También se tienen los plugin para eclipse que permiten crear

aplicaciones para los dispositivos móviles, con la única restrictiva que no facilita

la manipular de los objetos de las interfaces de usuarios a un nivel visual, solo

permite manipular el desarrollo a nivel de código.

Las empresas de desarrollo de aplicaciones ya no solo se dedican a sistemas para

equipos de cómputos personas, sino que también se dedican al desarrollo de

aplicaciones para dispositivos móviles, lo cual en la mayoría de las veces se cobra

un valor considerable y hay que esperar para verificar si la aplicación se ajusta a

lo que el usuario requiere, la mayoría de las veces cumple pero se malgastan

13
recursos del dispositivo haciendo la aplicación no satisfactoria en un porcentaje

considerable.

El problema se limita a los desarrolladores de aplicaciones para tecnología java

RIM de BlackBerry, ya que al momento de desarrollar una aplicación, en el caso

de ser un desarrollador junior no tiene el claro conocimiento de los diferentes

objetos que se pueden usar en la interfaces de usuarios, en el caso de tratarse de un

desarrollador sénior o semi-senior se hace complicado el trabajo de crear la

interface de usuario para lo cual debe de pasar varias horas frente al computador

para tener la interface deseada.

En el caso de no tener el diseño deseado la mayoría de los programadores optan

por realizar una nueva hoja de código fuente para no dañar la lógica ingresada y

así tener una interfaz más acorde a lo deseado, esto causa perdida de tiempo en el

desarrollo de un programa.

Causas y Consecuencias del Problema

Causas:

 Poco conocimiento de los controles tales como cajas de textos, listas

desplegable, opciones, menús, selecciones complementos, clases,

interface y demás objetos que se aplican en el desarrollo de

aplicaciones móviles java RIM para BlackBerry.

 Limitantes de las aplicaciones en los dispositivos BlackBerry.

14
 Pocos conocimientos de los eventos que se ejecutan así como las

condiciones que deben de existir para que se ejecuten los mismos.

 Pocas Facilidades en la interacción de los diferentes objetos, interfaces

y clases que se utilizan en el desarrollo de una aplicación java RIM

para BlackBerry.

 En la actualidad hay editores de programas para aplicaciones móviles

para los diferentes dispositivos pero para java RIM no se ofrece una

herramienta que me ofrezca facilidades (interfaz gráfica) el desarrollo

de sistemas.

 Poca ayuda en internet para solución de problemas que se presenten en

el desarrollo de aplicaciones java RIM así como información de los

diferentes objetos que se apliquen en el desarrollo de los aplicativos

móviles.

 Las nuevas versiones de sistema operativo BlackBerry SO permiten

mejores utilidades a aplicaciones desarrolladas para aplicaciones javas

RIM para BlackBerry.

 Los programas son empaquetados y no pueden verse el código fuente

para su análisis.

 Los cursos que se brindan para el desarrollo de aplicaciones son

esporádicos y no se tiene la información deseada en los mismos para el

desarrollo de aplicaciones java RIM para BlackBerry.

 Multifuncionalidades que brindan los diferentes dispositivos móviles

para la ejecución de los programas java desarrollados.

15
Consecuencias:

 Poca facilidad al entender la lógica de programación por el

desconocimiento de los objetos implicados en el desarrollo de las

aplicaciones java RIM para BlackBerry.

 Se tiene un desconocimiento de los alcances del sistema que se puede

crear.

 No se tiene una visión clara de los eventos que se pueden ejecutar a

nivel de cada elemento.

 Al no tener el conocimiento de todos los objetos que ofrece en la

plataforma, no se tiene la idea de la interacción entre los diferentes

elementos.

 Interfaces de desarrollo java que tienen la limitante de no contar con

interfaces para implementación de interfaces de usuarios de una

manera amigable.

 Al ser una tecnología nueva no se tiene suficientes conocimientos o

foros en donde se pueda obtener información para poder realizar

aplicaciones java RIM.

 El ser una nueva tecnología o ambiente de desarrollo no se ha

explotado en su totalidad las capacidades.

 Los códigos de aplicaciones hechos no se puede visualizar por algún

programa de extracción de código desde los ejecutables, por ello no se

tiene el conocimiento de cómo actúan las aplicaciones ya realizadas.

16
 En la actualidad son muy pocos las instituciones que brindan cursos

para desarrollo de aplicaciones y cuando estas se dan son para

diferentes dispositivos o en su defecto tienen un valor exagerado y por

ello la mayoría de las veces no se puede acceder a estos cursos.

 Debido a que hay diferente gama de productos BlackBerry, la

complejidad para realizar estas aplicaciones confunden al

desarrollador.

Delimitación del Problema

Campo: Desarrollo de aplicaciones.

Área: Tecnología Móvil

Aspecto: Complejidad de desarrollo de aplicaciones para

tecnología móvil.

Tema: Interfaces gráficas para desarrollo de aplicaciones java en

BlackBerry, complejidad del desarrollo y propuesta de

ambiente de desarrollo gráfico.

Formulación de Problema.

Considerando los fundamentos planteados anteriormente se ha definido el

siguiente problema

¿Cómo reducir la complejidad de desarrollo de aplicaciones móviles para equipos

BlackBerry con tecnología RIM?

17
Evaluación del Problema

Actualmente al desarrollar una aplicación para java RIM solo se lo puede hacer

digitando líneas de código aun así solo tengamos que realizar una ventana de

muestra. Motivo por el cual se propone un aplicativo que me permita de una

manera dinámica, agradable y amigable desarrollar programas que se utilizara en

una aplicación java RIM para dispositivos móviles de BlackBerry.

Delimitado: Actualmente existen herramientas para el desarrollo de aplicaciones

java RIM para BlackBerry, entre estas tenemos las herramientas de java Research

In Motion, Plug-in para Eclipse Galileo, ambos programas solo brindan la una

interface en la que se debe ingresar líneas de código para el desarrollo del

programa, por lo cual no se tiene una visión del front-end, para ver estas

aplicaciones el GUI que se ofrecerá al usuario se debe ejecutar el código fuente y

ver la ejecución, esta acción provoca de retardos en el tiempo de entrega del

producto final.

Claro: El desarrollo de aplicaciones java RIM para BlackBerry difiere

considerablemente de los MDIlet (lenguaje de programación java para

dispositivos móviles) que se crean para los dispositivos móviles, esto implica que

el desarrollo de aplicaciones para el sistema operativo BlackBerry SO se haga de

una manera diferente donde las aplicaciones MDIlet no son suficientes para

cumplir con una tarea asignada o para realizar el uso correcto del dispositivo

18
Relevante: En lo que se refiere a dispositivos inteligente en la actualidad

predominan los sistemas operativos Android, IPHONESO, BlackBerry SO y

otros, motivo por el cual el desarrollo de aplicaciones para estos Sistemas

operativos merece un tratamiento diferente al lenguaje J2ME para el desarrollo de

aplicaciones MDIlet.

Contextual: Se desarrolló una herramienta que permitirá entender de mejor

manera como se encuentra estructurada una aplicación hecha para tecnología de

java RIM para dispositivos BlackBerry, para ello se desarrolla el código java

desde la interfaz de usuario de cómo se encuentran los objetos distribuidos en la

pantalla, y se muestra el código al programador .

Factible: El desarrollo de una aplicación java RIM para BlackBerry exige una

carga intelectual para el desarrollo de los Front-End. Motivo por el cual el

desarrollador debe tener conocimiento de los diferentes objetos y sus propiedades,

el programa que se desarrolló permite disminuir esta carga de conocimientos al

programador, para de esta manera centrarse en el desarrollo de la lógica del

aplicativo que se está implementando.

Identifica los productos esperados: Se desarrolló un sistema que ofrece un

entorno de diseño que permita usar de manera ágil y precisa los diferentes

elementos que se utilizan para la implementación de un sistema móvil de java

RIM para equipos BlackBerry, así también se busca disminuir la complejidad del

19
código facilitando el desarrollo de los programas y manipular las diferentes

propiedades de los objetos que se muestran en el aplicativo para el dispositivo

móvil.

Variable:

Independiente:

Interfaces Gráficas Para Desarrollo De Aplicaciones Java Para BlackBerry.

Esto permitirá desarrollar aplicaciones java para BlackBerry de manera amigable

y optimizaría el tiempo de desarrollo del mismo, reduciendo considerablemente

costos.

Dependientes:

Complejidad Del Desarrollo de Aplicaciones java Móvil.

El Desarrollo de aplicaciones java para móvil ha sido truncado debido a la poca

experiencia en este ambiente, lo cual hace que haya poco conocimiento de las

aplicaciones posibles a realizarse.

Implementación De Ambiente De Desarrollo Gráfico Para Java Móvil De

BlackBerry

Desarrollar un binario para que pueda ser cargado en los dispositivos BlackBerry

de manera dinámica y poder ser usado en un tiempo mínimo de desarrollo

20
Objetivos de la investigación:

Objetivos Generales:

 Disminuir la complejidad en el desarrollo de aplicaciones para dispositivos

móviles ya que actualmente se ejecuta mediante líneas de código lo cual

lleva a que la implementación de una solución para un Smartphone tome

un tiempo considerable en la codificación de la interfaz de usuario que en

la lógica implementada en la misma.

 Proveer una herramienta que facilite el diseño de interfaces de usuarios de

una manera amigable y mostrar en tiempo real como se esta presentación

la pantalla en móvil final para el usuario.

Objetivos Específicos:

 Elaborar una herramienta para el desarrollo de aplicaciones móviles

java para BlackBerry que permita la interacción intuitiva con lo

diferentes elementos que se encuentran en una aplicación de un

dispositivo móvil.

 Elaborar una solución que permita la optimización de los recursos que

posee el desarrollador disminuyendo su carga cognitiva para centrar

más su trabajo en el desarrollo lógico de los procesos del aplicativo.

 Evaluar el código que se genera por el diseño por el usuario,

evaluación de sintaxis de código ingresado por el usuario, conllevando

al correcto funcionamiento de las aplicaciones en el dispositivo

BlackBerry.

21
 Provee de una herramienta amigable e intuitiva para el desarrollo de

aplicaciones para que se reduzca considerablemente la complejidad en

el desarrollo de aplicaciones para los Smartphone.

 Interactuar entre las diferentes versiones de sistemas operativos que se

encuentran instalados en los dispositivos BlackBerry así como los

diferentes tipos de dispositivos habidos en el mercado.

Alcances

 Desarrollo de Herramienta con interfaz gráfica para creación de

aplicaciones java para dispositivos BlackBerry.

 Elaborar un entorno en el cual se muestren los diferentes elementos del

GUI que puede tener una aplicación java RIM para BlackBerry. Entre los

objetos que permitirá manipular se encuentran los siguientes:

 Etiqueta.

 Caja de Selección.

 Botón de Opción.

 Botón de acción.

 Lista de texto.

 Lista numérica.

 Texto de edición.

 Texto de solo lectura.

 Texto de auto búsqueda.

 Texto auto corregir.

22
 Texto auto completar.

 Campo de correo electrónico.

 Texto de contraseña.

 Texto de fecha.

 Campo web.

 Campo imagen.

 Campo mapa.

 Desarrollar un aplicativo que permita ubicar los diferentes objetos de una

aplicación java para BlackBerry.

 Establecer interacción con las diferentes propiedades de los diferentes

elementos que posee una aplicación java de BlackBerry.

 Diseñar código fuentes de aplicaciones javas para BlackBerry.

 Analizar modificaciones ingresadas por el desarrollador en el código

generador por el aplicativo.

 Elaborar una organización de los elementos no lineales sino en diferentes

áreas del área de desarrollo para mejorar el aspecto visual de las

aplicaciones.

 Elaborar una interfaz que permita a un desarrollador de aplicaciones sea

este novato o sénior el desarrollo del código de aplicaciones java RIM para

dispositivos BlackBerry.

 Relacionar los diferentes objetos de aplicaciones Java con objetos de

reconocimiento intuitivo.

23
 Permitir la modificación del código generado por el desarrollador para

poder implementar lógica de programación.

 Edición de Código fuente por medio de propiedades para incluir

funcionalidades.

 Generación de código java en archivos *.java para la implementación de la

aplicación final.

 Permitir la edición desde otros aplicativos sin que se vea afectado el

entrono gráfico desarrollado por el usuario.

 Generación de solución para importar en Eclipse.

 Permitir la generación directa en el código importado en el ambiente de

desarrollo de eclipse

 Permitir guardar el estado de la solución generada y abrirla para editar

Alcances y Limitaciones de la Investigación

Con fines metodológicos y de manejo del estudio, se ha considerado como

población de estudio, un grupo de desarrolladores que se encuentran en la

carrera de ingeniería en sistemas computacionales, personal que se encuentran

laborando en las empresas OutSoursing como consultores informáticos y que

posean conocimientos de desarrollo en tecnología java y conocimiento del

entorno de escritorio de Windows, desarrolladores en el área que no hayan

realizado estudios de ingeniería y que se encuentren laborando en empresas

como programadores, y que desarrollen aplicaciones para dispositivos

BlackBerry.

24
Se determinó que el estudio está orientado al ámbito de las personas que

desarrollan aplicaciones informáticas que buscan la manera de optimizar su

tiempo de desarrollo y no aplicar tiempo extendido en el desarrollo de las

aplicaciones gráficas para el cliente final.

El sistema se dividirá en 5 módulos principales que se detallan a continuación:

Módulo de creación inicial de solución a ser importado en Eclipse

Módulo de creación de interfaces graficas

Módulo de generación de archivos java

Módulo de verificación de información

Módulo de generación final de solución para eclipse

Módulo Creación Inicial de Solución a ser Importado en Eclipse

Genera el sistema de archivo inicial a ser importado en el proyecto de eclipse,

el sistema de archivos que contendrá la solución a ser importada, en este

módulo se solicita al usuario que ingrese el nombre del proyecto a ser

generado, así como el icono demostrativo que se implementara como icono de

aplicación en el dispositivo móvil, el nombre que se coloque aquí es el nombre

que se demostrara en el icono de la aplicación móvil.

Incluyen las validaciones correspondientes para el nombre de aplicativo, así

como también se restringe el tamaño del icono que se implementara en el

aplicativo, en el caso de no seleccionar algún icono se colocara el icono por

25
defecto que esta precargado en el aplicativo, en este módulo también se genera

la clase para poder ubicar los diferentes elementos en la pantalla del

dispositivos así como la clase inicial de la aplicación.

Módulo Creación de Interfaces Gráficas

En este módulo se muestra la interfaz gráfica que así como los objetos que

pueden ser incluidos en el aplicativo para el dispositivo BlackBerry, en este

módulo se permite la manipulación de los objetos, las propiedades de los

mismos y la inclusión de código de acción en los botones a ser utilizados, las

imágenes que se utilizaran en este módulo serán copiadas para el uso posterior

en el dispositivo BlackBerry.

Módulo Generación de Archivos Java

Genera el código java con el que se va a trabajar, cada pantalla corresponde a

una clase java que representa una pantalla en el dispositivo BlackBerry, así se

pueden desarrollar n ventanas y en el aplicativo se deberá incluir la llamada de

los mismos.

Módulo Verificación de Información

Permite una compilación de código generado, en el caso de que el usuario

haya ingresado un código erróneo se procederá a mostrar los errores

correspondientes, en el caso de que el código no tenga errores solo se

mostrarán las advertencias correspondientes

26
Módulo Generación Final de Solución para Eclipse

Genera la solución definitiva a ser utilizada en eclipse, se encarga de

recompilar los diferentes recursos que se han estado aplicando en el desarrollo

de la aplicación, así como las diferentes clases que se han generado en el

aplicativo.

Justificación e Importancia

Hace tiempo atrás las aplicaciones para dispositivos móviles eran desarrolladas

por las empresas propietarias de los mismos, dejando que estos sistemas sean solo

para funciones básicas de uso del cliente sin la opción de poder optimizar ese

código.

Con el pasar del tiempo y el avance de la tecnología se han optimizado los

desarrollos de las aplicaciones móviles, dejando así la oportunidad de optimizar

un equipo personalizando su software.

El desarrollo de las aplicaciones en los equipos móviles, por lo usual se realizan

con la tecnología del open source así como Java y C++, esto ha facilitado que la

adaptación de los códigos para los diferentes desarrolladores se haga de fácil

alcance, sin embargo el hecho de conocer el lenguaje le restringe en el hecho de

conocer las acciones que se pueden realizan en un dispositivo móvil.

27
Con la aparición de netbeans se pudo implementar el desarrollo de las

aplicaciones para dispositivos móviles a nivel de interface gráfica, sin embargo

este desarrollo no le daba al programador una perspectiva de cómo está quedando

la interfaz de usuario, esto causaba una reingeniería en el entorno gráfico cada vez

que sé que necesitaba ver la interfaz en el dispositivo y comprobar que se

ajustaban a las necesidades requeridas.

Con la aparición de los teléfonos inteligentes se ha visto la necesidad de tener

aplicaciones que se ajusten a los requerimientos de los dueños así como el utilizar

en todo lo posible las características que posea el equipo, en la mayoría de los

casos los aplicativos que se encuentran por defecto en los Smartphone no se

adaptan a los requerimientos de los dueños, poco después de este problema

hubieron programadores que se dedicaron al desarrollo de las aplicaciones para

los Smartphone.

Entre los diferentes dispositivos que se podían desarrollar se tenían, Simba.

Android, Windows Mobile, Java RIM, J2ME, IOS. El lenguaje Simba estaba

destinado a los dispositivos Nokia y Sony Ericsson en su mayoría, este sistema

ejecutaba aplicaciones en lenguaje C++, la herramienta de desarrollo que se podía

aplicar con este sistema operativo se encontraba en netbeans, con el pasar del

tiempo este sistema operativo móvil ha sido desplazado por los otros.

28
El lenguaje Java RIM es propio de los equipos BlackBerry, se ejecuta sobre la

tecnología J2ME, pero con más atributos, eventos y objetos que se encuentran en

un dispositivo BlackBerry.

El desarrollo de aplicaciones java RIM para dispositivos móviles BlackBerry se

está empleando mucho en los negocios que se encuentran en la actualidad, entre

los cuales podemos destacar entidades bancarias, negocios de ventas, negocios de

telecomunicaciones, importaciones, control de recursos, control de ingresos,

transacciones en línea, información, entre otras funcionalidades.

Entre las aplicaciones que se pueden encontrar en los dispositivos BlackBerry se

encuentran el manejo de mapas y ubicaciones, sistemas de conversiones de

monedas, sistemas de redes sociales, etc... Todos estos sistemas buscan sacar el

máximo provecho de las características del hardware que posee el equipo.

El desarrollo de aplicaciones para los equipos BlackBerry se ve algo estancado en

la actualidad ya que el desarrollo de estas aplicaciones no son explotadas, ya sea

por el poco conocimiento de código fuente, los eventos que se generan en las

aplicaciones, diferentes tipos de comunicación, almacenamiento, herramientas

adicionales, librerías, sitios web, etc., en el caso de conocer el código y los objetos

se hace tediosa la tarea de desarrollo de entorno gráfico para el gusto del usuario.

El desarrollo de las interfaces gráficas para los dispositivos BlackBerry hace que

29
el desarrollo de los sistemas para estos equipos se haga una labor tediosa y en su

mayoría les resta tiempo al desarrollador y logra dejar la lógica en segundo plano.

La solución propuesta tiene como finalidad disminuir la complejidad en el

desarrollo de aplicaciones móviles , con este fin se podrán realizar aplicaciones

para Smartphone de manera más dinámica y así se podrán optimizar los recursos y

disminuir los tiempos de desarrollo lo cual beneficiara de manera considerable a

los desarrolladores de sistemas así como a las empresas que venden sistemas

informáticos ya que implementando esta herramienta podrán entregar respuestas a

sus clientes finales dentro de un tiempo considerablemente corto y así poder

realizar más aplicaciones sin necesidad de dedicar demasiado tiempo en el

desarrollo de las interfaces de usuarios.

La solución también brindara la posibilidad de que el usuario no se vea atado a la

organización lineal que posee los objetos en los dispositivos BlackBerry, ya que

se brindara la posibilidad de colocar los objetos de la interfaz de manera que se

vea un trabajo más profesional.

A nivel administrativo permite mejorar los tiempos de desarrollo aumentando

productividad y disminuyendo gastos de tiempo y económicos en el área de

sistemas, así como establecer formatos sencillos de diseños de las interfaces y no

colocar varios objetos para obtener una solución amigable a primera vista.

30
A nivel educativo se benefician los estudiantes ya que con el avance de la

tecnología no solo se están desarrollando aplicaciones para computadores de

escritorios sino también para los dispositivos móviles que la mayoría se ejecutan

con lenguaje java, de esta manera se pueden desarrollar nuevos métodos de

enseñanza que estarían orientados a estas nuevas tecnologías.

A nivel personal permite que los programadores se familiaricen con las

aplicaciones de los dispositivos BlackBerry, y desarrollar aplicaciones sencillas

sin mucho conocimiento del lenguaje de programación Java RIM.

A nivel profesional permite tener los objetos de las aplicaciones de una manera

ordenada y permite el uso intuitivo que el desarrollador quiera implementar.

Permitiendo a los usuarios finales un mejor control de su tiempo al tener los

objetos ordenados de manera tal que no se le complique la lectura de la

información contenida en la aplicación.

31
CAPÍTULO II

MARCO TEÓRICO

Antecedentes del Estudio

Con el desarrollo de la tecnología tanto a nivel de hardware como de software se

ha ido realizando avances en las herramientas de diseños de los programas, esto

ha dado paso a que los lenguajes de programación sean complementados con

ambientes de desarrollo, esto brinda a los programadores la facilidad de desarrollo

de los sistemas de una manera amigable, optimizando el tiempo de desarrollo de

los mismos.

En año 1998 se dio a conocer NetBeans que en conjunto con Visual Studio que

permiten el desarrollo de aplicaciones de escritorio con el adicional de que

permite interactuar con los objetos gráficos de los GUIs de manera amigable, las

empresas desarrolladoras de dispositivos móviles lanzan sus sistemas para

desarrollos de sistemas como por ejemplo, Windows, BlackBerry, posterior

IPhone y Android.

Para ello veremos en profundidad lo que es NetBeans y como ha ido

evolucionando este IDE. NetBeans comenzó como un proyecto estudiantil en la

República Checa (originalmente llamado Xelfi), en 1996. La meta era escribir un

entorno de desarrollo integrado (IDE) para Java parecido a Delphi. Xelfi fue el

primer IDE escrito en Java.

32
El plan original era desarrollar unos componentes JavaBeans para redes. Jarda

Tulach, quien diseñó la arquitectura básica de la IDE, propuso la idea de llamarlo

NetBeans, a fin de describir este propósito. Cuando las especificaciones de los

Enterprise JavaBeans salieron, decidieron trabajar con este estándar, ya que no

tenía sentido competir contra él, sin embargo permaneció el nombre de NetBeans.

En la primavera de 1999, Netbeans DeveloperX2 fue lanzado, soportando Swing.

Las mejoras de rendimiento que llegaron con el JDK 1.3, lanzado en otoño de

1999, hicieron de NetBeans una alternativa realmente viable para el desarrollo de

herramientas. En el año de 1999, el equipo trabajó duro para rediseñar

DeveloperX2 en un NetBeans más modular, lo que lo convirtió en la base de

NetBeans hoy en día.

Con NetBeans 3.5 se mejoró enormemente en desempeño, y con la llegada de

NetBeans 3.6, se re implementó el sistema de ventanas y la hoja de propiedades, y

se limpió enormemente la interfaz. NetBeans 4.0 fue un gran cambio en cuanto a

la forma de funcionar del IDE, con nuevos sistemas de proyectos, con el cambio

no solo de la experiencia de usuario, sino del reemplazo de muchas piezas de la

infraestructura que había tenido NetBeans anteriormente. NetBeans IDE 5.0

introdujo un soporte mucho mejor para el desarrollo de nuevos módulos, el nuevo

constructor intuitivo de interfaces Matisse, un nuevo y rediseñado soporte de

CVS, soporte a Sun ApplicationServer 8.2, Weblogic9 y JBoss 4.

33
Con Netbeans 6.01, 6.8 y ahora en su versión mejorada 7.0 Se dio soporte a

framework comerciales como son Struts, Hibernate. Durante el desarrollo del

NetBeans IDE ocurrió una cosa interesante. La gente empezó a construir

aplicaciones usando el NetBeans core runtime con sus propios plug-ins, de hecho,

esto se convirtió en un mercado bastante grande.

El IDE NetBeans posee 20000000 de líneas de código

“Elbuen código es su mejor documentación. Cuando esté a


punto de añadir un comentario, pregúntese: "¿Cómo puedo
mejorar el código para que este comentario no sea
necesario?”(Steve McConnell)

EL IDE de eclipse se desarrolló en noviembre del 2001 y apareció con reemplazo

del sistema visual Age de IBM. Eclipse cuenta con un editor de texto con

resaltado de sintaxis, la compilación es de tiempo real y cuenta con pruebas

unitarias JUnit,

Así eclipse brinda la siguiente arquitectura:

 Plataforma Inicial

 Plataforma de Bulding estándar

 Un wodget toolkit portable

 Manejo de Archivo

 Manejo de Texto

 Vistas

 Editores

 Asistentes y perspectiva.

34
Visual Studio es un IDE que soporta varios lenguajes de programación entre ellos

se encuentran Visual C++, Visual C#, Visual J#, ASP.NET, y Visual Basic .NET,

aunque en la actualidad se están desarrollando nuevas interfaces para otros

lenguajes así como el lenguaje nativo de Kinect para desarrollo de sensores, etc.

En visual estudio se pueden desarrollar aplicaciones que se comuniquen entre

estaciones de trabajo, páginas web y dispositivos móviles.

El lenguaje Visual Basic en si significa Visual = entorno Visual.

Basic=Beginnes´s All-purpose Symbolic Instruction Code que en español diría

Códigos de Instrucciones de uso universal para principiantes, Basic es un lenguaje

de programación que actúa como un intérprete entre el operador y el computador.

La versión Original de BASIC fue creada en el año de 1964, esta aplicación gano

gran popularidad por los sistemas Tiny BASIC y Microsoft BASIC.

Anteriormente BASIC se manejaba de manera modular pero con la aparición de

visual .net se empezó a manejar más orientado a objetos, así mismo también se

permite el uso de servicios web así como ambiente web en las aplicaciones de

Visual Basic.NET.

En mayo de 1991 se mostró Visual Basic 1.0

Con Visual Basic los desarrolladores pueden implementar aplicaciones en un

ambiente intuitivo y gráfico, simplemente con arrastrar controles sobre el

formulario, esto hizo posible que los programadores profesionales aumenten su

productividad.

35
“El futuro de .net está ligado al futuro de Windows, y este a
su vez está ligado a de sus usuarios, a cuántos comprarán el
móvil, Tablet, ultra portátil” (Juan Quijano)

De acuerdo con los estudios realizados las aplicaciones existentes que son RIM de

propiedad de la empresa BlackBerry para el desarrollo de aplicaciones, el IDE

BlackBerry para eclipse brindan la facilidad de poder realizar aplicaciones para

dispositivos java, pero en estos casos no se brinda una interfaz gráfica para el

desarrollo de las aplicaciones, lo cual provoca que los desarrolladores se dediquen

a realizar investigaciones, que en la mayoría de los casos no cumple con las

expectativas o no se cuenta con la información solicitada o se muestra una

información que no cumple con lo buscado, como instancia necesaria se recurre a

la consulta a los desarrolladores de a propia empresa BlackBerry, lo cuales no

contestan al requerimiento en un tiempo prudencial, en otros casos no contestan y

esto provoca retraso en los proyectos, en otros casos se desarrollan aplicaciones

en HTML5 pero el problema de esta solución es que se depende de la conexión a

internet en la mayoría de los casos.

FUNDAMENTACIÓN TEÓRICA

Java J2ME

La tecnología J2ME (Java 2da Micro Edition), es el versionamiento de java que se

puede utilizar en los diferentes dispositivos móviles así como teléfonos,

36
reproductores blue-ray, dispositivos multimedia, entre otros, debido a la

flexibilidad y las rapidez, esta librería se ha convertido en la fuente para el

desarrollo de los diferentes sistemas operativos móviles que se encuentran en el

mercado actual.

La tecnología J2ME se desarrolló para poder adaptarse a las limitaciones que se

presentan en los diferentes dispositivos móviles, de esta manera se aprovecha al

máximo las capacidades de memoria, visualización y potencia limitadas que se

presentan en los estos equipos, la mayoría de estos dispositivos son inalámbricos,

por ello esta tecnología trabaja con las diferentes conectividad móviles.

Java Micro Edición es una nueva versión de la máquina virtual de java que puede

ejecutarse en pequeños dispositivos, esta tecnología apareció debido a las

necesidades de los usuarios de telefonía móvil así como las compañías que

desarrollan aplicativos, se estaban comenzando a orientar a la programación para

los dispositivos móviles.

GRÁFICO No. 1
Java 2 micro Edition

37
Fuente. Java a Tope. J2ME de Sergio Gálvez Rojas y Lucas Ortegas Díaz
Elaborado Por: Java a Tope. J2ME de Sergio Gálvez Rojas y Lucas Ortegas Díaz

Un punto importante es que Java Micro Edition contiene una mínima parte de los

APIs de Java, esto es debido a que las APIs de java ocupa 20 MB, y los

dispositivos móviles cuentan con una capacidad limitada de memoria, en concreto

J2ME utiliza 31 clases de plataforma J2SE (Java 2 Standard Edition). La máquina

virtual que utiliza J2ME no es la clásica JVM (Java Virtual machine), esta es

dominada KVM (K Virtual Machine).

KVM

La KVM(Kilobyte Virtual Machine) consume entre 40 y 80 K de código en la

configuración estándar, dependiendo de la plataforma y las opciones de

compilación, adicional a ello el uso de memoria utiliza objetos pequeños, requiere

solo unos kilobytes de memoria dinámica para ejecutar con eficiencia, por este

punto se puede ejecutar en dispositivos que cuenten con 128kb de memoria

38
dinámica, la máquina virtual K ofrece una alta portabilidad que reduce las

dependencias del sistema en lo mínimo, incluye funciones multihilos y

procesamiento de archivos basura que se aplican independientemente del sistema.

La desventaja que se presenta con la KVM es que debido al uso bajo de memoria,

se obvian algunas funcionalidades que con una Java Virtual Machine no se

presenta como por ejemplo:

 No hay soporte para variables de coma tipo flotante.

 No hay soporte para el JNI(Java Native interface) debido al consumo de

memoria

 No existen clases definidas por el usuario, solo clases predefinidas.

 No permiten grupos de hilos daemon, solo permite usar hilos en colección.

 No existe finalización de las clases.

 No hay referencias débiles.

 No existe la posibilidad de personalización de las excepciones.

Los diferentes componentes que componen Java micro Edition son:

 Una serie de máquinas virtuales Java con diferentes requisitos orientados a

diferentes dispositivos móviles.

 Perfiles que son bibliotecas java dirigidas a familias de dispositivos con

más recursos, para la implementación de funcionalidades de más alto

nivel.

 Paquetes opcionales de programación.

39
 Configuraciones. Que son un conjunto de clases básicas orientadas a

conformar el núcleo de las implementaciones para dispositivos móviles de

características específicas, existe 2 tipos de configuración.

o Connection Connected Limited Device Configuration (CLDC)

o Connected Device Configuration (CDC)

Connected Limited Device Configuration (CLDC)

Es una especificación de un marco para las aplicaciones Java Micro Edition que

describen el conjunto básico de las bibliotecas y las características de la máquina

virtual que deben estar presentes en una aplicación. La Connected Limited Device

Configuration se combina con uno o varios perfiles para dar a los desarrolladores

una plataforma para la creación de aplicaciones en los dispositivos embebidos con

recursos muy limitados, tales como buscapersonas y teléfonos móviles.

GRÁFICO No. 2
Pre verificación de Clases en CDLC/KVM

Fuente: Java a Tope. J2ME de Sergio Gálvez Rojas y Lucas Ortegas Díaz
Elaborado Por: Java a Tope. J2ME de Sergio Gálvez Rojas y Lucas Ortegas Díaz

Connected Device Configuration (CDC)

40
Esta es una especificación realizada por Sun dentro del conjunto de tecnologías

para computación móvil conocido como J2ME (Java 2 Mobile Edition). Define

las capacidades básicas que debe tener un dispositivo móvil con capacidad de

conexión y cuya potencia de computación se encuentra entre la de un teléfono o

PDA, con cierta capacidad como un sistema de navegación GPS para automóvil,

un DVR, PVR o un aparato para navegar por Internet.

GRÁFICO No 3.
Relaciones APIs de Java.

Fuente: Java a Tope. J2ME de Sergio Gálvez Rojas y Lucas Ortegas Díaz
Elaborado Por: Java a Tope. J2ME de Sergio Gálvez Rojas y Lucas Ortegas Díaz

CVM

La CVM (Compact Virtual Machine) es la máquina virtual java para CDC y

soporta las mismas características que la máquina virtual para de J2SE, está

orientado a dispositivos de 32 bits con memoria mínima de 2 MB de RAM, entre

las diferentes características que se presenta con esta máquina virtual tenemos:

 Sistema de memoria avanzada.

 Tiempo de espera bajo para limpieza.

 Separación completa de la máquina virtual de sistema de memoria.

 Limpieza de variables modularizado.

41
 Portabilidad.

 Sincronización veloz.

 Ejecución de clases en memoria RAM.

 Soporte e interfaces de servicios de sistema en tiempo real.

 Conversión de hilos java a hilos nativos.

 Soporte para características de java 2 y java 1.3

 Librerías de seguridad.

 Interface nativa de java (JNI).

 Invocación remota de métodos(RMI

 Interfaz de depuración de la máquina virtual.

RIM

Research In Motion o como mejor se la conoce BlackBerry, es una compañía

radicada en Canadá dedicada al desarrollo de dispositivos electrónicos, su cede se

encuentra en Waterloo, Ontari, además de oficinas en Norteamérica, euro, la

región de Asia y el pacifico, RIM comenzó como desarrollador en el año 1995

con un capital de 5 millones de dólares canadienses donados por Instituciones

Canadienses de Capitales.

En sus comienzos RIM era conocida como RAM Mobile Data y en compañía con

Ericsson desarrollaron la tecnología inalámbrica llamada Mobitex. Con

características como paginación y envió de correos, desde agosto del 2000 se ha

dedicado a desarrollador diferentes dispositivos compatibles con tecnología GSM

42
y CDMA, con el mejoramiento de la tecnología también se fueron incluyendo

funcionalidades como soporte para HSPDA, UMTS, EDGE y 3G.

Research In Motion desarrollo su propio software para sus dispositivos usando

lenguajes C++ y java, estas librerías son un conjunto de componentes que junto.

Con Java Micro Edition colocan en funcionamiento los diferentes aplicativos

embebidos en el equipo BlackBerry. A medida que ha ido presentándose nuevas

versiones de la librería de java se han ido agregando más funcionalidades

orientadas a la nube (internet).

NET_RIM_API

La librería net_rim_api es un conjunto de clases que permiten interactuar con las

diferentes características de los equipos BlackBerry, permitiendo la generación de

aplicativos que se ejecutan en los dispositivos móviles de una manera ágil y

ligera, también se incluye las características de comunicación, geo localización y

otras ventajas que permiten al desarrollador la creación de programas para las

diferentes versiones de equipos que hay en el mercado.

"Siempre he deseado que mi equipo sea tan fácil de usar como


mi teléfono, mi deseo se ha hecho realidad porque ya no puedo
encontrar la manera de usar mi teléfono." (Bjarne Stroustrup)

LENGUAJE DE PROGRAMACIÓN

Un lenguaje de programación se puede usar para crear programas que controlen el

comportamiento físico o lógico de la máquina, para ejecutar algoritmos con

43
precisión. Un lenguaje de programación contiene reglas sintácticas y semánticas

con el cual se escribe, se prueba, se depura y se compila.

Para desarrollar programas informáticos se tiene 2 ideologías que son imperativas

y declarativas.

Programación Imperativa

La programación imperativa es un paradigma de programación que define a la

programación en términos del estado del programa y sentencias, estas indican al

computador como realizar una tarea.

Lenguaje Imperativo.

Los lenguajes imperativos de alto nivel usan variables y sentencias más

complejas, pero aún siguen el mismo paradigma, a pesar de no ser programas de

computadora, son también conceptos familiares similares en estilo a la

programación imperativa; cada paso es una instrucción, y el mundo físico guarda

el estado.

Programación Declarativa

Una programación declarativa está basada en el desarrollo de programas

especificando un conjunto de condiciones, preposiciones, restricciones,

44
ecuaciones o transformaciones que describen el problema y detallan su solución,

en esta programación se desarrollan flujos de trabajo que son interpretados por la

máquina. No existen asignaciones destructivas, y las variables son utilizadas con

Transparencia referencial, los programas informáticos se dividen en dos grandes

grupos, software de sistemas y software de aplicación.

El software de sistemas son programas informáticos que sirven para controlar o

interactuar con el sistema operativo, controlando al hardware y dando soporte a

otros sistemas. Estos programas realizan diversas tareas, como la transferencia de

datos entre la memoria RAM y los dispositivos de almacenamiento (disco rígido,

unidades de discos ópticos, etc.) entre otros.

El software de aplicación es aquel que realiza una tarea determinada, este software

de puede utilizar en cualquier instalación informática, dependiendo de la tarea por

la cual sea creada, así como por ejemplo, tareas de negocios, utilerías, personales,

entre otros.

LENGUAJE MAQUINA

El lenguaje de maquina es el conjunto de códigos que han sido llevados de texto a

código binario. Este lenguaje está compuesto por un conjunto de instrucciones que

45
determinan acciones a ser tomadas por la máquina. Estas instrucciones son

normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados

por el propio programa o eventos externos. El lenguaje de máquina es específico

de cada máquina o arquitectura de la máquina, aunque el conjunto de

instrucciones disponibles pueda ser similar entre ellas.

APLICACIONES

Los software de aplicaciones dividen en cuatro categorías:

 Aplicaciones de Negocio.

 Aplicaciones de Utilería.

 Aplicaciones Personales.

 Aplicaciones de Entretenimiento.

Aplicaciones de Negocio.- Son aplicaciones que se utilizan más en empresas, ya

que brindan las facilidades de obtener reportes, realizar cálculos, documentar, etc.

Entre las más comunes encontramos procesadores de palabras, hojas de cálculo,

sistemas de bases de datos y graficado res, el ejemplo más común que podemos

encontrar en el paquete de Office de Microsoft o el paquete de Open Office de

GNU

Aplicaciones de Utilería.- Ayudan a dar mantenimiento a los sistemas así como a

la computadora en sí, entre estos sistemas podemos encuentras los accesorios de

46
Windows así como por ejemplo tenemos, el teclado, pantalla compartida, ventana

de comandos, lupa, captura de pantallas, asistencia remota, entre otras.

Aplicaciones Personales.-Son aplicaciones que permiten a los usuarios llevar un

control de sus actividades, así como tener una organización de sus tareas ,

contactos, gastos, además permiten mantener una agenda de direcciones y

calendario de citas, hacer operaciones bancarias, enviar correo electrónico y

conectarte a servicios informáticos que ofrecen grandes bases de datos de

información valiosa.

Aplicaciones de Entretenimiento.- Son aplicaciones desarrolladas con el fin

entretener. En esta categoría ingresan los videojuegos de galería, simuladores de

vuelo, juegos interactivos de misterio y rompecabezas difíciles de solucionar.

Muchos programas educativos pueden ser considerados como software de

entretenimiento. Estos programas pueden ser excelentes herramientas para la

educación.

A los sistemas que ejecutan tareas en paralelo se le conoce como multitarea.

GRÁFICO No. 4
INTERFACES GRÁFICAS

47
Fuentes: http://www.hipertexto.info/documentos/interfaz.htm
Elaboración http://www.hipertexto.info/documentos/interfaz.htm

La interfaz gráfica GUI (Graphical User Interface) es un programa que

interactúa con la interfaz de usuario, usando objetos gráficos para representar

la información y acciones disponibles en la interfaz. Su principal uso, consiste

en proporcionar un entorno visual sencillo para permitir la comunicación con

el sistema operativo de una máquina o computador.

La interfaz de usuario es el medio que utiliza el usuario para interactuar de

manera amistosa con el computador.

Entre los principales elementos de la interfaz de usuario tenemos:

 Menú

 Ventana

 Teclado

 Ratón

Existen 3 tipos de interfaces de usuarios:

48
Interfaz de hardware.- Son las interfaces de entrada y salida, aquí encontramos

puertos seriales, puertos paralelos, USB, tarjeta para los buses ISA y PCI, tarjeta

de red, protocolos top/ir, etc.

Interfaz de Software.- Es la que procesa los datos que el usuario requiera entre

ella tenemos las herramientas de negocio, personales, de entretenimiento y utilería

Interfaz de Hardware y software.-Es el que establece un puente entre la máquina

y las personas, permite a la máquina entender la instrucción y al hombre entender

el código binario traducido a información legible

Habitualmente las acciones se realizan mediante manipulación directa, para

facilitar la interacción del usuario con la computadora. Surge como evolución de

las interfaces de línea de comandos que se usaban para operar los primeros

sistemas operativos y es pieza fundamental en un entorno gráfico. Como ejemplos

de interfaz gráfica de usuario, cabe citar los entornos de escritorio Windows, el X-

Windows de GNU/Linux o el de Mac OS X, Aqua.

Una interfaz es un dispositivo que permite comunicar dos sistemas que no hablan

el mismo lenguaje. Restringido a aspectos técnicos, se emplea el término interfaz

para definir el juego de conexiones y dispositivos que hacen posible la

comunicación entre dos sistemas, sin embargo, cuando hablamos de interfaz nos

referimos a la cara visible de los programas tal y como se presenta a los usuarios

49
para que interactúen con la máquina. La interfaz gráfica implica la presencia de un

monitor de ordenador o pantalla constituida por una serie de menús e iconos que

representan las opciones que el usuario puede tomar dentro del sistema.

Las características básicas de una buena interfaz podrían sintetizarse en:

 Facilidad de comprensión, aprendizaje y uso

 Representación fija y permanente de un determinado contexto de acción

(fondo)

 El objeto de interés ha de ser de fácil identificación

 Diseño ergonómico mediante el establecimiento de menús, barras de

acciones e iconos de fácil acceso

 Las interacciones se basarán en acciones físicas sobre elementos de

código visual o auditivo (iconos, botones, imágenes, mensajes de texto o

sonoros, barras de desplazamiento y navegación...) y en selecciones de

tipo menú con sintaxis y órdenes

 Las operaciones serán rápidas, incrementales y reversibles, con efectos

inmediatos

 Existencia de herramientas de Ayuda y Consulta

 Tratamiento del error bien cuidado y adecuado al nivel de usuario

Para diseñar una buena interfaz enfocada hacia el usuario es necesario tener claros

los objetivos del hipertexto, teniendo en cuenta no sólo lo que se persigue

ofreciendo información, sino las necesidades que van a tener los usuarios a la hora

50
de consultarlo. También es clave determinar el contenido y la funcionalidad,

especificar la estructura organizativa, la navegación, las secciones y los sistemas

de búsqueda.

Hay que tener en cuenta que cada usuario puede tener diferentes necesidades y un

buen sistema de navegación debe contar con las herramientas adecuadas para

diferentes funciones. Como cada usuario pude tener diferentes necesidades, es

importante ofrecer diferentes formas de acceso y búsqueda, desde búsquedas

precisas, hasta exploraciones guiadas o a elección del lector.

El diseñador de interfaces debe facilitar y simplificar el acceso y los recorridos de

los usuarios. A menudo se usa la metáfora del viaje o del camino a recorrer y se

presentan iconos o símbolos de interfaz y otros dispositivos que tienen que ver

con las señales utilizadas en mapas, urbanismo o arquitectura.

Un buen hipertexto debe suministrar herramientas de uso sencillo y fácil para que

el usuario sepa en todo momento en dónde se encuentra y hacia dónde puede ir, y

herramientas para que pueda realizar una serie de acciones como búsquedas,

ponerse en contacto con otros usuarios, participar en un foro de debate, etc.

Algunas de estas herramientas útiles para la navegación y que deben mostrarse en

la interfaz de usuario son las siguientes:

51
 Herramientas de representación de la estructura de la información

documental: Se trata de representar la estructura de los nodos más

amplios o genéricos que contienen las diferentes partes o nodos

específicos, de forma similar a las secciones, capítulos, etc. de un texto.

 Herramientas de navegación: es necesario representar de forma visual y

gráfica el conjunto de la red hipertextual. Para ello, son muy útiles los

mapas de navegación que funcionan a modo de brújula para ayudar al

usuario a moverse por el hipertexto. La información se presenta como

nodos dentro de una red en la que una idea lleva a otra y está a otra

diferente. Sin embargo, el sistema sería un caos si no existieran formas de

organizar la información en una forma lógica y con posibilidad de conocer

en todo momento dónde se está y cómo se ha llegado.

 Herramientas que posibiliten guardar y almacenar la dirección y

localización de los documentos a los que se ha accedido, mediante el

registro de marcas, favoritos o bookmarks, para su posterior acceso

directo.

 Herramientas que permitan definir los enlaces con indicación del

punto de destino: el usuario debe poder visualizar el destino o destinos

posibles de cualquier enlace para saber hacia dónde se desplazará en caso

de optar por esa conexión.

52
 Herramientas que permitan la creación de un histórico de

Navegación: para que el usuario pueda tener constancia del camino

recorrido tanto sobre la red de documentos como sobre la red semántica, y

poder así volver en cualquier momento, sobre algún paso del camino

recorrido.

 Herramientas para la recuperación de la información: se pueden

incluir buscadores y otras herramientas de búsqueda y consulta tanto

dentro de la propia red hipertextual como en el resto de la web. Estas

herramientas permiten la construcción de documentos dinámicos creados a

partir de las propias acciones del usuario, que pueden contar con la ayuda

de agentes inteligentes.

 Herramientas que permitan que el usuario participe en la creación

del conocimiento en un entorno colaborativo. Estas herramientas

permitirán la interacción entre el autor del hipertexto y el usuario o entre

varios usuarios, o incluso, que el usuario contribuya al contenido del

hipertexto directamente. El usuario puede participar en el contenido del

hipertexto haciendo comentarios y anotaciones ya sea en línea o por correo

electrónico, es posible iniciar una discusión, es posible añadir contenidos o

añadir enlaces mientras se lee, individualmente o en colaboración.

53
 Mecanismos de búsqueda y recuperación de la información

Los mecanismos de búsqueda que faciliten el acceso, la búsqueda y la

recuperación de la información, son herramientas básicas en un hipertexto

para completar la navegación por el espacio de la información

hipertextual. En muchos casos, el usuario no busca navegar, sino acceder a

la información de forma directa.

Para realizar la búsqueda, se siguen estos pasos:

 el usuario introduce uno o más términos de búsqueda;

 el sistema busca los términos por medio de índices y otros

mecanismos;

 el sistema responde mostrando los resultados.

Para llevar a cabo este proceso se necesita, además de establecer tanto

interfaces de consulta como de respuesta adecuada, establecer los mecanismos que

hagan posible esta labor. La presentación de resultados puede ser muy variada: el

sistema devuelve la primera ocurrencia del término, una lista de ocurrencias o

puede integrar los resultados de la búsqueda en el mapa del hiperdocumento,

resaltando los nodos en los que aparece el término buscado.

Una herramienta muy útil es el empleo de metáforas o la utilización de conceptos

y modelos del mundo real, con los cuales los usuarios estén familiarizados, para

representar información digital y hacer que el documento sea más comprensible.

Se trata de representaciones analógicas por medios digitales. La utilización de

54
tarjetas o fichas, o el dibujo de páginas para representar documentos, el uso de

archivadores para simbolizar los directorios, papeleras y demás artículos de

escritorio, el empleo de una lupa para simbolizar la búsqueda, la interrogación

para la ayuda, el buzón o la carta para el correo electrónico, la casa para la página

principal o de inicio, una puerta para la salida, etc. han sido y son algunas de las

metáforas más utilizadas.

GRÁFICO No. 5
Metáforas

Fuente: http://www.hipertexto.info
Elaborado Por: http://www.hipertexto.info

Las técnicas para el diseño y navegabilidad de un hipertexto son muchas y

variadas. Pero hay 3 reglas básicas importantes:

 proveer un foco inicial para la llamar la atención del usuario

 dirigir la atención a los ítems importantes, secundarios o periféricos

 asistir a la navegación a través del material presentado

El principal objetivo de una interfaz de usuario es que éste se pueda comunicar a

través de ella con algún tipo de dispositivo. Conseguida esta comunicación, el

segundo objetivo que se debería perseguir es el de que dicha comunicación se

pueda desarrollar de la forma más fácil y cómoda posible para el usuario.

También es importante reconocer las interfaces de línea de comandos, como el

mejor medio para que el administrador del sistema pueda llevar a cabo tareas

complejas

55
Además, no todo se puede hacer a través de la interfaz gráfica: hay ciertas

funciones para usuarios avanzados y administradores a las que sólo es posible

realizarlas mediante comandos.

El diseño de la interfaz es crítico para el manejo del equipo: hay algunas muy bien

diseñadas que incorporan controles intuitivos y de fácil manejo, en cambio existen

otras que no se entienden bien y el usuario no acierta a manejarlas correctamente

sin estudiar un manual o recibir formación del experto.

Desarrollo de Aplicaciones.

Para desarrollar aplicaciones informáticas se necesita seguir los pasos de

•Análisis.

•Diseño.

•Codificación-construcción.

•Implantación-explotación.

•Mantenimiento.

Análisis.

En esta fase se establece el producto a desarrollar, siendo necesario especificar los

procesos y estructuras de datos que se van a emplear. Debe existir una gran

comunicación entre el usuario y el analista para poder conocer todas las

necesidades que precisa la aplicación

56
En el caso de falta de información por parte del usuario se puede recurrir al

desarrollo de prototipos para saber con más precisión sus requerimientos.

En el análisis estructurado se pueden emplear varias técnicas como:

Diagramas de flujo de datos: Sirven para conocer el comportamiento del sistema

mediante representaciones gráficas.

Modelos de datos: Sirven para conocer las estructuras de datos y sus

características. (Entidad relación y formas normales).

Diccionario de datos: Sirven para describir todos los objetos utilizados en los

gráficos, así como las estructuras de datos.

Definición de los interfaces de usuario: Sirven para determinar la información

de entrada y salida de datos.

Al final de esta fase tenemos que tener claro las especificaciones de la aplicación.

Diseño

En esta fase se alcanza con mayor precisión una solución óptima de la aplicación,

teniendo en cuenta los recursos físicos del sistema y los recursos lógicos. (Sistema

operativo., programas de utilidad, bases de datos, etc.…)

En el diseño estructurado se pueden definir estas etapas:

Diseño externo: Se especifican los formatos de información de entrada y salida.

(Pantalla y listados)

Diseño de datos: Establece las estructuras de datos de acuerdo con su soporte

físico y lógico. (Estructuras en memoria, ficheros y hojas de datos)

57
Diseño modular: Es una técnica de representación en la que se refleja de forma

descendente la división de la aplicación en módulos. Está basado en diagramas de

flujo de datos obtenidos en el análisis.

Diseño procedimental: Establece las especificaciones para cada módulo,

escribiendo el algoritmo necesario que permita posteriormente una rápida

codificación.

Al final de esta etapa se obtiene el denominado cuaderno de carga.

Desarrollo

Consiste en traducir los resultados obtenidos a un determinado lenguaje de

programación, teniendo en cuenta las especificaciones obtenidas en el cuaderno de

carga. Se deben de realizar las pruebas necesarias para comprobar la calidad y

estabilidad del programa.

Las pruebas se pueden clasificar en:

Pruebas unitarias: Sirven para comprobar que cada módulo realice bien

su tarea.

Pruebas de interconexión: Sirven para comprobar en el programa el buen

funcionamiento en conjunto de todos sus módulos.

Pruebas de integración: Sirven para comprobar el funcionamiento

correcto del conjunto de programas que forman la aplicación. (El

funcionamiento de todo el sistema)

58
Implementación

En esta fase se realiza la implantación de la aplicación en el sistema o sistemas

físicos donde van a funcionar habitualmente y su puesta en marcha para

comprobar el buen funcionamiento.

Actividades a tener en cuenta o realizar:

 Instalación del/los programa/s.

 Pruebas de aceptación al nuevo sistema.

 Conversión de la información del antiguo sistema al nuevo

 Eliminación del sistema anterior.

Al final de esta fase se debe de completar la información al usuario respecto al

nuevo sistema y su uso. Así como facilitarle toda la documentación necesaria para

una correcta explotación del sistema (manual técnico, manual de usuario, etc.)

Mantenimiento.

Esta es la fase que completa el ciclo de vida y en ella nos encargaremos de

solventar los posibles errores o deficiencias de la aplicación. Existe la posibilidad

de que ciertas aplicaciones necesiten reiniciar el ciclo de vida.

Tipos de mantenimiento:

Mantenimiento correctivo: Consiste en corregir errores no detectados en

pruebas anteriores y que aparezcan con el uso normal de la aplicación.

Mantenimiento adaptativo: Consiste en modificar el programa a causa de

cambio de entorno gráfico y lógico en el que estén implantados.

59
Mantenimiento perfectivo: Consiste en una mejora sustancial de la aplicación

al recibir por parte de los usuarios propuestas sobre nuevas posibilidades y

modificaciones de las existentes.

Los tipos de mantenimiento adaptativo y perfectivo reinician el ciclo de vida,

debiendo proceder de nuevo al desarrollo de cada una de sus fases para obtener un

nuevo producto.

Java.

Java es un lenguaje de programación y la primera plataforma informática creada

por Sun Microsystems en 1995. Esta herramienta permite el desarrollo de

aplicaciones como herramientas, juegos y aplicaciones de negocios.

"Java es, en muchos sentidos, C++-" (Michael Feldman)

La plataforma Java es el nombre de un entorno o plataforma de computación

originaria de Sun Microsystems, capaz de ejecutar aplicaciones desarrolladas

usando el lenguaje de programación Java u otros lenguajes que compilen a

bytecode y un conjunto de herramientas de desarrollo. En este caso, la plataforma

no es un hardware específico o un sistema operativo, sino más bien una máquina

virtual encargada de la ejecución de las aplicaciones, y un conjunto de bibliotecas

estándar que ofrecen una funcionalidad común

60
ByteCode

El bytecode es un código intermedio más abstracto que el código máquina.

Habitualmente es tratado como un fichero binario que contiene un programa

ejecutable similar a un módulo objeto, este fichero intermedio contiene código de

máquina.

El bytecode recibe su nombre porque usualmente cada código de operación tiene

una longitud de un byte, si bien la longitud del código de las instrucciones varía.

Cada instrucción tiene un código de operación entre 0 y 255 seguido de

parámetros tales como los registros o las direcciones de memoria. Esta sería la

descripción de un caso típico, si bien la especificación del ByteCode depende

ampliamente del lenguaje.

Máquina Virtual

Una máquina virtual es un software que emula a una computadora y puede

ejecutar programas como si fuese una computadora real. Este software en un

principio fue definido como "un duplicado eficiente y aislado de una máquina

física". La acepción del término actualmente incluye a máquinas virtuales que no

tienen ninguna equivalencia directa con ningún hardware real.

Una característica esencial de las máquinas virtuales es que los procesos que

ejecutan están limitados por los recursos y abstracciones proporcionados por ellas.

Estos procesos no pueden escaparse de esta computadora virtual.

Existen 2 tipos de máquinas virtuales.

61
Máquinas Virtuales de Sistemas.

Las máquinas virtuales de sistema, también llamadas máquinas virtuales de

hardware, permiten a la máquina física subyacente multiplicarse entre varias

máquinas virtuales, cada una ejecutando su propio sistema operativo. A la capa de

software que permite la virtualización se la llama monitor de máquina virtual .Un

monitor de máquina virtual puede ejecutarse o bien directamente sobre el

hardware o bien sobre un sistema operativo.

Máquina Virtual de Proceso.

Una máquina virtual de proceso, se ejecuta como un proceso normal dentro de un

sistema operativo y soporta un solo proceso. La máquina se inicia

automáticamente cuando se lanza el proceso que se desea ejecutar y se detiene

para cuando éste finaliza. Su objetivo es el de proporcionar un entorno de

ejecución independiente de la plataforma de hardware y del sistema operativo, que

oculte los detalles de la plataforma subyacente y permita que un programa se

ejecute siempre de la misma forma sobre cualquier plataforma.

El ejemplo más conocido actualmente de este tipo de máquina virtual es la

máquina virtual de Java. Otra máquina virtual muy conocida es la del entorno .Net

de Microsoft que se llama "Common Language Runtime".

62
Máquina Virtual Java

Una Máquina virtual Java (en inglés Java Virtual Machine, JVM) es un máquina

virtual de proceso nativo, es decir, ejecutable en una plataforma específica, capaz

de interpretar y ejecutar instrucciones expresadas en un código binario especial (el

bytecode Java), el cual es generado por el compilador del lenguaje Java.

El código binario de Java no es un lenguaje de alto nivel, sino un verdadero

código máquina de bajo nivel, viable incluso como lenguaje de entrada para un

microprocesador físico. Como todas las piezas del rompecabezas Java, fue

desarrollado originalmente por Sun Microsystems.

La JVM es una de las piezas fundamentales de la plataforma Java. Básicamente se

sitúa en un nivel superior al Hardware del sistema sobre el que se pretende

ejecutar la aplicación, y este actúa como un puente que entiende tanto el

ByteCode, como el sistema sobre el que se pretende ejecutar. Así, cuando se

escribe una aplicación Java, se hace pensando que será ejecutada en una máquina

virtual Java en concreto, siendo ésta la que en última instancia convierte de código

ByteCode a código nativo del dispositivo final.

La gran ventaja de la máquina virtual java es aportar portabilidad al lenguaje de

manera que desde Sun Microsystems se han creado diferentes máquinas virtuales

java para diferentes arquitecturas y así un programa .class escrito en un Windows

puede ser interpretado en un entorno Linux. Tan solo es necesario disponer de

63
dicha máquina virtual para dichos entornos. De ahí el famoso axioma que sigue a

Java, "escríbelo una vez, ejecútalo en cualquier parte".

Pero, los intentos de la compañía propietaria de Java y productos derivados de

construir microprocesadores que aceptaran el Java ByteCode como su lenguaje de

máquina fueron más bien infructuosos.

La máquina virtual de Java puede estar implementada en software, hardware, una

herramienta de desarrollo o un Web browser; lee y ejecuta código pre compilado

ByteCode que es independiente de la plataforma multiplataforma. La JVM provee

definiciones para un conjunto de instrucciones, un conjunto de registros, un

formato para archivos de clases, la pila, un heap con recolector de basura y un

área de memoria. Cualquier implementación de la JVM que sea aprobada por

SUN debe ser capaz de ejecutar cualquier clase que cumpla con la especificación.

JRE

En su forma más simple, el entorno en tiempo de ejecución de Java está

conformado por una Máquina Virtual de Java o JVM, un conjunto de bibliotecas

Java y otros componentes necesarios para que una aplicación escrita en lenguaje

Java pueda ser ejecutada. El JRE actúa como un "intermediario" entre el sistema

operativo y Java.

La JVM es el programa que ejecuta el código Java previamente compilado

(ByteCode) mientras que las librerías de clases estándar son las que implementan

64
el API de Java. Ambas JVM y API deben ser consistentes entre sí, de ahí que sean

distribuidas de modo conjunto. Un usuario sólo necesita el JRE para ejecutar las

aplicaciones desarrolladas en lenguaje Java, mientras que para desarrollar nuevas

aplicaciones en dicho lenguaje es necesario un entorno de desarrollo, denominado

JDK, que además del JRE (mínimo imprescindible) incluye, entre otros, un

compilador para Java. La plataforma es así llamada la plataforma Java (antes

conocida como Plataforma Java 2, e incluye:

 Plataforma Java, Edición Estándar (Java Platform, Standard Edition), o

Java SE (antes J2SE)

 Plataforma Java, Edición Empresa (Java Platform, Enterprise Edition), o

Java EE (antes J2EE)

 Plataforma Java, Edición Micro (Java Platform, Micro Edition), o

Java ME (antes J2ME)

J2SE.

Java Platform, Standard Edition o Java SE (conocido anteriormente hasta la

versión 5.0 como Plataforma Java 2, Standard Edition o J2SE), es una colección

de APIs del lenguaje de programación Java útiles para muchos programas de la

Plataforma Java. La Plataforma Java 2, Enterprise Edition incluye todas las clases

en el Java SE, además de algunas de las cuales son útiles para programas que se

ejecutan en servidores sobre Workstation.

65
J2EE.

Java Platform, Enterprise Edition o Java EE (anteriormente conocido como Java 2

Platform, Enterprise Edition o J2EE hasta la versión 1.4), es una plataforma de

programación parte de la Plataforma Java para desarrollar y ejecutar software de

aplicaciones en el lenguaje de programación Java con arquitectura de N capas

distribuidas y que se apoya ampliamente en componentes de software modulares

ejecutándose sobre un servidor de aplicaciones. La plataforma Java EE está

definida por una especificación. Similar a otras especificaciones del Java

Community Process, Java EE es también considerada informalmente como un

estándar debido a que los proveedores deben cumplir ciertos requisitos de

conformidad para declarar que sus productos son conformes a Java EE;

estandarizado por The Java Community Process / JCP.

Java EE incluye varias especificaciones de API, tales como JDBC, RMI, e-mail,

JMS, Servicios Web, XML, etc. y define cómo coordinarlos. Java EE también

configura algunas especificaciones únicas para Java EE para componentes. Estas

incluyen Enterprise JavaBeans, servlets, portlets (siguiendo la especificación de

Portlets Java), JavaServer Pagés y varias tecnologías de servicios web. Ello

permite al desarrollador crear una Aplicación de Empresa portable entre

plataformas y escalable, a la vez que integrable con tecnologías anteriores. Otros

beneficios añadidos son, por ejemplo, que el servidor de aplicaciones puede

manejar transacciones, la seguridad, escalabilidad, concurrencia y gestión de los

componentes desplegados, significando que los desarrolladores pueden

66
concentrarse más en la lógica de negocio de los componentes en lugar de en tareas

de mantenimiento de bajo nivel.

J2ME.

La plataforma Java Micro Edition, o anteriormente Java 2 Micro Edition (J2ME),

es una especificación de un subconjunto de la plataforma Java orientada a proveer

una colección certificada de APIs de desarrollo de software para dispositivos con

recursos restringidos. Está orientado a productos de consumo como PDAs,

teléfonos móviles o electrodomésticos.

Java ME se ha convertido en una buena opción para crear juegos en teléfonos

móviles debido a que se puede emular en un PC durante la fase de desarrollo y

luego subirlos fácilmente al teléfono. Al utilizar tecnologías Java el desarrollo de

aplicaciones o videojuegos con estas APIs resulta bastante económico de portar a

otros dispositivos.

Java ME fue desarrollado mediante el Java Community Process bajo la

especificación JSR 68. La evolución de la plataforma ha propiciado el abandono

de las Java Especificación Raques (peticiones de especificación para Java) en

favor de JSRs separadas para las distintas versiones de Java ME.

67
API-Interfaces de Programación de aplicaciones

Es el conjunto de funciones y procedimientos o métodos, en la programación

orientada a objetos que ofrece cierta biblioteca para ser utilizado por otro software

como una capa de abstracción. Son usadas generalmente en las bibliotecas

(también denominadas comúnmente "librerías").

JDBC.

Java Data Base Connectivity, más conocida por sus siglas JDBC, es una API que

permite la ejecución de operaciones sobre bases de datos desde el lenguaje de

programación Java, independientemente del sistema operativo donde se ejecute o

de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de

base de datos que se utilice.

El Api Jdbc se presenta como una colección de interfaces Java y métodos de

gestión de manejadores de conexión hacia cada modelo específico de base de

datos. Un manejador de conexiones hacia un modelo de base de datos en

particular es un conjunto de clases que implementan las interfaces Java y que

utilizan los métodos de registro para declarar los tipos de localizadores a base de

datos (URL) que pueden manejar. Para utilizar una base de datos particular, el

usuario ejecuta su programa junto con la biblioteca de conexión apropiada al

modelo de su base de datos, y accede a ella estableciendo una conexión, para ello

provee el localizador a la base de datos y los parámetros de conexión específicos.

A partir de allí puede realizar con cualquier tipo de tareas con la base de datos a

68
las que tenga permiso: consulta, actualización, creación, modificación y borrado

de tablas, ejecución de procedimientos almacenados en la base de datos, etc.

RMI.

RMI (Java Remote Method Invocation) es un mecanismo ofrecido por Java para

invocar un método de manera remota. Forma parte del entorno estándar de

ejecución de Java y proporciona un mecanismo simple para la comunicación de

servidores en aplicaciones distribuidas basadas exclusivamente en Java. Si se

requiere comunicación entre otras tecnologías debe utilizarse CORBA o SOAP en

lugar de RMI.

RMI se caracteriza por la facilidad de su uso en la programación por estar

específicamente diseñado para Java; proporciona paso de objetos por referencia

(no permitido por SOAP), recolección de basura distribuida (Garbage Collector

distribuido) y paso de tipos arbitrarios (funcionalidad no provista por CORBA).

A través de RMI, un programa Java puede exportar un objeto, con lo que dicho

objeto estará accesible a través de la red y el programa permanece a la espera de

peticiones en un puerto TCP. A partir de ese momento, un cliente puede

conectarse e invocar los métodos proporcionados por el objeto.

La invocación se compone de los siguientes pasos:

 Encapsulado (marshalling) de los parámetros (utilizando la funcionalidad

de socialización de Java).

69
 Invocación del método (del cliente sobre el servidor). El invocador se

queda esperando una respuesta.

 Al terminar la ejecución, el servidor serializa el valor de retorno (si lo hay)

y lo envía al cliente.

 El código cliente recibe la respuesta y continúa como si la invocación

hubiera sido local.

JMS

La API Java Message Service, también conocida por sus siglas JMS, es la

solución creada por Sun Microsystems para el uso de colas de mensajes. Este es

un estándar de mensajería que permite a los componentes de aplicaciones basados

en la plataforma Java2 crear, enviar, recibir y leer mensajes. También hace posible

la comunicación confiable de manera síncrona y asíncrona.

El servicio de mensajería instantánea también es conocido como Middleware

Orientado a Mensajes (MOM por sus siglas en inglés) y es una herramienta

universalmente reconocida para la construcción de aplicaciones empresariales.

Dicha API es parte integral de la versión 2 de Java.

Existen dos modelos de la API JMS, los cuales son:

Modelo Punto a Punto: Este modelo cuenta con solo dos clientes, uno que envía

el mensaje y otro que lo recibe. Este modelo asegura la llegada del mensaje ya que

si el receptor no está disponible para aceptar el mensaje o atenderlo, de cualquier

70
forma se le envía el mensaje y este se encola en una pila del tipo FIFO para luego

ser recibido según haya entrado.

Modelo Publicador/Suscriptor: Este modelo cuenta con varios clientes, unos

que publican temas o eventos, y los que ven estos tópicos, a diferencia del modelo

punto a punto este modelo tiende a tener más de un consumidor.

Ambos modelos pueden ser síncronos mediante el método receiver y asíncronos

por medio de un MessageListener.

Las versiones de java que han salido son las siguientes.

 JDK1.0 en 1996

 JDK 1.1 en 1997

 J2SE 1.2en 1998

 2SE 1.3 en 2000

 J2SE 1.4 en 2002

 J2SE en 2004

 Java SE 6 en 2006

La característica de java viene dado por tres elementos claves que diferencian a

este lenguaje.

 Es un lenguaje de programación que ofrece la potencia del diseño

orientado a objetos con una sintaxis fácilmente accesible y un entorno

robusto y agradable.

 Proporciona un conjunto de clases potente y flexible.

71
 Pone al alcance de cualquiera la utilización de aplicaciones que se pueden

incluir directamente en páginas Web

Java es orientado a Objetos.

En este aspecto Java fue diseñado partiendo de cero, no siendo derivado de otro

lenguaje anterior y no tiene compatibilidad con ninguno de ellos.

En Java el concepto de objeto resulta sencillo y fácil de ampliar. Además se

conservan elementos como números, caracteres y otros tipos de datos simples.

Java Contiene Riqueza Semántica.

Pese a su simpleza se ha conseguido un considerable potencial, y aunque cada

tarea se puede realizar de un número reducido de formas, se ha conseguido un

gran potencial de expresión e innovación desde el punto de vista del programador

Java es robusto.

Java verifica su código al mismo tiempo que lo escribe, y una vez más antes de

ejecutarse, de manera que se consigue un alto margen de codificación sin errores.

Se realiza un descubrimiento de la mayor parte de los errores durante el tiempo de

compilación, ya que Java es estricto en cuanto a tipos y declaraciones, y así lo que

es rigidez y falta de flexibilidad se convierte en eficacia. Respecto a la gestión de

memoria, Java libera al programador del compromiso de tener que controlar

especialmente la asignación que de ésta hace a sus necesidades específicas.

72
Java Contiene un Modelado de Objetos.

Existen varias clases que contienen las abstracciones básicas para facilitar a los

programas. Para ello se contará con un conjunto de clases comunes que pueden

crecer para admitir todas las necesidades del programador.

Además la biblioteca de clases de Java proporciona un conjunto de protocolos.

El conjunto de clases más complicado de Java son sus paquetes gráficos AWT

(Abstract Window Toolkit) y Swing. Estos paquetes implementan componentes de

una interfaz de usuario gráfica básica común a todos los ordenadores personales

modernos.

Java es de fácil Aprendizaje.

El único requerimiento para aprender Java es tener conocimiento de los conceptos

básicos de la programación orientada a objetos, con el conocimiento de esta teoría

y los conceptos inmersos en ellos así como herencia, polimorfismo, métodos

sobrecargados.

Java es completado con utilidades.

El paquete de Java viene con un conjunto completo de estructuras de datos

complejas y sus métodos asociados, que serán de inestimable ayuda para

implementar aplicaciones más complejas. Se dispone también de estructuras de

datos habituales, como pilas y tablas hash, como clases ya implementadas. El

JDK (Java Development Kit) suministrado por Sun Microsystems incluye un

73
compilador, un intérprete de aplicaciones, un depurador en línea de comandos, y

un visualizador de applets entre otros elementos.

Java es interactivo y Animado.

Uno de los requisitos de Java desde sus inicios fue la posibilidad de crear

programas en red interactivos, por lo que es capaz de hacer varias cosas a la vez

sin perder rastro de lo que debería suceder y cuándo. Las aplicaciones de Java

permiten situar figuras animadas en las páginas Web, y éstas pueden concebirse

con logotipos animados o con texto que se desplace por la pantalla. También

pueden tratarse gráficos generados por algún proceso. Estas animaciones pueden

ser interactivas, permitiendo al usuario un control sobre su apariencia.

Java Contiene Arquitectura Neutral

Java está diseñado para que un programa escrito en este lenguaje sea ejecutado

correctamente independientemente de la plataforma en la que se esté actuando,

solo se necesita que la maquina donde se va a ejecutar la tenga el runtime o JRE

como más se lo conoce, por ello se puede ejecutar en cualquier sistema operativo.

Java Permite Trabajos en Red.

Java anima las páginas Web y hace posible la incorporación de aplicaciones

interactivas y especializadas. Aporta la posibilidad de distribuir contenidos

ejecutables, de manera que los suministradores de información de la Web pueden

crear una página de hipertexto (página Web) con una interacción continuada y

74
compleja en tiempo real; el contenido ejecutable es transferido literalmente al

ordenador del usuario.

Java proporciona un conjunto de clases para tratar con conectores de red

conocidos como originales de la versión UNIX de Berckley, encapsular la noción

de una dirección de Internet o conectar sockets con flujos de datos de

Entrada/Salida.

Java Ofrece más Seguridad.

Existe una preocupación lógica en Internet por el tema de la seguridad: virus,

caballos de Troya, y programas similares navegan de forma usual por la red,

constituyendo una amenaza palpable. Java ha sido diseñado poniendo un énfasis

especial en el tema de la seguridad, por lo que el control sobre los programas

ejecutables no es equiparable a otros lenguajes.

Los niveles de seguridad que presenta son:

 Fuertes restricciones al acceso a memoria, como son la eliminación de

punteros aritméticos y de operadores ilegales de transmisión.

 Rutina de verificación de los códigos de byte que asegura que no se viole

ninguna construcción del lenguaje.

 Verificación del nombre de clase y de restricciones de acceso durante la

carga.

75
 Sistema de seguridad de la interfaz que refuerza las medidas de seguridad

en muchos niveles.

Java Esta Basado el Lenguaje C++.

Java fue desarrollado basándose en C++. Básicamente, encontramos las siguientes

diferencias con C++:

 Java no soporta los tipos struct, union ni punteros.

 No soporta typedef ni #define.

 Se distingue por su forma de manejar ciertos operadores y no permite una

sobrecarga de operadores.

 No soporta herencia múltiple.

 Java maneja argumentos en la línea de comandos de forma diversa a como

lo hacen C o C++.

 Tiene una clase String que es parte del paquete java.lang y se diferencia de

la matriz de caracteres terminada con un nulo que usan C y C++.

 Java cuenta con un sistema automático para asignar y liberar memoria, con

lo que no es necesario utilizar las funciones previstas con este fin en C y

C++.

Java Es Multitareas.

Java permite ejecutar procesos en paralelo aplicando hilos (Threads), esta

ejecución en paralelo disminuye el tiempo de respuesta en procesos extensos.

76
Java es Portable.

Un programa Java puede ser ejecutado en diferentes entornos. Para desarrollar una

aplicación java se consideran los siguientes conceptos:

Interfaces.

Una interfaz en Java es una colección de métodos abstractos y propiedades. En

ellas se especifica qué se debe hacer pero no su implementación.

Serán las clases que implementen estas interfaces las que describan la lógica del

comportamiento de los métodos.

Clases.

Una clase define la forma y comportamiento de un objeto, se utiliza como un

modelo de plantillas de conceptos comunes, en una clases de definen los atributos

y los métodos, el modelo de una clase describe el estado y contiene y define el

comportamiento de los objetos. Por lo usual una clase se define a los sustantivos

así como por ejemplo una persona, animal o cosa.

Métodos.

Los métodos son las acciones funciones o procedimientos que realiza nuestro

programa;

Los métodos son subrutinas que manipulan los datos definidos por una clase.

Características de los métodos:

 Contiene una o más declaraciones

77
 Cada método tiene un nombre y este nombre se utiliza para llamar al

método (las palabras clave no pueden ser utilizadas como el nombre del

método).

 Debe llevar paréntesis después del nombre.

 El método main () está reservado por java como el método que inicializa la

ejecución del programa.

Atributos.

Son características de una clase que están dadas por las variables y/o constantes de

la misma.

Los diferentes tipos de aplicaciones que se pueden desarrollar con java son:

Aplicaciones:

Se ejecutan sin necesidad de un navegador.

GRÁFICO No.6
Aplicaciones.

Fuente:http://escribojava.blogspot.com/2011/01/como-enviar-correos-emails-desde-java.html
Elaborado: http://://escribojava.blogspot.com/2011/01/como-enviar-correos-emails-desde-java.html

78
Applets

Se pueden descargar de Internet y se observan en un navegador. Usando la

máquina virtual de java, o utilizando una herramienta propia de SUN que es la

AppletViewer. Las diferentes ventajas que ofrece un applet es la seguridad para el

acceso a la información, así como no se permite la descarga del código fuente

inmersa en el applet.

GRÁFICO No. 7
Applets

Fuente:
http://www.google.com.ec/imgres?imgurl=http://www.escolessas.com/cesf/images/quefanalumnes/cda2a_g.jpg&imgrefurl=http://ww
w.escolessas.com/cesf/index.php%3Foption%3Dcom_content%26task%3Dview%26id%3D51%26Itemid%3D66%26lang%3Dspani
sh&usg=__yU_tAj4q5iLbPv8mn4RvGA6Lg6k=&h=543&w=544&sz=71&hl=es&start=3&zoom=1&tbnid=N6A5AASg_Pf39M:&tbn
h=133&tbnw=133&ei=InbjTpH2O4SbtwesnuidBQ&prev=/search%3Fq%3Daplicaciones%2Bapplet%2Bjava%26um%3D1%26hl
%3Des%26sa%3DN%26biw%3D1280%26bih%3D697%26tbm%3Disch&um=1&itbs=1

JavaBeans

Componentes software Java, que se puedan incorporar gráficamente a otros

componentes, se utilizan para encapsular varios objetos en un solo objeto en

79
lugar de varios objetos simples, la definición correcta de java beans es

componentes de software reutilizables que se puedan manipular visualmente en

una herramienta de construcción. El comportamiento de los java beans se definen

las interfaces, clases bases y heredadas.

GRÁFICO No. 8
JavaBeans

Grafico No.8 JavaBeans


Fuente : http://www.google.com.ec/imgres?imgurl=http://3.bp.blogspot.com/_jbOU0tiejJQ/TKJVNOphTxI/AAAAAAAAABw/zQ87z7H-
xs8/s1600/tiposContenedores.jpg&imgrefurl=http://ricardo84-javabasico.blogspot.com/2010/09/tipos-de-contenedores-java-
ee.html&usg=__5JXrYmNTT7tqBz_XSEpSAtW3dsU=&h=500&w=800&sz=100&hl=es&start=1&zoom=1&tbnid=nk5c9RHPIlTwIM:&tbnh=89&tbnw=1
43&ei=W3njTr_nA8-
WtwflhZDEBA&prev=/search%3Fq%3Daplicaciones%2BBeans%2Bjava%26um%3D1%26hl%3Des%26sa%3DN%26biw%3D1280%26bih%3D697%2
6tbm%3Disch&um=1&itbs=
Elaborado Por: http://www.google.com.ec/imgres?imgurl=http://3.bp.blogspot.com

Java Script

Conjunto del lenguaje Java que puede codificarse directamente sobre cualquier

documento HTML, este código se ejecuta principalmente en el lado de los

clientes, haciendo que las paginas desarrolladas sean más dinámicas, JavaScript es

80
un lenguaje fundamental utilizado para el desarrollo de aplicaciones web, junto

con css conforman las partes fundamentales en el desarrollo de una página web.

GRÁFICO No.9
JavaScript

Fuente: Héctor William Pilligua Robalino


Elaborado Por: Héctor William Pilligua Robalino.

Servlet

Son módulos que permiten sustituir o utilizar el lenguaje Java en lugar de

programas a la hora de dotar de interactividad a las páginas Web, un servlet

funciona de la misma manera que funciona un aplicativo, con limitaciones, como

por ejemplo no se pueden procesar archivos planos o imágenes, mas es útil para

procesamiento de datos, uso de formularios y otras funciones básicas de las

aplicaciones java.

GRÁFICO 10

81
Servlets

Grafico No 10. Servlets.


Fuente : http://www.google.com.ec/imgres?imgurl=http://www.xtrawebsolutions.com/wp-content/uploads/2011/05/java-
servlet.jpg&imgrefurl=http://www.xtrawebsolutions.com/2011/05/30/java-
servlet/&usg=__HuQz1bLnI_YyyG5_4X6jJSwF3Bk=&h=260&w=540&sz=18&hl=es&start=1&zoom=1&tbnid=hnmBivTUesqI7M:&tbnh=64&tbnw=132
&ei=ZHrjTpaOAZHMtgeluMziDg&prev=/search%3Fq%3DSERVLET%2Bjava%26um%3D1%26hl%3Des%26sa%3DN%26biw%3D1280%26bih%3D
697%26tbm%3Disch&um=1&itbs=1
Elaborado Por: http://www.google.com.ec/imgres

PLATAFORMA .NET

La ´plataforma de desarrollo de .NET Framework supone el cambio más

importante en la tecnología en la metodología de desarrollo de software para un

sistema operativo de Microsoft, este entorno está construido usando una

arquitectura que permite a los lenguajes de software trabajar juntos compartiendo

códigos y recursos, proporcionando a los programadores herramientas avanzadas

necesarias para construir la siguiente generación de aplicaciones de escritorio y de

internet,

Entre los diferentes lenguajes de programación que se encuentra en CSharp, visual

Basic, java#, c++, cristal report. En los lenguajes contenidos dentro de los

framework de .net se utiliza en mayor instancia la programación orientada a

objetos.

82
Microsoft desarrollo CSharp desde su base para aprovechar el nuevo entorno de

.net. El framework de Microsoft se compone de 4 partes, el entorno común de

ejecución, conjunto de bibliotecas de clases, grupos de lenguajes de programación

y el entorno ASP.NET, esto fue diseñado con 3 objetivos en mente.

 Deberá desarrollar aplicaciones Windows más estables, proporcionando

mayor seguridad.

 Deberá simplificar el desarrollo de aplicaciones y servicios web, funcional

en entorno de escritorio como entorno móvil.

 Proporcionar un solo grupo de bibliotecas que puedan trabajar con varios

lenguajes

BIBLIOTECAS DE CLASES .NET

Muchos lenguajes han tenido acceso a cuerpo de código previamente comprobado

y listo para ser ejecutado, visual C++ se ha beneficiado de las bibliotecas de

clases, como las Clases de Fundación Microsoft( MFC), que permite a los

programadores desarrollar aplicaciones de escritorio de una manera rápida, que

proporciona facilidad para crear objetos COM

COM

COM son protocolos que permiten la colaboración entre objetos desarrollados con

diferentes lenguajes y herramientas, y que pueden residir en diferentes procesos o

incluso máquinas. Los componentes COM existentes son recursos muy valiosos

en código administrado como aplicaciones empresariales de nivel medio o

83
funcionalidad aislada. Un componente ideal tiene un ensamblado de

interoperabilidad primario y cumple rigurosamente los estándares de

programación que impone COM.

Common Language Runtime (CLR)

El CLR es el núcleo de la plataforma .NET, es el entorno encargado de gestionar

la ejecución de las aplicaciones desarrolladas en la misma y ofrece numerosos

servicios que simplifican su desarrollo, favoreciendo su fiabilidad y seguridad. El

El CLR es el encargado de compilar un código intermedio llamado Common

Intermédiate Language (CIL) o conocida anteriormente como MSLI al código de

maquina nativo, mediante un compilador en tiempo de ejecución, una vez que el

código se encuentra compilado, se ejecuta nativamente sin intervención de una

capa de abstracción sobre el hardware.

Las principales características y servicios que ofrece el CLR son:

• Modelo de programación consistente: A todos los servicios y facilidades

ofrecidas por el CLR se accede de la misma forma, a través de un modelo de

programación orientado a objetos. Esto es una diferencia importante respecto al

modo de acceso a los servicios ofrecidos por algunos sistemas operativos actuales.

• Modelo de programación sencillo: Con el CLR desaparecen muchos elementos

complejos incluidos en los sistemas operativos actuales (registro de Windows,

84
GUIDs, HRESULTS, etc.). El CLR no es que abstraiga al programador de estos

conceptos, sino que son conceptos que no existen en la plataforma .NET.

• Eliminación del “infierno de las DLLs”: En la plataforma .NET desaparece el

problema conocido como “infierno de las DLLs” que se da en los sistemas

operativos actuales de la familia Windows, problema que consiste en que al

sustituirse versiones viejas de DLLs compartidas por versiones nuevas puede que

aplicaciones que fueron diseñadas para ser ejecutadas usando las viejas dejen de

funcionar si las nuevas no son 100% compatibles con las anteriores.

En la plataforma .NET las versiones nuevas de las DLLs pueden coexistir con las

viejas, de modo que las aplicaciones diseñadas para ejecutarse usando las viejas

podrán seguir usándolas tras la instalación de las nuevas. Esto, obviamente,

simplifica mucho la instalación y desinstalación de software.

• Ejecución multiplataforma: El CLR actúa como una máquina virtual,

encargándose de ejecutar las aplicaciones diseñadas para la plataforma .NET. Es

decir, cualquier plataforma para la que exista una versión del CLR podrá ejecutar

cualquier aplicación .NET.

“Creo que Microsoft nombró. Net para que no se muestran en

una lista de directorios Unix” (Oktal)

85
Microsoft ha desarrollado versiones del CLR para la mayoría de las versiones de

Windows: Windows 95, Windows 98, Windows ME, Windows NT 4.0, Windows

2000, Windows XP y Windows CE (que puede ser usado en CPUs que no sean de

la familia x86).

Por otro lado Microsoft ha firmado un acuerdo con Corel para portar el CLR a

Linux y también hay terceros que están desarrollando de manera independiente

versiones de libre distribución del CLR para Linux. Asimismo, dado que la

arquitectura del CLR está totalmente abierta, es posible que en el futuro se

diseñen versiones del mismo para otros sistemas operativos.

• Integración de lenguajes: Desde cualquier lenguaje para el que exista un

compilador que genere código para la plataforma .NET es posible utilizar código

generado para la misma usando cualquier otro lenguaje. Microsoft ha desarrollado

un compilador de C# que genera código de este tipo, así como versiones de sus

compiladores de Visual Basic (Visual Basic.NET) y C++ (C++ con extensiones

gestionadas) que también lo generan, y una versión del intérprete de JScript

(JScript.NET) que puede interpretarlo.

La integración de lenguajes consiste en escribir una clase en C#, que herede de

otra escrita en Visual Basic.NET, que a su vez, herede de otra escrita en C++ con

extensiones gestionadas.

86
• Gestión de memoria: El CLR incluye un recolector de basura que evita que el

programador tenga que tener en cuenta cuándo ha de destruir los objetos que dejen

de serle útiles. Este recolector es una aplicación que se activa cuando se quiere

crear algún objeto nuevo y se detecta que no queda memoria libre para hacerlo,

caso en que el recolector recorre la memoria dinámica asociada a la aplicación,

detecta qué objetos hay en ella que no puedan ser accedidos por el código de la

aplicación, y los elimina para limpiar la memoria de “objetos basura” y permitir

la creación de otros nuevos.

Seguridad de tipos: El CLR facilita la detección de errores de programación

difíciles de localizar comprobando que toda conversión de tipos que se realice

durante la ejecución de una aplicación .NET se haga de modo que los tipos origen

y destino sean compatibles.

• Aislamiento de procesos: El CLR asegura que desde el código perteneciente a

un determinado proceso no se pueda acceder a código o datos pertenecientes a

otro, lo que evita errores de programación muy frecuentes e impide que unos

procesos puedan atacar a otros.

• Tratamiento de excepciones: En el CLR todos los errores que se puedan

producir durante la ejecución de una aplicación se propagan de igual manera

mediante excepciones. Esto es muy diferente a como se venía haciendo en los

sistemas Windows hasta la aparición de la plataforma .NET, donde ciertos errores

87
se transmitían mediante códigos de error en formato Win32, otros mediante

HRESULTs y otros mediante excepciones.

El CLR permite que excepciones lanzadas desde código para .NET escrito en un

cierto lenguaje se puedan capturar en código escrito usando otro lenguaje, e

incluye mecanismos de depuración que pueden saltar desde código escrito para

.NET en un determinado lenguaje a código escrito en cualquier otro. Por ejemplo,

se puede recorrer la pila de llamadas de una excepción aunque ésta incluya

métodos definidos en otros módulos usando otros lenguajes.

• Soporte multihilo: El CLR es capaz de trabajar con aplicaciones divididas en

múltiples hilos de ejecución que pueden ir evolucionando por separado, en

paralelo o intercalándose, según el número de procesadores de la máquina sobre la

que se ejecuten. Las aplicaciones pueden lanzar nuevos hilos, destruirlos,

suspenderlos por un tiempo o hasta que les llegue una notificación, enviarles

notificaciones, sincronizarlos, etc.

• Distribución transparente: El CLR ofrece la infraestructura necesaria para

crear objetos remotos y acceder a ellos de manera completamente transparente a

su localización real, tal y como si se encontrasen en la máquina que los utiliza.

• Seguridad avanzada: El CLR proporciona mecanismos para restringir la

ejecución de ciertos códigos o los permisos asignados a los mismos según su

88
procedencia o el usuario que los ejecute. Es decir, puede no darse el mismo nivel

de confianza a código procedente de internet que a código instalado localmente o

procedente de una red local; puede no darse los mismos permisos a código

procedente de un determinado fabricante que a código de otro; y puede no darse

los mismos permisos a un mismo código según el usuario que lo esté ejecutando

o según el rol que éste desempeñe. Esto permite asegurar al administrador de un

sistema que el código que se esté ejecutando no pueda poner en peligro la

integridad de sus archivos, la del registro de Windows, etc.

• Interoperabilidad con código antiguo: El CLR incorpora los mecanismos

necesarios para poder acceder desde código escrito para la plataforma .NET a

código escrito previamente a la aparición de la misma y, por tanto, no preparado

para ser ejecutado dentro de ella. Estos mecanismos permiten tanto el acceso a

objetos COM como el acceso a funciones sueltas de DLLs preexistentes.

Microsoft Intermediate Language (MSIL)

Todos los compiladores que generan código para la plataforma .NET no generan

código máquina para algún tipo de CPU concreta, sino que generan código escrito

en el lenguaje intermedio conocido como Microsoft Intermediate Lenguage

(MSIL).

El CLR da a las aplicaciones la sensación de que se están ejecutando sobre una

máquina virtual, y precisamente MSIL es el código máquina de esa máquina

89
virtual. Es decir, MSIL es el único código que es capaz de interpretar el CLR, y

por tanto cuando se dice que un compilador genera código para la plataforma

.NET lo que se está diciendo es que genera MSIL.

MSIL ha sido creado por Microsoft tras consultar a numerosos especialistas en la

escritura de compiladores y lenguajes tanto del mundo académico como

empresarial. Es un lenguaje de un nivel de abstracción mucho más alto que el de

la mayoría de los códigos máquina de las CPUs existentes, e incluye instrucciones

que permiten trabajar directamente con objetos (crearlos, destruirlos,

inicializarlos, llamar a métodos virtuales, etc.), tablas y excepciones (lanzarlas,

capturarlas y tratarlas).

La principal ventaja del MSIL es que facilita la ejecución multiplataforma y la

integración entre lenguajes al ser independientes de la CPU y proporcionar un

formato común para el código máquina generado por todos los compiladores que

generen código para .NET. A partir de los fundamentos anteriores se enuncian las

principales ventas y desventajas que ofrece la plataforma .NET.

Ventajas

 Movilidad.- Las aplicaciones pueden ser ejecutadas en diferentes tipos de

dispositivos.

90
 Basado en objetos. Ofrece un modelo de desarrollo basado en objetos que

utilizan un sistema común de datos y estos pueden ser reutilizados solo llamando

al objeto en donde se necesite.

 Herencia de clases.- Las clases incluidas en el framework pueden ser

utilizadas independientemente del lenguaje que se utilice, esto gracias al

mecanismo de herencia propio de la programación orientada a objetos.

 Interoperabilidad Multilenguaje: .NET soporta aplicaciones con

componentes en múltiples lenguajes lo que permite integrar desarrolladores de

distintos perfiles.

 Rendimiento: Todos los códigos que se ejecutan en el ambiente .NET son

compilados, lo cual proporciona un gran rendimiento a diferencia de versiones

interpretadas.

 Escalabilidad y flexibilidad: Escalabilidad es la capacidad de un sistema para

soportar más carga de trabajo, usualmente debida al aumento de usuarios que lo

utilizan. .NET ofrece métodos de escalabilidad como la carga balanceada que

permite a un clúster de servidores (varios servidores) colaborar y dar un servicio

de forma simultánea.

 Seguridad: .NET da respaldo para ejecutar código no seguro.

 Estándar abierto: La plataforma .NET está basada en estándares (HTML,

XML, SOAP, WSDL, UDDI)

 Desventajas

 No es multiplataforma, solo está disponible para Windows.

91
 Alto costo para empresas, punto net no cuenta con licenciamiento libre, por lo

tanto, el desarrollar en esta plataforma se genera un alto costo.

 Portabilidad, ofrece una portabilidad muy reducida ya que solo se puede

ejecutar en sistemas Windows.

En la plataforma .NET son utilizados distintos tipos de lenguaje de programación.

Considerando su actualidad se caracteriza a continuación el lenguaje de

programación C#.

Lenguaje de Programación C#

Marco Antonio Besteiro (2002) en su libro “Microsoft Visual C# .NET.

Referencia del lenguaje”, C# (pronunciado si Sharp en inglés), su nombre fue

inspirado por la notación musical, donde '#' (sostenido, en inglés Sharp) indica

que la nota (C es la nota do en inglés) es un semitono más alta, sugiriendo que C#

es superior a C/C++. Además, el signo '#' se compone de cuatro signos '+'

pegados.

Es un lenguaje de programación orientado a objetos desarrollado y estandarizado

por Microsoft como parte de su plataforma .NET. C# es uno de los lenguajes de

programación diseñados para la infraestructura de lenguaje común.

Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma

.NET, similar al de Java, aunque incluye mejoras derivadas de otros lenguajes.

92
Aunque es posible escribir código para la plataforma .NET en muchos otros

lenguajes, C# es el único que ha sido diseñado específicamente para ser utilizado

en ella, por lo que programarla usando C# es mucho más sencillo e intuitivo que

hacerlo con cualquiera de los otros lenguajes ya que C# carece de elementos

heredados innecesarios en .NET. Por esta razón, se suele decir que C# es el

lenguaje nativo de .NET.

La sintaxis y estructuración de C# es muy similar a la C++, ya que la intención de

Microsoft con C# es facilitar la migración de códigos escritos en estos lenguajes a

C# y facilitar su aprendizaje a los desarrolladores habituados a ellos. Sin embargo,

su sencillez y el alto nivel de productividad son equiparables a los de Visual

Basic.

Un lenguaje que hubiese sido ideal utilizar para estos menesteres es Java, pero

debido a problemas con la empresa creadora del mismo (Sun)-, Microsoft ha

tenido que desarrollar un nuevo lenguaje que añadiese a las ya probadas virtudes

de Java las modificaciones que Microsoft tenía pensado añadirle para mejorarlo

aún más y hacerlo un lenguaje orientado al desarrollo de componentes.

Las ventajas y desventajas de esta tecnología se enuncian a continuación:

Ventajas:

 Tipos de datos: En C# existe un rango más amplio y definido de tipos de datos

que los que se encuentran en C, C++ o Java.

93
 Atributos: Cada miembro de una clase tiene un atributo de acceso del tipo

público, protegido, interno, interno protegido y privado.

 Pase de parámetros: Aquí se puede declarar a los métodos para que acepten

un número variable de parámetros. De forma predeterminada, el pase de

parámetros es por valor, a menos que se use la palabra reservada ref, la cual indica

que el pase es por referencia.

 Métodos virtuales y redefiniciones: Antes de que un método pueda ser

redefinido en una clase base, debe declararse como virtual. El método redefinido

en la subclase debe ser declarado con la palabra override.

 Propiedades: Un objeto tiene propiedades, y debido a que las clases en C#

pueden ser utilizadas como objetos, C# permite la declaración de propiedades

dentro de cualquier clase.

 Inicializador: Un inicializador es como una propiedad, con la diferencia de

que en lugar de un nombre de propiedad, un valor de índice entre corchetes se

utiliza en forma anónima para hacer referencia al miembro de una clase.

 Control de versiones: C# permite mantener múltiples versiones de clases en

forma binaria, colocándolas en diferentes espacios de nombres. Esto permite que

versiones nuevas y anteriores de software puedan ejecutarse en forma simultánea.

Desventajas:

 Conseguir una versión reciente de Visual Studio .NET, por otra parte se tiene

que tener algunos requerimientos mínimos del sistema para poder trabajar

94
adecuadamente tales como contar con Windows NT 4 o superior, tener alrededor

de 4 gigas de espacio libre para la pura instalación.

 Además para quien no está familiarizado con ningún lenguaje de

programación, le costará más trabajo iniciarse en su uso, y si se quiere consultar

algún tutorial más explícito sobre la programación en C# se tendría que contar

además con conexión a Internet.

En la actualidad se ha desarrollado tecnologías gratuitas que permiten a los

programadores crear páginas web dinámicas, desde sitios web personales hasta

aplicaciones web empresariales, desarrollado y comercializado por Microsoft.

BLACKBERRY.

Es una línea de teléfonos inteligentes que integran el servicio de correo

electrónico móvil. BlackBerry fue desarrollado por la compañía canadiense

Research In Motion (RIM). Aunque incluye aplicaciones típicas es

fundamentalmente conocido por su capacidad para enviar y recibir correo

electrónico de Internet accediendo a las redes móviles de compañías de teléfono

celular que brindan este servicio.

El primer dispositivo BLACKBERRY fue el 1990 y se introdujo en 1999 y

funcionaba como un localizador de cinco vías. En 2002, el BlackBerry más

conocido fue puesto en el mercado. Este BlackBerry soporta push e-mail,

telefonía móvil, mensajería de texto, faxes por Internet, navegación web y otros

95
servicios de información inalámbrica. Actualmente el dispositivo BlackBerry más

vendido y utilizado por los usuarios es el BlackBerry Curve 8520.

GRÁFICO No. 11

Grafico No. 11 BlackBerry

Fuente : http://www.google.com.ec/imgres?imgurl=http://www.wayerless.com/up/2009/10/rim-blackberry-bold-9700-
ofc.jpg&imgrefurl=http://www.wayerless.com/2009/12/felices-10-anos-blackberry/&usg=__YKQIfto8yzI0g-
rd1vzHas2Ge1A=&h=500&w=575&sz=149&hl=es&start=11&zoom=1&tbnid=d1DCEXNU6istPM:&tbnh=117&tbnw=134&ei=w3rjTuXDEMm4tgekkM
HrBA&prev=/search%3Fq%3DBlackBerry%26um%3D1%26hl%3Des%26sa%3DN%26biw%3D1280%26bih%3D697%26tbm%3Disch&um=1&itbs=1

La mayoría de los modelos actuales de BlackBerry tienen incorporado un teclado

QWERTY, optimizado para " hojear ", utilizando únicamente de los pulgares para

escribir. También hay varios modelos que incluyen un teclado SureType para

escribir. No todos los modelos tienen un teclado ya que hay varios modelos de

pantalla táctil sin teclado físico aunque sí que incluyen un teclado en la pantalla.

El sistema de navegación se logra principalmente por una bola de desplazamiento,

o "bola" en el centro del dispositivo, los dispositivos más antiguos utilizan una

rueda de pista en el lado y los nuevos dispositivos como el BlackBerry Bold o

Curve 9700 8520/8530, como también el Pearl 9100/9105 utilizan una pequeña

almohadilla para la navegación en lugar de una rueda de desplazamiento. Algunos

modelos también incorporan un "Push to Talk (PTT)”, similar a una radio de dos

vías. En ocasiones no funciona.

96
Los dispositivos BlackBerry proporcionan un entorno inalámbrico Java ME que

es compatible con las aplicaciones cliente/servidor. Los desarrolladores de

aplicaciones pueden crear BlackBerry Java Application, con interfaces de usuario

sofisticadas, para la entrada y búsqueda de datos compatibles con un

subprocesamiento múltiple, internacionalización, comunicación de red y el

almacenamiento local de datos. Las aplicaciones pueden comunicarse con las

redes mediante conexiones estándar TCP y HTTP, a pesar de la red inalámbrica

subyacente.

BlackBerry ha incorporado correo móvil en todos sus dispositivos así como las

redes sociales mantienen a todas las personas cerca. Comuníquese con sus amigos,

familiares o contactos por teléfono, correo electrónico o mensaje de texto.

Las empresas pueden ampliar sus aplicaciones comerciales mediante conexiones

inalámbricas a través de BlackBerry, garantizando de este modo que su personal

itinerante tiene acceso a la información de la empresa mientras trabaja sobre el

terreno.

"Hay una antigua historia sobre una persona que quería que
su ordenador fuese tan fácil de utilizar como su teléfono.
Estos deseos se han hecho realidad, ya no sé cómo usar mi
teléfono"(Bjarne Stroustrup)

97
 Ambiente de Desarrollo Gráfico.

Actualmente se realizan aplicaciones con entornos gráficos para los diferentes

programas de equipos de cómputo entre los cuales tenemos .net, netbeans,

myeclipse entre otros. Lo cual ha facilitado el desarrollo de estas aplicaciones, sin

embargo aún no se ha llegado a tener todos los sistemas de desarrollo con

ambientes gráficos ya que en su mayoría se siguen utilizando líneas de código

para desarrollar las interfaces de usuarios.

En un ambiente gráfico se detectan todas las interfaces quien necesite el usuario

para desarrollar determinada tarea.

En el desarrollo de una interfaz gráfica se debe tener consideración en no colocar

los elementos en cualquier lugar o con un elemento obstruir otro ya que

complicaría las funciones a los usuarios para ello existen estándares de

programación para manipular estos entornos gráficos.

Entre los estándares de calidad se encuentran los siguientes:

 El Estándar de Calidad ISO 9001

El estándar, que ha sido adoptado por más de 130 países para su uso, se está

convirtiendo en el medio principal con el que los clientes pueden juzgar la

competencia de un desarrollador de software. Uno de los problemas con el

estándar ISO 9001 está en que no es específico de la industria: está expresado en

términos generales, y puede ser interpretado por los desarrolladores de diversos

productos como cojinetes de bolas, secadores de pelo, automóviles, equipamiento

deportivo, televisores, así como por los desarrolladores de software. Se han

98
realzado muchos documentos que relacionan el estándar con la industria del

software, pero no entran en una gran cantidad de detalles.

Para la industria del software los estándares relevantes son:

• ISO 9001: este es un estándar que describe el sistema de calidad utilizado

para mantener el desarrollo de un producto que implique diseño.

• ISO 9000-3: este es un documento específico que interpreta el ISO 9001

para el desarrollador de software.

• ISO 9004-2: este documento proporciona las directrices para el servicio de

facilidades del software como soporte de usuarios.

Los requisitos se agrupan bajo 20 títulos:

• Responsabilidad de la gestión

• Inspección, medición y equipo de pruebas

• Sistema de calidad

• Inspección y estado de pruebas

• Revisión de contrato

• Acción correctiva

• Control de diseño

• Control de producto no aceptado

• Control de documento

• Tratamiento, almacenamiento, empaquetamiento y entrega

• Compras

• Producto proporcionado al comprador

99
• Registros de calidad

• Identificación y posibilidad de seguimiento del producto

• Auditorías internas de calidad

• Formación

• Control del proceso

• Servicios

• Inspección y estado de pruebas

• Técnicas estadísticas.

 Factores de calidad ISO 9126

El estándar ISO 9126 ha sido desarrollado en un intento de identificar los

atributos clave de calidad para el software. El estándar identifica 6 atributos clave

de calidad:

• Funcionalidad: el grado en que el software satisface las necesidades indicadas

por los siguientes suba tributos: idoneidad, corrección, interoperabilidad,

conformidad y seguridad.

• Confiabilidad: cantidad de tiempo que el software está disponible para su uso.

Está referido por la siguiente suba tributos: madurez, tolerancia a fallos y facilidad

de recuperación.

• Usabilidad: grado en que el software es fácil de usar. Viene reflejado por la

siguiente suba tributos: facilidad de comprensión, facilidad de aprendizaje y

operatividad.

100
• Eficiencia: grado en que el software hace óptimo el uso de los recursos del

sistema. Está indicado por la siguiente suba tributos: tiempo de uso y recursos

utilizados.

• Facilidad de mantenimiento: la facilidad con que una modificación puede ser

realizada. Está indicada por la siguiente suba tributos: facilidad de análisis,

facilidad de cambio, estabilidad y facilidad de prueba.

• Portabilidad: la facilidad con que el software puede ser llevado de un entorno a

otro. Está referido por la siguiente suba tributos: facilidad de instalación, facilidad

de ajuste, facilidad de adaptación al cambio.

El desarrollo de aplicaciones móviles para teléfonos inteligentes se acrecentó

con la aparición de dispositivos BlackBerry, cuyas aplicaciones corrían en

versiones de java j2me versión 1.4, en la actualidad esta versión de java se

encuentra en j2me 1.6, las aplicaciones de java RIM permiten interactuar entre

otras cosas con archivos, conexiones de redes, aplicaciones cliente servidor,

comunicaciones con servicios web, manejo de bases de datos locales, manejo de

imágenes, etc.

En el desarrollo de aplicaciones móviles se pueden realizar las aplicaciones web y

las aplicaciones de dispositivo.

Para realizar una aplicación web se debe tener en cuenta lo siguiente:

El cliente móvil este debe cumplir, en lo posible, con los requerimientos del

cliente en cuanto a procesos en el dispositivo móvil, es decir si necesita realizar

una descarga o carga de información debe de contar con una buena conexión así

como la información necesaria.

101
La aplicación Web que es la que hace el trabajo y procesa el trabajo de los

clientes móviles.

La sincronización. Este es el mecanismo por el cual se mantiene la consistencia e

integridad de datos entre los clientes móviles y la aplicación de servidor.

En el desarrollo de aplicaciones móviles la plataforma Java para Móviles (J2ME)

ha probado ser la más difundida en la actualidad.

Para esto Java provee una arquitectura basada en componentes, que conduce al

desarrollo de aplicaciones multicapa, que aseguran la interoperabilidad de estos

componentes a través de distintas plataformas. El surgimiento de esta arquitectura

creó nuevos perfiles profesionales laborales que deben ser cubiertos.

En las aplicaciones java Rim de BlackBerry un desarrollador puede integrar por

completo aplicaciones cliente servidor, listas de mensajes, organizadores, el

equipo y los exploradores para una mejor interacción con el usuario.

Al momento de desarrollar aplicaciones para el equipo móvil que no sean web se

deben tener en cuenta los siguientes criterios:

• tienen un tamaño de pantalla más pequeño que puede mostrar un número

limitado de caracteres

• tienen velocidades de procesador más lentas

• utilizan redes inalámbricas que tienen un período de latencia más largo que las

LAN estándar

• tienen menos memoria disponible

• tiene una batería que dura menos

102
• muestran una pantalla al mismo tiempo

• Utilizar o ampliar los componentes existentes de la interfaz de usuario de forma

que la aplicación pueda heredar el comportamiento predeterminado del

componente.

• Seguir el modelo estándar de navegación tanto como le sea posible para que los

usuarios puedan hacer un uso completo del teclado y la bola de desplazamiento.

• Realizar todas las acciones disponibles desde el menú.

• Comprobar que las acciones disponibles en el menú son relevantes para el

contexto actual de los usuarios.

• Centrarse en tareas inmediatas de los usuarios.

• Simplifique la selección y presentación de datos para mostrar sólo la

información que los usuarios necesitan en cualquier otro momento.

• Muestre la información de manera que haga un uso efectivo de la pequeña

pantalla.

Los usuarios de dispositivos móviles no utilizan del mismo modo las aplicaciones

en su dispositivo móvil y las aplicaciones en un ordenador. En un dispositivo

móvil, los usuarios esperan encontrar la información rápidamente, puedan realizar

las tareas fácilmente y acceder a la información rápidamente.

Desarrollo de Widgets para Dispositivos BlackBerry

Los Widgets son pequeñas aplicaciones web. Escritas en una combinación de

HTML, CSS y java script y tienen la misma funcionalidad que una aplicación para

el dispositivo, su instalación

103
Es la misma que se hace como si fuera una aplicación nativa del dispositivo.

Básicamente un paquete Widgets tiene los siguientes elementos:

Archivos de Configuración

Página de Inicio

Imágenes (Iconos)

Otros recursos y objetos referenciados

Con un Widgets de este tipo podríamos conseguir sostificados Uis para entrada de

datos y búsqueda de información que soporten por ejemplo, internacionalización,

comunicación por red, almacenamiento local de datos, y comunicación de redes

ya sean tcp o http

FUNDAMENTACIÓN LEGAL

Artículo 96. Objeto de la protección

1. A los efectos de la presente Ley se entenderá por programa de ordenador toda

secuencia de instrucciones o indicaciones destinadas a ser utilizadas, directa o

indirectamente, en un sistema informático para realizar una función o una tarea o

para obtener un resultado determinado, cualquiera que fuere su forma de

expresión y fijación.

A los mismos efectos, la expresión programas de ordenador comprenderá también

su documentación preparatoria. La documentación técnica y los manuales de uso

de un programa gozarán de la misma protección que este Título dispensa a los

programas de ordenador.

104
2. El programa de ordenador será protegido únicamente si fuese original, en el

sentido de ser una creación intelectual propia de su autor.

3. La protección prevista en la presente Ley se aplicará a cualquier forma de

expresión de un programa de ordenador. Asimismo, esta protección se extiende a

cualesquiera versiones sucesivas del programa así como a los programas

derivados, salvo aquellas creadas con el fin de ocasionar efectos nocivos a un

sistema informático.

Cuando los programas de ordenador formen parte de una patente o un modelo de

utilidad gozarán, sin perjuicio de lo dispuesto en la presente Ley, de la protección

que pudiera corresponderles por aplicación del régimen jurídico de la propiedad

industrial.

4. No estarán protegidos mediante los derechos de autor con arreglo a la presente

Ley las ideas y principios en los que se basan cualquiera de los elementos de un

programa de ordenador incluidos los que sirven de fundamento a sus interfaces.

Preguntas a Contestarse

Se reducirá el tiempo de desarrollo usando una interfaz grafica

Será más factible realizar una interfaz gráfica desarrollando con líneas de código

Se entenderá de mejor manera el desarrollo de una aplicación móvil usando una

interfaz amigable

Sale más factible seleccionar un curso o utilizar una herramienta para auto

aprendizaje.

105
Variables de la Investigación

Se define como variable independiente

Interfaces Gráficas Para Desarrollo De Aplicaciones Java Para BlackBerry.

Esto permitirá desarrollar aplicaciones javas para BlackBerry de manera

amigable y optimizaría el tiempo de desarrollo del mismo, reduciendo

considerablemente costos.

Y como variable dependientes:

Complejidad Del Desarrollo de Aplicaciones java Móvil.

El Desarrollo de aplicaciones java para móvil ha sido truncado debido a la poca

experiencia en este ambiente, lo cual hace que haya poco conocimiento de las

aplicaciones posibles a realizarse.

Implementación De Ambiente De Desarrollo Gráfico Para Java Móvil De

BlackBerry. Desarrollar un binario para que pueda ser cargado en los dispositivos

BlackBerry de manera dinámica y poder ser usado en un tiempo mínimo de

desarrollo

DEFINICIONES CONCEPTUALES

GUI.- Graphical user interface o interface gráfica de usuario, son las ventanas en

las cuales interactúa el usuario final cuando está usando el aplicativo en el

dispositivo móvil.

106
BLACKBERRY.- Marca de dispositivo móvil para la cual se desarrollara el

aplicativo del proyecto actual.

RIM.- Research In Motion empresa dueña de sistema operativo BlackBerry OS y

propietaria de la marca BlackBerry, también es conocido por el programa

desarrollado por esta empresa para el desarrollo de aplicaciones para dispositivos

móviles BlackBerry

IDE.- Integrated development environment o ambiente de desarrollo integrado, es

el objetivo final del proyecto propuesto

El de brindar a los desarrolladores de sistemas una herramienta en la cual se haga

fácil y reduzca la carga cognitiva al momento de desarrollar las aplicaciones de

java RIM

COMPLEMENTOS.- Características o métodos adicionales que se incluyen a un

objeto que forme parte de una aplicación java RIM Móvil.

CLASES.- Sección de código donde se encuentras atributos y métodos a ser

utilizados en una aplicación java RIM para dispositivos Móviles.

INTERFACE.- Son declaraciones de métodos para obtener seguridades al

momento de desarrollar aplicaciones java RIM para dispositivos móviles.

OBJETOS.- Son instancias o variables que se crean y que por medio de ellas se

pueden utilizar los atributos y los métodos de las clases.

LIBRERÍAS.- son paquetes de códigos pre-establecidos que se usan en la

implementación de aplicaciones java RIM para móviles.

PALM OS.- el sistema operativo para equipos PDA

PDA.- Personal digital assistant o asistente persona digital

107
CLDC.- Connected Limited Device Configuration o conexión limitada de

configuración de dispositivo

MIDP.- Mobile Information Device Profile o perfil de información de dispositivo

móvil.

108
CAPÍTULO III

METODOLOGÍA

DISEÑO DE LA INVESTIGACIÓN

Modalidad de la investigación

La modalidad de investigación usada fue la de proyecto factible pues a través de

la realización de un diagnóstico se pudo determinar en primera instancia la

complejidad de desarrollo de aplicaciones para dispositivos móviles en general.

Se debe a que las aplicaciones de dispositivos móviles se está llevando a cabo

hace poco tiempo, es decir en los últimos años se está dando a conocer esta

tecnología y esto se debe a la aparición de dispositivos inteligentes lo cual dio

cabida a que el desarrollo de los software se dé no solo a los fabricantes de los

equipos sino también a los diferentes usuarios que se vean atraídos por esta

tecnología. Se desarrolló un aplicativo que brinde la facilidad de desarrollar

aplicaciones de interfaces graficas de una manera sencilla e intuitiva.

Del nivel teórico se utilizaron los siguientes métodos:

 Métodos lógicos del pensamiento, como: análisis, síntesis, inducción,

generalización, para arribar a las diferencias y conclusiones pertinentes.

 Histórico lógico en función de establecer orden y secuencia lógica en el

devenir histórico del fenómeno estudiado.

Fueron empleados como métodos del nivel empírico los siguientes:

109
El trabajo con las fuentes documentales para analizar los trabajos existentes

acerca del objeto de investigación, y en particular sobre el proceso de desarrollo

de un aplicativo de dispositivos móviles.

 Entrevista a un especialista, para determinar el estado actual del proceso

de desarrollo de aplicaciones en dispositivos móviles.

 El método de consulta a expertos para valorar la factibilidad de la

propuesta de un aplicativo para el desarrollo de las interfaces gráficas y

disminución de la complejidad en el desarrollo de las aplicaciones

móviles orientado a dispositivos BlackBerry.

Población y Muestra

Población

En la presente tesis se determinó como dificultad generalizada, no poder acceder a

las poblaciones totales. Esta circunstancia obliga en la mayoría de los casos a

trabajar con partes representativas de aquellas, es decir, las muestras.

Conforme al método por el que se toma la muestra, las observaciones selectivas se

dividen en:

 Selección estratificada.

 Selección sistemática

 Selección aleatoria

 Selección por conglomerados

En el caso objeto de estudio se utilizó la selección por conglomerados, ya que en

el mismo se consideran los conjuntos de datos que posean las mismas

110
características medibles o cuantificables, por ejemplo los desarrolladores de

aplicaciones

La población fue tomada de un grupo de empresas consultoras informáticas

(Sudamericana de Software, CIMA, Integrity, Viamatica, IRoute), personal del

área de sistemas de algunas entidades financieras (Banco de Guayaquil, banco

del Pacifico), grupo de estudiantes del horario nocturno y matutino en la carrera

de ingeniería de sistemas computacionales de la universidad de Guayaquil, un

número aproximado de programadores independientes.

CUADRO No. 1
Cuadro de Población
POBLACIÓN N

Población Aproximada de Desarrolladores en Sudamericana de 40

Software

Población Aproximada de Desarrolladores en CIMA Consulting 60

Población Aproximada de Desarrolladores en Integrista Solución 30

Población Aproximada de Desarrolladores en Viamatica 40

Población Aproximada de Desarrolladores en IRoute Solution 45

Población Aproximada de Desarrolladores en Banco de Guayaquil 20

Población Aproximada de Desarrolladores en Banco del Pacifico 35

Población Aproximada de estudiantes horario matutino en carrera de 700

ingeniería de sistemas.

Población aproximada de estudiantes horario nocturno en carrera de 740


ingeniería de sistemas

111
Población Aproximada de Programadores independientes. En la ciudad 300
de Guayaquil. Que no han seguido alguna carrera de ingeniería de
sistemas
Total 2190

Fuente: Héctor William Pilligua Robalino


Elaborado Por: Héctor William Pilligua Robalino

Muestra

El subconjunto de la población determinado mediante el tamaño de la muestra y

el tipo de muestreo que se utilizó para seleccionar a la cantidad promedio de

desarrolladores informáticos.

TAMAÑO DE LA MUESTRA

Población Aproximada de Desarrolladores en empresas consultoras informáticas

Fórmula:

m
n
E (m  1)  1
2

DONDE:

CUADRO No. 2
Población Aproximada 1
POBLACIÓN N

Población Aproximada de Desarrolladores en empresas consultoras 215


informáticas
Fuente: Héctor William Pilligua Robalino
Elaborado Por: Héctor William Pilligua Robalino

 Cálculos:

m= Tamaño de la población (215) 215


n
E= error de estimación (7%) (0.07) (40  1)  1
2

112
215
n = Tamaño de la muestra (104) n
(0.0049)( 214)  1
215
Resultado: 104 personas a encuestar.

Cálculo del factor de proporción:

n 104
f    0.488672
N 215

TAMAÑO DE LA MUESTRA

Población Aproximada de Desarrolladores en Entidades Financieras.

Fórmula:

m
n
E 2 (m  1)  1

DONDE:

CUADRO No. 2
Población Aproximada 2
POBLACIÓN N

Población Aproximada de Desarrolladores en Entidades Financieras 55


Fuente: Héctor William Pilligua Robalino
Elaborado Por: Héctor William Pilligua Robalino

 Cálculos:

m= Tamaño de la población (55) 55


n
E= error de estimación (7%) (0.07) (55  1)  1
2

55
n = Tamaño de la muestra (43) n 113
(0.0049)(54)  1
55
n
Resultado: 43 personas a encuestar.

Cálculo del factor de proporción:

n 43
f    0.781818
N 55

TAMAÑO DE LA MUESTRA

Población Aproximada de Desarrolladores en la carrera de ingeniería en sistemas


computacionales horario matutino y nocturno

Fórmula:

m
n
E 2 (m  1)  1

DONDE:

CUADRO No. 3
Población Aproximada 3
POBLACIÓN N

Población Aproximada de Desarrolladores en la carrera de ingeniería en 1440


sistemas computacionales horario matutino y nocturno
Fuente: Héctor William Pilligua Robalino
Elaborado Por: Héctor William Pilligua Robalino

 Cálculos:

m= Tamaño de la población (1440) 1440


n
E= error de estimación (7%) (0.07) 2 (1440  1)  1
1440
n = Tamaño de la muestra (179) n
(0.0049)(1439)  1 114
1440
n
7.0511  1
Resultado: 179 personas a encuestar.

Cálculo del factor de proporción:

n 179
f    0.124306
N 1440

TAMAÑO DE LA MUESTRA

Población Aproximada de Desarrolladores en Viamatica

Fórmula:

m
n
E 2 (m  1)  1

DONDE:

CUADRO No. 4
Cuadro Población 4
POBLACIÓN N

Población Aproximada de Programadores independientes. En la ciudad 300


de Guayaquil. Que no han seguido alguna carrera de ingeniería de
sistemas
Fuente: Héctor William Pilligua Robalino
Elaborado Por: Héctor William Pilligua Robalino

 Cálculos:

m= Tamaño de la población (300) 300


n
E= error de estimación (7%) (0.07) 2 (300  1)  1
300
n = Tamaño de la muestra (122) n
(0.0049)( 299)  1
300
n 115
1.4651  1
300
n
2.4651
Resultado: 122 personas a encuestar.

Cálculo del factor de proporción:

n 122
f    0.9
N 300

Operacionalización de variables

A continuación se muestra a través de un cuadro las variables determinadas en el

presente trabajo, e incluye además sus dimensiones, indicadores y técnicas de

investigación utilizadas.

CUADRO NO. 5

MATRIZ DE OPERACIONALIZACIÓN DE VARIABLES

Variables Dimensiones Indicadores Técnicas y/o

Instrumentos

V. I. Desarrollo de Adaptación a Análisis de


Interfaces Sistemas Herramientas de comportamiento
Gráficas Para informáticos Programación. y adaptación a
Desarrollo De orientados a (70%) nuevas
Aplicaciones tecnologías herramientas de
Java Para Móviles trabajo
BlackBerry Programación Niveles de
Intuitiva (50%) destrezas en
captación de
elementos y
lógicas de
programación
Interacción con Conocimiento de Exposiciones,
dispositivos tecnología móvil guías,
BlackBerry (80%) visualización de
nuevos
dispositivos,

116
encuestas

Conocimiento de Visualización de
tecnología móvil campo, foros,
de los preguntas
Smartphone frecuentes, salas
(70%) de conversas,
redes sociales.
Talleres,
Adaptación a exposiciones,
nuevas ejercicios,
tecnologías en el encuestas
mercado (40%)
V.D. Estándares de Programación Pruebas escritas,
Complejidad programación modular (15%) pruebas
Del Desarrollo prácticas,
de Aplicaciones Programación desarrollo y
java Móvil Orientada a soluciones de
Objetos problemas,
(60%) ayudas a usuarios
Implementación Conocimiento de Talleres,
de sistemas tecnología móvil encuestas,
informáticos en (80%) exposiciones,
dispositivos reuniones, foros,
móviles correos, internet.
Conocimiento de
tipos de
almacenamiento
en dispositivos
móviles
(50%)
Diferentes tipos Conocimiento de Exposiciones,
de conectividad conectividad manuales , guías,
móvil (70%) encuestas,
talleres
Conocimiento de
arquitectura
móvil (20%)
V.D. Objetos gráficos Conocimientos de Resoluciones de
Implementación de aplicaciones objetos gráficos problemas,
De Ambiente informáticas (80%) encuestas escritas
De Desarrollo y prácticas.

117
Gráfico Para Uso de punteros Conocimiento de Mediciones con
Java Móvil De para brindar distribución de cuestionarios
BlackBerry movilidad e pixeles en gráficos
Interacción con monitor (50%)
la aplicación.
Orientación y
reconocimiento
de colores (60%)
Ofrecer ayuda Uso de ayuda Ubicación de
en el desarrollo (80%) ayuda en un
de aplicaciones punto estratégico
móviles Interpretación de y visible para el
ejemplos (80%) usuario, uso de
metáforas
Búsqueda de
ayuda (80%)
Elaboración: Héctor William Pilligua Robalino
Fuente: Héctor William Pilligua Robalino

Instrumentos de recolección de datos.

En la presente investigación fueron utilizados diversos métodos de obtención de

información, los cuales se conceptualizarán y caracterizarán brevemente a

continuación:

La Entrevista

La entrevista es uno de los métodos de obtención de información más eficaces.

“una entrevista para recolección de información es una

conversación dirigida con un propósito específico que usa un

formato de preguntas y respuestas”. (Kendall)

118
Como la entrevista no es una conversación informal entre dos amigos que se

encuentran, sino un diálogo con un objetivo investigativo muy claro, debe ser

insertada en un proceso investigativo mucho más amplio.

Debido a ello se hace necesario organizar adecuadamente la entrevista. Esa

organización adecuada de la entrevista implica dividirla por partes o etapas.

Esas partes o etapas son:

 Preparación.

 Realización.

 Elaboración.

 Diseño de las preguntas.

Las preguntas en las entrevistas se establecen de forma estructurada y tienen

múltiples formas las cuales se muestran a continuación:

 Preguntas cerradas.

 Preguntas abiertas.

 Preguntas mixtas.

 Indagaciones o averiguaciones generales.

Las preguntas estructuradas tienen un objetivo informativo muy concreto. La

respuesta está definida por la pregunta.

Las preguntas estructurales cerradas son las que mayormente se utilizan. Estas

ofrecen al entrevistado un universo finito de respuestas, entre las cuales debe

119
escoger la que considera posible o correcta. Ejemplo: En alternativas múltiples

incluyentes

¿Con qué frecuencia elabora aplicaciones para dispositivos móviles?

_______Diarios ________Semanales _______Mensuales.

Las preguntas estructurales abiertas son aquellas donde el entrevistador permite al

entrevistado la libertad de escoger opiniones y la forma de responder.

Proporcionan más riqueza informativa, pero son más ambiguas. Ejemplo: ¿Cómo

piensa que puede ser mejorado el sistema de información automatizado de su

entidad?

Las indagaciones o averiguaciones generales son preguntas abiertas llevadas a su

máxima expresión.

Ejemplo: La descentralización sería una solución al problema del control aquí.

¿Qué usted piensa sobre eso?

Las entrevistas estructuradas o dirigidas se realizan sobre la base de un

cuestionario guía, y las respuestas se registran tal y como los da el entrevistado.

Las entrevistas no estructuradas se distinguen por la preponderancia de las

preguntas abiertas y por un alto grado de flexibilidad por parte de los

entrevistadores.

Cuestionarios

Los cuestionarios se emplean fundamentalmente cuando la cantidad de las

personas a investigar es muy grande o cuando la dispersión geográfica de las

120
mismas es tal que impiden física y económicamente, las entrevistas reales o

virtuales.

Con los cuestionarios pueden investigarse hechos, formas de comportamiento,

opiniones, procedimientos, flujos de información, sentimientos, características,

creencias.

Ventajas con relación a las entrevistas:

Bajo costo, su rapidez y su ubicuidad.

Desventajas:

No permiten acoplar información informal o base de observaciones.

Los cuestionarios deben cumplir, al menos, con cinco atributos: idoneidad,

procesable automatizada mente, ser objetivos, alcance razonable, diseño agradable

y a la vez sencillo.

Para la elaboración del cuestionario se deben tener en cuenta las siguientes etapas:

 Preparación.

 Diseño y elaboración.

 Prueba.

 Aplicación.

 Análisis de la información obtenida.

En un cuestionario pueden utilizarse cualquier tipo de preguntas, pero el más

recomendable es el de preguntas estructurales cerradas, pues resulta más fácil de

procesar en programas como el Excel o el SPSS.

121
El cuestionario no ofrece la flexibilidad de la entrevistas, por lo que exigirá

mucho más esfuerzo de diseño y elaboración.

Además deberá estudiarse la posibilidad de que el cuestionario sea anónimo o

identificado. Los investigadores en ambos casos deberán actuar con sinceridad y

transparencia.

Algunas recomendaciones generales son:

 Dejar suficiente espacio para llenar las preguntas estructurales abiertas.

 Comprobar la existencia de todas las alternativas en las peguntas

estructurales cerradas.

 Ser consistente en el estilo de las preguntas.

 Ordenar las preguntas con el mismo estilo que se expuso en las entrevistas

(enfoque deductivo, enfoque inductivo y combinación de ambos).

 Agrupar conjuntos de preguntas de contenido similar.

 Comenzar por las preguntas menos controvertidas.

 Evitar las preguntas negativas pues tienden a confundir.

Cuando es necesario se deben utilizar escalas en las preguntas estructurales

cerradas con alternativas. Estas permiten cuantificar aspectos que a primera vista

son cualitativos. Las escalas más comunes son:

 Nominal.

 Ordinal.

 De intervalo.

 De relación.

122
Observaciones

Las técnicas de investigación observación constituyen un método muy útil para

captar información. Observar no es simplemente “mirar”. Se observa con un

objetivo, con una misión investigativa que cumplir.

Claude Bernard expresaba refiriéndose a la observación:

“el observador debe ser un fotógrafo de los fenómenos; su


observación debe representar exactamente a la Naturaleza”

La observación ayuda a confirmar o refutar la información que se ha obtenido por

medio de las entrevistas, los cuestionarios, el análisis de documentos, etcétera.

La observación se realiza planeada, organizada y sistemáticamente.

Las observaciones que realizan los investigadores deben cumplir, entre otros los

siguientes requisitos:

 Tener propósitos claros y bien definidos.

 Proyectarse hacia un plan específico, definido y orientado a cumplir los

objetivos.

 Estar sujeta a comprobación.

 Poderse controlar sistemáticamente.

 Reunir los requisitos básicos de confiabilidad y validez.

 Plasmar sus resultados por escrito, preferiblemente en el momento exacto en

que transcurre.

Las observaciones presentan ventajas evidentes:

No son obstruidas, puesto que no interfieren en la actividad de los observados.

Aceptan información informal, no estructurada, pero sumamente útil.

123
Permite trabajar con grandes volúmenes de información.

Las observaciones en las investigaciones pueden ser de varios tipos:

 Por el lugar en que se realizan: documental o de campo.

 Por la forma de participar del observador: participante o no participante.

 Por la forma en que se organiza: dirigida (regulada y estructurada) o no

definida (libre)

 Por el número de observadores: individual o en equipo.

Como en toda herramienta de investigación, cuando se hacen observaciones se

debe dejar constancia escrita.

Otras opciones pueden ser el empleo de filmadoras, cámaras fotográficas o

máquinas de video, etcétera.

En la presente investigación para obtener la información necesaria se recurrió en

primera instancia a la metodología de observación del objeto de estudio,

determinándose los siguientes sucesos:

 Desarrollo de aplicaciones para dispositivos móviles.

 Conocimientos de los desarrolladores de aplicaciones.

 Manejo de interfaces gráficas para desarrollo de aplicaciones.

 Uso de herramientas para desarrollo de aplicaciones en java.

Posteriormente se recurrió a la aplicación de un cuestionario, el cual se muestra a

continuación:

Procedimientos de la Investigación

124
Los pasos que se siguieron para desarrollar mi tesis; desde la concepción del

problema hasta la elaboración del informe de la investigación son:

El problema:

Planteamiento del problema

Interrogantes de la investigación

Objetivos de la Investigación

Justificación o importancia de la investigación

Marco teórico:

Fundamentación teórica

Fundamentación legal

Preguntas a contestarse

Definición de términos

Metodología:

Diseño de Investigación (Tipo de Investigación)

Población y Muestra

Instrumentos de recolección de datos

Operacionalización de variables, dimensiones e indicadores

Procedimiento de la Investigación

Criterios para la elaboración y validación de la propuesta

Marco administrativo:

Cronograma, Presupuesto

125
Conclusiones y recomendaciones

Recolección de la Información

Posteriormente se recurrió a la aplicación de una encuesta, la misma que se

elaboró en una manualmente observando las necesidades de los desarrolladores de

aplicaciones móviles, para luego depurar cada pregunta que fuese necesaria para

realizar la encuesta ver anexo #7

PROCESAMIENTO Y ANÁLISIS

A través de los resultados obtenidos de la encuesta se realizó un análisis

específico a cada respuesta de las preguntas, este se muestra a continuación:

1- Condición del Informante

CUADRO Nº 6.
Condición del Informante
Frecuencia Frecuencia
Opciones Categorías
Absoluta Relativa
Población Aproximada de
1 Desarrolladores en empresas 104 23%
consultoras informáticas
Población Aproximada de
2 Desarrolladores en Entidades 43 10%
Financieras
Población Aproximada de
3 179 40%
Desarrolladores en la carrera de

126
ingeniería en sistemas
computacionales horario
matutino y nocturno
Población Aproximada de
Programadores independientes.
4 En la ciudad de Guayaquil. Que 122 27%
no han seguido alguna carrera de
ingeniería de sistemas
Total 448 100%
Fuente: Datos de la encuesta realizada
Elaboración: Héctor William Pilligua Robalino.

GRÁFICO Nº 12. Condición del Informante

23 Desarrolladores
122 104
en consultorias
43
179 10 desarrolladores
en entidades
financieras

Fuente: Datos de la encuesta realizada Cuadro Nº 2


Elaboración: Héctor William Pilligua Robalino

Análisis: de acuerdo al análisis, la mayor parte de los desarrolladores de

aplicaciones ya sean móviles o de escritorio son los que están cursando la carrera

de ingeniería de sistemas, esto corresponde al 40%, la mayoría de los

desarrolladores que se encuentran en este grupo consiguen trabajar en consultoras

informáticas, otros desarrolladores consiguen en empresas públicas o privadas, o

trabajos bajo pedido, cabe recalcar que los que terminan la carrera de ingeniería

en sistemas no se dedican al desarrollo de aplicaciones, seguido de los

desarrolladores independientes o los FreeLancer, que se dedican a la

programación y comercialización de aplicaciones, por lo usual estos

desarrolladores han hecho cursos vía web o recibiendo cursos de capacitación, el

conocimiento que consiguen de la herramienta de desarrollo les da una ventaja al

127
momento de implementación de sistemas, este grupo corresponde al 27%,

continuando con el grupo de desarrolladores de consultoras informáticas, en este

caso la mayoría se dedica al desarrollo por cuestiones laborales, y la empresas se

encarga de realizar las capacitaciones correspondientes para una labor correcta,

este grupo corresponde al 23%, por último el grupo de desarrolladores de

entidades financieras, este grupo es pequeño en comparación con el resto, ya que

en las entidades financieras se sirven más de los consultores informáticos para el

desarrollo, los programadores que se encuentran en este grupo se encargan de

realizar investigaciones de aplicaciones y nuevas herramientas, desarrollo de

tareas a seguirse, mantenimiento de sistemas, procesos burocráticos, reuniones,

lluvias de ideas y trato con el departamento organizacional para definición de los

proyectos que se tiene en curso, este grupo corresponde al 10%.

2. Utiliza Dispositivos BlackBerry.

CUADRO N° 7
Utiliza Dispositivos BlackBerry.
Frecuencia Frecuencia
Opciones Categorías
Absoluta Relativa
1 Si 220 49%
2 No 228 51%
Total 448 100%
Fuente: Datos de la encuesta realizada
Elaboración: Héctor William Pilligua Robalino

GRÁFICO Nº 13. Uso de Dispositivos BlackBerry

128
49
51
Si
No

Fuente: Datos de la encuesta realizada Cuadro Nº 3


Elaboración: Héctor William Pilligua Robalino

Análisis: De acuerdo al gráfico se denota que hay un gran número de

desarrolladores poseen equipos móviles BlackBerry, este grupo corresponde al

49%,, esto es por que utilizan el equipo para ver el resultado de la aplicaciones

realizadas para el dispositivo y por comodidad, el 51% restante optaron por otros

tipos de dispositivos por tecnología andorid o iPhone..

3. Adaptación a Nuevas Herramientas

CUADRO N° 8
Adaptación a Nuevas Herramientas.
Frecuencia Frecuencia
Opciones Categorías
Absoluta Relativa
1 Complicado 40 9%
Con tiempo
2 80 18%
Considerable
3 Adaptación 135 30%

129
rápida
No se Complica
4 193 43%
la adaptación
Total 448 100%
Fuente: Datos de la encuesta realizada
Elaboración: Héctor William Pilligua Robalino

GRÁFICO No.14 Adaptacion a Nuevas Herramientas.

Complicado
9
43 18
Con tiempo Considerable

Adaptación rápida
30

No se Complica la
adaptación

Fuente: Datos de la encuentra realizada


Elaborado. Héctor William Pilligua Robalino

Análisis: con la información obtenida se llega a comprobar que la mayoría de los

desarrolladores no tiene ninguna complicación en la adaptación a nuevas

herramientas de desarrollo, la adaptación no puede ser complicada pero se puede

tomar un tiempo considerable, su adaptación es más rápida si se cuenta con

herramientas gráficas, en este grupo se encuentra a los programadores junior y

semijunior, este grupo cuenta con el 43%. Otro grupo mayoritario tiene una

adaptación rápida a las nuevas herramientas de desarrollo, estos desarrolladores

cuentan con bastante conocimientos de códigos, por lo general aquí se

130
encontraron a los analistas, programadores sénior, este grupo cuenta con 30% de

participación. Otro grupo toma un tiempo considerable en la adaptación de las

nuevas herramienta de desarrollos, este tiempo de adaptación por lo general no

garantiza la adaptación total hacia la herramienta, y andan en constante adaptación

aprendiendo de la nueva interface para el desarrollo, por lo usual aquí hay

programadores sénior y junior que están acostumbrados a utilizar una herramienta

para las diferentes aplicaciones realizadas, por ejemplo si está acostumbrado a .net

se tomara un tiempo considerable en aprender a programar en eclipse, este grupo

cuenta con el 18% de participación. En el último grupo contamos con los

desarrolladores que se les complica la adaptación hacia nuevas herramientas de

desarrollo, en este grupo se encuentran programadores que ya tienen una edad

avanzada y ha estado desarrollando con una sola herramienta de programación,

por ejemplo programar en fox pro y luego quedar adaptarse a netbeans, este grupo

cuenta con un 9% de participación.

4. Lenguaje de Programación más Utilizados.

CUADRO N° 9
Lenguaje de Programación más Utilizados.
Frecuencia Frecuencia
Opciones Categorías
Absoluta Relativa
1 .Net 117 26%
2 Java 120 27%
3 Oracle-PLQSL-SQLSERVER 94 21%
4 Aplicaciones Web 112 25%
5 Cobol 5 1%
Total 448 100%
Fuente: Datos de la encuesta realizada
Elaboración: Héctor William Pilligua Robalino

131
GRÁFICO No.15 Lenguaje de Programación más Utilizados.

25 26
.net
java
plsql-sql-oracle
21
27 web
cobol

.
Fuente: Datos de la encuentra realizada
Elaborado. Héctor William Pilligua Robalino

Análisis: de acuerdo con la información obtenida se ve que hay un gran uso de

lenguaje java, se debe a que en los outsoursing son los lenguajes más usados por

ser open, este grupo corresponde al 27%, seguido del grupo de desarrollo que

prefieren utilizar lenguaje de .net, esto se debe a las ventajas de desarrollo y

menos complejidad en las implementaciones, debido a que se trata de una

herramienta licenciada solo se dedican a los mantenimientos de sistemas

existentes, esto corresponde al 26%, los programadores en ambiente web

corresponde al 25%, este grupo se dedica al diseño gráfico, está más conformado

con diseñadores, el lenguaje de programación que saben utilizar aparte de java y

.net son php, html5, JavaScript, el grupo de programación a nivel de base de datos

132
corresponde al 21%, estos son encargados de desarrollos de trabajos programados,

por ejemplo Jobs, así como el mejoramiento en tiempos de respuestas, seguridad

en la información revisión de estándares y optimización de consultas, por ultimo

tenemos al grupo que utiliza cobol, este grupo está en su mayoría en las entidades

financieras, corresponde al 5%., debido a que es un lenguaje de programación que

tiene bastante tiempo en el mercado, solo hay un pequeño grupo que se ha

dedicado al aprendizaje de este lenguaje, cabe recalcar que cobol es ideal para el

procesamiento de información masiva, carga de archivos con bastante

información que en ocasiones llega a superar el millones de registros, al ser un

lenguaje de muy bajo nivel, asemejado a C++ , el uso de recursos se reduce

considerablemente lo cual brinda la gran velocidad de procesamiento.

5. Desarrollo de Aplicaciones con tecnología J2ME.

CUADRO N° 10
Desarrollo de Aplicaciones con tecnología J2ME.
Frecuencia Frecuencia
Opciones Categorías
Absoluta Relativa
1 .Si 230 51%
2 No 218 49%
Total 448 100%
Fuente: Datos de la encuesta realizada
Elaboración: Héctor William Pilligua Robalino

GRÁFICO No.16 Desarrollo de Aplicaciones con tecnología J2ME.

133
49
51
Si
No

Fuente: Datos de la encuesta realizada


Elaborado. Héctor William Pilligua Robalino

Análisis: la mayoría en toda su trayectoria de desarrollo han utilizado tecnología

J2ME, en su mayoría el trabajo que han hecho ha sido con el IDE de eclipse,

también han desarrollado en netbeans, y en .net, este grupo corresponde al 51%, el

otro grupo ha desarrollado en otras herramientas por ejemplo .net utilizando

propiedades en los sitios web para adaptación en los dispositivos, en la actualidad

también utilizan HTML5, este grupo corresponde al 49%...

6. Conocimiento de Herramientas para Desarrollo de Aplicaciones para

Dispositivos Móviles.

CUADRO N° 11
Conocimiento de Herramientas para Desarrollo de Aplicaciones para
Dispositivos Móviles.
Frecuencia Frecuencia
Opciones Categorías
Absoluta Relativa
1 Muchas 214 48%
2 Algunas 130 29%
3 Pocas 104 23
4 Ninguna 0 0
Total 448 100%
Fuente: Datos de la encuesta realizada
Elaboración: Héctor William Pilligua Robalino

134
GRÁFICO No.17 Conocimiento de Herramientas para Desarrollo de

Aplicaciones para Dispositivos Móviles

23
48 Muchas
Algunas

29 Pocas
Ninguna

Fuente: Datos de la encuesta realizada


Elaborado. Héctor William Pilligua Robalino

Análisis: con la información obtenida se pudo constatar que hay un gran numero

de que conocen diferentes herramientas, este grupo corresponde al 48%, seguido

del grupo que programas como eclipse o .net, corresponde al 29%,el 23% restante

conoce o a escuchado de herramientas para el desarrollo con tecnología J2ME,

este grupo corresponde al 23%.

7. Uso de IDE Gráfico para Desarrollo de Aplicaciones.

CUADRO N° 12
Uso de IDE Gráfico para Desarrollo de Aplicaciones.
Frecuencia Frecuencia
Opciones Categorías
Absoluta Relativa
1 Siempre 210 47%
2 Algunas veces 140 31%
3 Muy Poco 75 17%
4 Nunca 23 5%
Total 448 100%
Fuente: Datos de la encuesta realizada
Elaboración: Héctor William Pilligua Robalino

GRÁFICO No.18 Uso de IDE para Desarrollo de Aplicaciones.

135
17 5 Siempre
47
Algunas veces
31 Muy Poco
Nunca

Fuente: Datos de la encuesta realizada


Elaborado. Héctor William Pilligua Robalino

Análisis: la mayoría de los desarrolladores prefieren desarrollar con una

herramienta que le faciliten visualizar el resultado final del sistema desarrollado,

este grupo corresponde al 47%, el 31% son desarrolladores que no ven

complejidad en desarrollar aplicaciones con interfaces graficas o mediante líneas

de código formar las interfaces de usuarios, el 17% son desarrolladores que no

ven la necesidad de un IDE gráfico para el desarrollo de interfaces, por lo general

en este grupo se encuentra personal de bases de datos, el 5% corresponde a

desarrolladores que no ven la necesidad del desarrollo de interfaces gráficas.

8. Desarrollos Frecuentes de Sistemas Informáticos.

CUADRO N° 13
Desarrollos Frecuentes de Sistemas Informáticos.
Frecuencia Frecuencia
Opciones Categorías
Absoluta Relativa
1 Empresarial 210 46%
2 Oficina 90 20%
3 Juegos 25 6%
4 Varios 123 28%
Total 448 100%
Fuente: Datos de la encuesta realizada
Elaboración: Héctor William Pilligua Robalino

GRÁFICO No.19 Desarrollos Frecuentes de Sistemas Informáticos.

136
28
46 Empresarial
Oficina
6
Juegos
20
Varios

Fuente: Datos de la encuesta realizada


Elaborado. Héctor William Pilligua Robalino

Análisis: de acuerdo a los datos obtenidos se ve claramente que la mayoría de los

desarrolladores desarrollan o dan mantenimiento a sistemas empresariales, está

conformado por el 46%, el grupo que le sigue son los que realizan sistemas varios,

en este grupo se encuentran los desarrolladores de sitios web, sistemas

empotrados, programación a bajo nivel, desarrollo móvil, entre otros, constituye el

23%, el grupo de desarrollo de oficina desarrollan sistemas compatibles con

office, corresponde al 20%, el 6% conforma los desarrollos de juegos, ya sean de

aprendizaje, infantiles o para dispositivos móviles.

9. Sistemas Operativos Móviles.

CUADRO N° 14
Sistemas Operativos Móviles.

Frecuencia Frecuencia
Opciones Categorías
Absoluta Relativa
1 Android 200 45%
2 IOS 65 15%
3 RIM BlackBerry 155 35%
4 Sysmbian 13 3%
5 Windows Mobile 10 2%
6 Otros 5 1%
Total 448 100%
Fuente: Datos de la encuesta realizada
Elaboración: Héctor William Pilligua Robalino

137
GRÁFICO No.20 Sistemas Operativos Móviles.

3 21
Android
45 IOS
35
RIM BlackBerry
Sysmbian
15
Windows movile
Otros

Fuente: Datos de la encuesta realizada


Elaborado. Héctor William Pilligua Robalino

Análisis: de acuerdo a los datos obtenidos se ve que hay una gran cantidad de

personas que utilizan dispositivos con sistema operativo android, este grupo

constituye el 45%, seguido de las personas que utilizan dispositivos con

BlackBerry, constituyendo el 35%, el grupo utiliza iPhone constituye el 15%,

dispositivos con sistemas symbias constituyen el 3%, dispositivos con sistemas de

Windows Mobile consta el 2% y los que utilizan dispositivos comunes constan el

1%.

10. Herramientas de Programación más Utilizadas para Desarrollo de

Aplicativos Móviles.

CUADRO N° 15
Sistemas Herramientas de Programación más Utilizadas para Desarrollo de
Aplicativos Móviles.
Frecuencia Frecuencia
Opciones Categorías
Absoluta Relativa
1 Eclipse 230 40%
2 NetBeans 150 26%
3 .Net 100 14%
4 Programación Web 80 17%
5 Otros 13 3%

138
Total 448 100%
Fuente: Datos de la encuesta realizada
Elaboración: Héctor William Pilligua Robalino

GRÁFICO No.21 Herramientas de Programación más Utilizadas para


Desarrollo de Aplicativos Móviles.

3
Eclipse
17 40
NetBeans
14
.Net
26
Programacion Web
Otros

Fuente: Datos de la encuesta realizada


Elaborado. Héctor William Pilligua Robalino

Análisis: De acuerdo a los datos obtenidos se puede comprobar que la mayoría de

los desarrolladores al momento de implementar aplicaciones para dispositivos

móviles prefieren Eclipse, este grupo conforma el 40%, seguido del grupo que

prefiere usar netbeans por la facilidad de comunicación con java, esto conforma el

26%, los desarrolladores, ellos conforman el 17%, el programadores en .net

conforman el 14%, y los desarrolladores que programan en otras herramientas no

mencionadas conforman el 3%.

CRITERIOS PARA LA ELABORACIÓN DE LA PROPUESTA

Para el desarrollo de la propuesta se tuvieron en cuenta los términos generales que

a continuación se muestran:

 Fundamentos metodológicos en la elaboración del modelo.

 Metodología para el uso del lenguaje de programación C#.

 Metodología para el desarrollo de la plataforma .NET.

139
 Metodología para la elaboración de módulos

Con estos elementos, el autor de la presente investigación, desarrollo el diagrama

de flujo de la información, ver anexo 1, con este elemento se procede con el

análisis y el diseño del aplicativo que facilite el desarrollo de aplicaciones para

dispositivos móviles.

CRITERIOS DE VALIDACIÓN DE LA PROPUESTA

Para valorar la factibilidad del modelo se aplica el método Delphi o de criterio de

expertos.

El método Delphy o de criterio de expertos consiste en la utilización del juicio

intuitivo de un grupo de expertos para obtener un consenso de opiniones,

reflejando las valoraciones individuales de los mismos.

Se seleccionaron 25 especialistas a quienes se les aplicó la encuesta a fin de

determinar si verdaderamente podían ser considerados como expertos. A partir del

criterio de autovaloración los mismos contestaron la encuesta que aparece en el

anexo número 2. La selección realizada se efectuó en atención al comportamiento

de las variables siguientes:

 Investigaciones realizadas vinculadas con la actividad informática.

 Experiencia en el desarrollo de software, particularmente en tecnología web.

 Investigaciones relacionadas con el tema de investigación de la presente tesis.

140
La autovaloración realizada por los expertos permite determinar si deben ser

considerados como tales a partir del coeficiente de competencia KC y del

coeficiente de argumentación KA. Los resultados del coeficiente se muestran en

la tabla 1 del anexo número 3.

De acuerdo a sus autovaloraciones no se toman en consideración a 5 de los

especialistas encuestados, ver anexo número 4.

Dentro de los expertos seleccionados, el 2 posee grado científico de máster. De

ellos el 23 son profesores a tiempo parciales.

A los especialistas que fueron seleccionados como expertos, 20 en total, se les

entrego un cuestionario que contenía las principales cuestiones relativas al modelo

y al sitio web que aparecen en el anexo número 4.

Con el fin de evaluar los aspectos anteriormente mencionados los expertos

emitieron sus juicios valorativos a partir de un conjunto de cuestionamientos que

se plantean a continuación:

1. Valoración de las dimensiones planteadas en el modelo.

2. Valoración de los métodos científicos utilizados en la elaboración del modelo.

3. Valoración de la eficacia del modelo en la compatibilidad la solución

Generada con el IDE Eclipse.

4. Valoración de los módulos diseñados.

5. Valoración del grado de correspondencia entre el modelo y el aplicativo

Gráfico.

141
6. Valoración de la misión del aplicativo de desarrollo de interfaces gráficas.

Se utilizaron cinco categorías de valoración.

1.- Muy adecuado

2.- Bastante adecuado

3.- Adecuado

4.- Poco adecuado

5.- Inadecuado

Una vez obtenida la valoración de los expertos, se procesó la información

mediante el software estadístico Excel (2007), el cual arrojó los cálculos de la

matriz de frecuencias, las frecuencias acumuladas y frecuencias relativas

acumuladas que aparecen en el anexo número 6.

Finalmente a través del uso del software estadístico Excel (2007) se determinó la

imagen de cada uno de los valores de las celdas de la tabla de frecuencias

acumulativas relativas, por la inversa de la curva de la normal (ver anexo 6), se

obtienen los puntos de corte donde se concluye, que las preguntas 1, 4 y 6 se

evalúan de muy adecuados, el resto de las mismas son evaluados de bastante

adecuados.

A continuación se muestran los resultados de la valoración de las preguntas por

los expertos, de acuerdo con las categorías establecidas.

CUADRO Nº. 16

Valoración de las Preguntas por los Expertos.

Nº de
Pregunta Categoría
pregunta

142
Valoración de las dimensiones planteadas en el
Muy adecuada
1 modelo.
Valoración de los métodos científicos utilizados en
2 Bastante adecuada
la elaboración del modelo.
Valoración de la eficacia del modelo en la
Bastante adecuada
compatibilidad la solución generada con el IDE
3
Eclipse.

Valoración de los módulos diseñados. Muy adecuada


4
Valoración del grado de correspondencia entre el Bastante
modelo y el aplicativo gráfico. Adecuada
5
Valoración de la misión del aplicativo de desarrollo Muy adecuada
6 de interfaces gráficas.

Fuente: Elaboración propia.


Elaboración: Héctor William Pilligua Robalino.

El total de expertos valoran así, de forma positiva, la propuesta tanto en

calidad, en la concepción en la concepción de los módulos para la generación

de la solución, la compatibilidad de la solución generada en el aplicativo con

el IDE eclipse, y concluyeron que se el aplicativo de generación de interfaces

gráficas para dispositivos BlackBerry, ayudaría a mejorar la complejidad del

desarrollo de las aplicaciones java para los dispositivos móviles BlackBerry.

La presente propuesta tiene fundamentos considerables ya que optimizara el

desarrollo de las aplicaciones para dispositivos móviles BlackBerry,

mejorando el tiempo de desarrollo y disminuyendo la carga cognitiva del

desarrollador para optimizar los aplicativos realizados.

143
CAPÍTULO IV

MARCO ADMINISTRATIVO

Cronograma

La dinámica actual requiere del desarrollo de procesos de calidad. Este proceso

requiere de la ejecución en tiempo de proyectos lo que garantizará el desarrollo de

eficiencia y eficacia en cuanto a la administración de recursos económicos

financieros., en este contexto el autor de la presente investigación ha desarrollado

el siguiente cronograma.

Cronograma de Actividades en función del desarrollo del proyecto

144
Una vez establecido el cronograma se hace necesario establecer formas de

búsqueda de financiamiento, lo que garantizará el funcionamiento adecuado

del proyecto

Presupuesto

La búsqueda de la forma de financiar un proyecto puede dar como resultado una

variedad bastante importante de opciones diferentes. El evaluador de proyectos

debe verse enfrentado, y de hecho así ocurre, con la búsqueda de la mejor

alternativa de financiamiento para el proyecto que está evaluando.

145
En el caso objeto de estudio y por las características de la actividad que se

desarrolla la fuente de financiamiento que se utilizará es con capital propio, pues

en este caso solo se requiere del personal calificado y los medios necesarios para

el desarrollo de software. Esta es una tendencia en el desarrollo de nuevas

tecnologías, que a la vez favorecen la reducción de costos y la rapidez con que se

desarrollan diversas actividades en las organizaciones. Por consiguiente se

desglosan a continuación las partidas de Activos y el Capital total que se requiere

para dar inicio al negocio

CUADRO 17
Proyección Inicio del Negocio

Activo Circulante
Efectivo $ 700.00
Activos Fijos
CPU $ 300.00
Teclado 15.00
Ratón 15.00
Monitor 250.00
Modem 30.00
Cable USB Ca 101 15.00
Equipo Smartphone 350.00
Activos Intangibles
Consumo internet $ 200.00
Dominio 180.00
Capital $ 2020.00
Fuente: Héctor William Pilligua Robalino
Elaborado: Héctor William Pilligua Robalino

146
Una vez determinados los importes a utilizar referentes a los Activos y el Capital
Total, se realizó una proyección del Estado de Resultado para el primer año, el
cual incluye la de diferencia de Ingresos con Gastos

CUADRO No. 18
Cuadro de Ingresos
Ingresos
Financiamiento Propio $ 2,500
Fuente: Héctor William Pilligua Robalino
Elaborado Por: Héctor William Pilligua Robalino

CUADRO No. 19
Cuadro de Egresos

Egresos
Hardware:
CPU $ 250
Teclado $ 15
Ratón $ 15
Monitor $ 250
Equipo BlackBerry $ 250
Cable USB Ca 101 $ 15

Software
Licencia
Sistema Operativo Win7 $ 700
Windows
0.0
Sistema Operativo Linux $0
(opcional)
Licencia BlackBerry $ 30
Consumo internet $ 140

Varios
Documentación $ 85
Cursos de Capacitación
$ 700
Móvil
Tiempo empleado $ 50

$
Total
2,500
Fuente: Héctor William Pilligua Robalino
Elaborado Por: Héctor William Pilligua Robalino

147
Ingresos:

Estos ingresos serán utilizados para la adquisición de todo lo mencionado

en el listado de egresos para proceder con el desarrollo del tema de tesis, estas

adquisiciones no se quedaran en la institución educativa, solo se entregara a la

institución el proyecto desarrollado

Egresos:

Constituye todos los materiales e insumos utilizados en el desarrollo del

tema de tesis

CAPÍTULO V

CONCLUSIONES Y RECOMENDACIONES

CONCLUSIONES:

 ¿Se Reducirá el Tiempo de Desarrollo de las Aplicaciones usando una

interfaz gráfica?

Se pudo concluir que los usuarios finales han optado por tener dispositivos

Smartphone, por ello se ve imperativo el desarrollo de aplicaciones para la

nueva gama de telefonía móvil, debido a que el desarrollo de aplicaciones para

los dispositivos móviles es un área que se ha estado incursionando en los

últimos años, la información necesaria no se encuentra en su totalidad

148
disponible, por ello el desarrollo se hace extenso, sin embargo, los

desarrolladores optan por herramientas que facilitan el desarrollo de estas

aplicaciones.

El objetivo de la investigación es reducir el tiempo de desarrollo de las

aplicaciones para dispositivos móviles BlackBerry, al facilitar una interface

gráfica donde se pueden ubicar los elementos en la pantalla de manera que se

ajustar de mejor manera a los requerimientos solicitados por el contratante

hacia el desarrollador, al no tener que dedicar tiempo en el desarrollo gráfico,

el tiempo de desarrollo es optimizado.

 ¿Será más factible realizar una interfaz gráfica desarrollando con

líneas de código?

Con los resultados obtenidos en la encuentra se puede constatar que los

desarrolladores prefieren una interfaz que le permitan ver el producto final en

el momento de desarrollo.

Se pudo constatar que en el desarrollo de interfaces de usuarios utilizando un

aplicativo que facilite la ubicación de los elementos y visualizando el

resultado final de la aplicación, se pudo constatar que resulta más beneficio

para el desarrollador de aplicaciones contar con una herramienta que le

permita visualizar el resultado final en el aspecto gráfico y no introducir líneas

de código para tener una interfaces de usuario, en ocasiones las interfaces

149
graficas contiene varios elementos y colocar esos objetos en la pantalla

mediante líneas de código es más complejo que seleccionar el elemento y

ubicarlo donde se adapte a lo solicitado por el cliente.

 ¿Se entenderá de mejor manera el desarrollo de una aplicación móvil

usando una interfaz amigable?

Con los resultados obtenidos se pudo apreciar que los desarrolladores al crear

aplicaciones, con un entorno gráfico se facilitan la compresión de los

elementos utilizados.

Se pudo constatar que el desarrollo de una aplicación con una herramienta que

genera un código fuente es de ayuda para los desarrolladores ya que el ver la

ubicación de los diferentes elementos, ´puede revisar el código y de esta

manera poder implementarlo en un IDE que no posea la facilidad de una

interfaz gráfica.

 ¿Sale más factible seleccionar un curso o utilizar una herramienta

para auto aprendizaje?

Se ha comprobado que a pesar de contar con una herramienta que facilite el

desarrollo de las interfaces gráficas, es necesario instruirse en cursos del

lenguaje que se está utilizando, para el caso de la tesis realizada , la tecnología

J2ME, estos cursos pueden ser vía online o presenciales.

150
RECOMENDACIONES:

 Para la optimización de los tiempos de desarrollo de aplicaciones para

dispositivos móviles BlackBerry usando interfaces graficas se recomienda

que el desarrollador tenga una clara idea de la funcionalidad de los

diferentes controles que se pueden utilizar en la interface de usuario, se

puede obtener esta información con la ayuda de internet.

 En el desarrollo de las interfaces gráficas, al utilizar una herramienta que

facilita la ubicación de los mismos se recomienda que se manejen

estándares de desarrollo, lo cual facilita considerablemente el desarrollo de

los sistemas,

 El desarrollo para dispositivos móviles es una área de la programación que

cada vez va cogiendo más adeptos, pero la funcionalidad de las

aplicaciones para móviles no son las mismas que se realizan en los pc

estacionarios, por ello se recomienda tener conceptos básicos claros de la

tecnología J2ME y como se la aplica en los diferentes dispositivos,

teniendo en cuenta que las aplicaciones java RIM cuentan con sus propias

librerías es necesario tener conocimiento de las limitaciones del equipo.

 Se recomienda cursos de J2ME para conocer los diferentes eventos que se

pueden manejar para los diferentes controles que se encuentra en una

151
interfaz de usuario de un dispositivo móvil BlackBerry, estos cursos

pueden ser en lugares certificados para estos cursos o puede ser vía

online, adicional a esto se recomienda tener clara las diferentes ventajas

que se ofrece en cada versión de Sistema Operativo que hay en los

dispositivos móviles, para de esta manera tener claro las limitaciones del

aplicativo a los que el desarrollador se ve al momento de implementar los

aplicativos realizados.

BIBLIOGRAFÍA

 Alonso Álvarez García; José Ángel Morales Grela. (2002). J2ME (Guías
Practicas)

 Miguel Ángel Lozano Ortega. (2005). Programación de Dispositivos

Móviles con J2ME

 Agustín Froufe Quintas; Patricia Jorge Cardenes. ( 2004). J2ME Java 2

Micro Edition: Manual de Usuario y Tutorial

 Research In Motion Limited (2011). BlackBerry Java SDK.

 Horacio Daniel Vallejo. (2006). Funcionamientos del teléfono. [En línea].

Recuperado 02 de noviembre del 2012, de

http://www.gratisprogramas.org/descargar/telefonia-celular-8-libros-pdf-

esencial-estudiantes-de-electronicatecnicos/

152
 José Manuel Huidobro. (2001). Manual de Telefonía: Telefonía Fija y

Móvil (4ª ED.).

 Research In Motion. (2013). Herramientas de desarrollo BlackBerry[En

Línea] Recuperado 01 Febrero 2013 de

http://mx.blackberry.com/software/developer.html

 Jeff Ferbuson, Brian Pattersson, Jason Beres (2012) La Biblia de C#.

 Research In Motion. (2013). Guía de Desarrollo. [En Línea] Recuperado el

01 de febrero del 2013 de http://docs.blackberry.com/ko-

kr/developers/deliverables/16725/Start_the_BBSmrtphnSmltr_and_open_a

_web_page_607475_11.jsp

 José Antonio González Seco. (2007). El lenguaje de programación C#.

 José Antonio González Seco( 2007) LibroCSharp [En Línea] Recuperado

de http://dis.um.es/~bmoros/privado/bibliografia/LibroCsharp.pdf

 Nacho Cabanes (2013) C:Sharp[En Línea] Recuperado 06 de marzo del

2013 de http://chvere.blogspot.com/2011/11/manual-completo-de-c-sharp-

en-espanol.html

153
 ANEXOS

Anexo # 1:FLUJO DE PROCESOS

154
Nº 2: Modelo de Procesos
Fuente: Héctor William Pilligua Robalino

 Anexo # 2: ENCUESTA PARA SELECCIÓN DE EXPERTOS

Objetivo: Selección de expertos para validar criterios respecto a la propuesta realizadas por el
investigador.

Estimado especialista(a):

Usted ha sido seleccionado para colaborar con la investigación “Interfaces Gráficas para
Desarrollo de Aplicaciones Java en BlackBerry, Complejidad del Desarrollo y Propuesta de
Ambiente de Desarrollo Gráfico”.

En tal sentido se elabora esta encuesta para que la validación cualitativa de la propuesta del
prototipo elaborado en la presente investigación. Por ello le pedimos que lea con detenimiento la
información que se le solicita y responda con sinceridad todas las preguntas.

Muchas Gracias

Solicitamos responda las siguientes interrogantes.

I. Datos generales del encuestado:

1. Nombre: ___________________________________________________________

2. Centro al que pertenece: _______________________________________________

3. Años de experiencia en el desarrollo de

software.______________________________

155
4. Investigaciones realizadas vinculadas de alguna manera con la temática

tratada._______________________________________________________

5. Categoría Científica. ____________________

6. Grado científico. ____________________

II- Test de Autovaloración del consultado:

Evalúe su nivel de dominio acerca de la esfera sobre la cual se le consultó marcando con una cruz

sobre la siguiente escala (1: dominio mínimo; 10: dominio máximo)

____ ____ ____ ____ ____ ____ ____ ____ ____ ____

1 2 3 4 5 6 7 8 9 10

Evalúe la influencia de las siguientes fuentes de argumentación en los criterios valorativos

aportados por usted:

Grado de influencia de las fuentes de


Fuentes de argumentación argumentación
Alto Medio Bajo
Análisis teóricos realizados por usted.
Su propia experiencia.
Trabajos de autores nacionales.
Trabajos de autores extranjeros.
Su conocimiento del estado del problema en el
extranjero.
Su intuición.

Muchas gracias por su colaboración.

156
Anexo # 3: DETERMINACIÓN DEL COEFICIENTE K.

Tabla 1. COMPETENCIA DE LOS EXPERTOS.


Valores del coeficiente de conocimiento (kc), del coeficiente de
argumentación (ka) y coeficiente de competencia (k) de los expertos.

Coeficiente de Coeficiente de Coeficiente de


Expertos conocimiento (Kc) argumentación competencia
(Ka) (K)
1 0.70 0.90 0,80
2 0.80 0.90 0.85
3 0,80 1,00 0,90
4 0.60 0.80 0.70
5 0,80 0,90 0,85
6 0,80 0,90 0,85
7 0,80 0,90 0,85
8 0,70 0,90 0,80
9 0,90 1,00 0,95
10 O,80 1,00 0,90
11 0.60 0.80 0.70
12 O,80 1,00 0,90
13 0,80 1.00 0,90
14 0,80 0,80 0,80
15 090 0,90 0,90
16 0,70 0,70 0,70

157
17 0,70 0,90 0.80
18 0,90 1,00 0,95
19 0.50 070 0.60
20 0,80 0,80 0.80
21 0.80 090 0,85
22 0,40 0,70 0,55
23 0,90 1,00 0,95
24 0.80 1,00 0.90
25 0,80 1,00 0,90
El código para la interpretación del coeficiente de competencia de cada experto es
el siguiente:
 Si 0.8< k < 1.0, el coeficiente de competencia es alto.
 Si 0.5< k < 0.8, el coeficiente de competencia es medio.
 Si k < 0.5, el coeficiente de competencia es bajo.
Nota: De acuerdo al coeficiente de competencia de cada experto, no se
consideraron para la valoración los expertos 4, 11, 16, 19 y 22.

 Anexo # 4: ENCUESTA A LOS EXPERTOS SELECCIONADOS.


Objetivo: Valorar cualitativamente el proyecto de Interfaces Gráficas para Desarrollo de
Aplicaciones Java en BlackBerry, Complejidad del Desarrollo y Propuesta de Ambiente de
Desarrollo Gráfico.

Estimado especialista(a):
Usted ha sido seleccionado para colaborar con la investigación “Interfaces Gráficas para
Desarrollo de Aplicaciones Java en BlackBerry, Complejidad del Desarrollo y Propuesta de
Ambiente de Desarrollo Gráfico”.

Por ello le pedimos que lea con detenimiento la información que se le solicita y responda con
sinceridad todas las preguntas.

Muchas Gracias

I. Cuestionario sobre la propuesta presentada


Para la evaluación de sus criterios acerca de la propuesta presentada (modelo), se indican a
continuación varias interrogantes, las cuales contemplan los aspectos que serán objeto de análisis:

Responda el cuestionario atendiendo a la siguiente escala:


5. Muy adecuada 4. Bastante adecuada 3 Adecuada 2 Poco adecuada
1. Inadecuada

Cuestionario
1. Valoración de las dimensiones planteadas en el modelo.
5 4 3 2 1

2. Valoración de los métodos científicos utilizados en la elaboración del modelo.


5 4 3 2 1

158
3. Valoración de la eficacia del modelo en la compatibilidad la solución
generada con el IDE Eclipse.
5 4 3 2 1

4. Valoración de los módulos diseñados.


5 4 3 2 1

5. Valoración del grado de correspondencia entre el modelo y el aplicativo


gráfico.
5 4 3 2 1

6. Valoración de la misión del aplicativo de desarrollo de interfaces gráficas.


5 4 3 2 1

Anexo #5 CRITERIOS DE LOS EXPERTOS CONSULTADOS. MATRIZ

DE FRECUENCIAS DE LA ENCUESTA

Tabla 2. TABLA DE FRECUENCIAS ABSOLUTAS.

C1 C2 C3 C4 C5
Cuestionario Muy Bastante Poco No TOTAL
adecuada adecuada Adecuada adecuada adecuada
P-1 13 7 - - - 20
P-2 2 9 - 3 5 20
P-3 1 14 2 - 3 20
P-4 16 5 - - - 20
P-5 2 11 1 2 4 20
P-6 14 2 2 1 1 20

Tabla 3. TABLA DE FRECUENCIAS ABSOLUTAS ACUMULADAS

C-1 C-2 C-3 C-4 C-5


P-1 13 18 20 20 20
P-2 2 9 15 15 20
P-3 1 17 11 15 20
P-4 16 14 18 20 20
P-5 2 20 12 10 20
P-6 14 9 9 20 20

Tabla 4.TABLA DE FRECUENCIAS RELATIVAS ACUMULADA

159
C-1 C-2 C-3 C-4 C-5
P-1 0,65 0.90 1,00 1,00 1.00
P-2 0,10 0,45 0,75 0,75 1.00
P-3 0,05 0,85 0,55 0,75 1.00
P-4 0,80 0,70 0,90 1,00 1.00
P-5 0,10 1.00 0,60 0,50 1.00
P-6 0,70 0,45 0,45 1,00 1.00

Anexo #6: IMAGEN DE CADA UNO DE LOS VALORES DE LAS


CELDAS DE LA TABLA DE FRECUENCIAS ACUMULATIVAS
RELATIVAS, POR LA INVERSA DE LA CURVA NORMAL
Tabla 5. IMAGEN DE CADA UNO DE LOS VALORES.
C-1 C-2 C-3 C-4 Suma Promedio N-P
P-1 0,13 3,48 3,48 3,48 10,57 2,64 -1,73
P-2 -1,64 0,00 0,25 0,67 -0,72 -0,18 1,09
P-3 -1,64 0,39 0,52 0,67 -0,06 -0,02 0,92
P-4 0,67 1,64 3,48 3,48 9,28 2,32 -1,41
P-5 -1,64 0,13 0,25 0,52 -0,74 -0,19 1,09
P-6 0,67 1,28 3,48 3,48 8,92 2,23 -1,32
∑ -3,46 6,92 11,47 12,31 27,24
Puntos
de
corte -0,58 1,15 1,91 2,05

N= 27.24/6x5= 0,9080
Los puntos de corte sirven para determinar la categoría o grado de adecuación de
cada pregunta, según la opinión de los expertos consultados. Con ello se opera del
modo siguiente:
Muy adecuada Bastante Adecuada Poco adecuada No adecuada
adecuada
-0,58 1,15 1,91 2,05

160
Nota: De acuerdo a los puntos de corte se valora positivamente el proyecto de

Interfaces Gráficas para Desarrollo de Aplicaciones Java en BlackBerry, Complejidad del

Desarrollo y Propuesta de Ambiente de Desarrollo Gráfico .

Anexo # 7:
Objetivo: Recolectar información de las personas que se dedican al desarrollo de
aplicaciones, que utilicen los diferentes tipos de lenguajes de programación y comprobar
el nivel de conocimiento de programación orientada a objetos que poseen.

Instructivo: Para responder adecuadamente sírvase escribir el número de la alternativa


seleccionada en el cuadrado que se encuentra a la derecha.

1) Condición del informante(Empresa donde desarrolla aplicaciones).


1. Consultor informático
2. Desarrollador en entidad financiera
3. Estudiante de Ingeniería en sistemas
4. Desarrollador independiente

2) ¿Utiliza Dispositivos BlackBerry?


1. Si
2. No

3) ¿nivel de adaptación a nuevas herramientas de desarrollo?


1. Complicado
2. Con tiempo considerable
3. Adaptación rápida
4. No se complica la adaptación.

4) ¿Qué lenguaje de Programación utiliza más?


1. .Net
2. Java
3. Oracle-Pl-SQL, SQLSERVER
4. Aplicaciones Web
5. Cobol

5) ¿Ha desarrollado Aplicaciones con tecnología J2ME?

161
1. Si
2. No
6) ¿Conocimiento de Herramientas para desarrollo de aplicaciones para dispositivos móviles?
1. Muchas
2. Algunas
3. Pocas
4. ninguna

7) ¿Uso de IDE para desarrollo de aplicaciones?


1: Siempre
2: Algunas veces
3: DMuy Poco
4: nunca

8) ¿Desarrollo Frecuente de aplicaciones informáticas?


1. Empresarial
2. Oficina
3. Juegos
4. Varios

9) ¿Qué sistema Operativo Móvil más utiliza?


1. Android
2. IOS
3. RIM BlackBerry
4. Symbian
5. Windows Mobile
6. Otros

10) ¿Herramienta de Programación que más utiliza para el desarrollo de aplicaciones


móviles
1: Eclipse
2: NetBeans
3: .NEY
4: Programación web
5. Otros

162
MANUAL TECNICO

1
Indice General

Introducción 5

Objetivo del Manual 5

Modelo de Desarrollo Espiral 6

Determinar Objetivos 7

Análisis del Riesgo 7

Desarrollar y verificar 7

Planificar 7

Angular 7

Radial 7

Principios básicos del Modelo Espiral 8

Diagramas UML 8

Diagramas de Casos de Usos 8

Definición de actores 8

Diagrama de Colaboración 12

Diagrama de Contexto 13

Diagrama de Eventos 13

Diagrama de Proceso 13

Diagrama de Secuencias 15

EL FRAMEWORK 18

ESTRUCTURA 28

Contenido del archivo org.eclipse.jdt.core.prefs 20

1
Contenido del archivo .classpath 20

Contenido del archivo .proyect 20

Contenido del archivo BlackBerry_App_Descriptor.xml 21

DATOS TÉCNICOS DEL APLICATIVO 22

Modelo Entidad Relación 23

Diccionario de Datos 23

CODIFICACIÓN DE COMPONENTES 23

Codificación AppConfig 165

2
Indice de Gráficos

GRAFICO 1 Gráfico de Programación Espiral 7

GRAFICO 2 Caso de Uso 1er Nivel: Creación de interfaz Grafica 10

GRAFICO 3 Caso de Uso 2do. Nivel: Generación de Solución 11

GRAFICO 4 Diagrama de Colaboración 12

GRAFICO 5 Diagrama de contexto nivel 0 – AGBB 13

GRAFICO 6 Diagrama de colaboración Nivel Superior 13

GRAFICO 7 Diagrama de Eventos 14

GRAFICO 8 Diagrama de Proceso 14

GRAFICO 9 Carpeta Plantilla 14

GRÁFICO 10 Contenido Plantillas 19

GRAFICO 11 Contenido de Carpeta Setting 19

GRAFICO 12 Icon App 21

3
Índice de Cuadros

CUADRO 1 Actor 1 9

CUADRO 2 Actor 2 9

CUADRO 3 Descripción de Casos de Uso 1 10

CUADRO 4 Definición de 2do Caso de Uso 11

CUADRO 5 Características Generales 22

4
CAPITULO 1

MANUAL TÉCNICO

INTRODUCCIÓN

La finalidad de este documento es explicar las distintas tecnologías involucradas en


el desarrollo de nuestra aplicación de escritorio. Las Herramientas utilizadas son C#
hecha con aplicaciones Windows.

Para el desarrollo del aplicativo fue necesario instalar visual estudio .net 2012 con el
framework 3.5 o superior.

El aplicativo fue desarrollado para sistemas operativos Windows vista o superior.

Paquete de software necesarios

Framework 3.5 o superior

Java jdk1.7.0

BlackBerry Java Plug-in 1.5.2

Sistema Operativo Windows vista o superior. Entre los diferentes lenguajes que se
encuentran en visual estudio .net se utilizara el lenguaje C# con generación de
archivos, se generara un archivo resultado que es un código java, para la compilación
del código generado se utilizara java versión 1.7.0.

Existen varios plug-in para desarrollo de aplicaciones en lenguaje java para


BlackBerry, pero que utilizaremos será el 1.5.2 el cual se encuentra con él la versión

5
de compilador 6 de java para BlackBerry.

OBJETIVO DEL MANUAL

Estos manuales tienen como principales objetivos brindar a los usuarios finales y una
concepción técnica del sistema AGBB (Ambiente Grafico para BlackBerry), en los
siguientes aspectos:

 Descripción del funcionamiento de los principales procesos llevado a cabo por


el usuario final.
 Descripción de las validaciones requeridas para el correcto uso de la
aplicación
 Descripción de los diferentes modelos utilizados.

MODELO DE DESARROLLO ESPIRAL

Fue desarrollado por Boehm en 1986, este es un modelo de proceso evolutivo.


Es un generador de modelo de proceso guiado por el riesgo que se emplea para
conducir sistemas intensivos de ingeniería de software concurrente y a la vez con
muchos usuarios.

Se caracteriza principalmente por:

 Un enfoque cíclico para el crecimiento incremental del grado de definición e


implementación de un sistema, mientras que disminuye su grado de riesgo.

 Un conjunto de puntos de fijación para asegurar el compromiso del usuario con


soluciones de sistema que sean factibles y mutuamente satisfactorias.

6
El proceso de cada vuelta es:

o Determinar Objetivos: establecer las necesidades que envuelven el programa.

o Análisis del Riesgo: Se estudian todos los riesgos potenciales y se seleccionan


una o varias alternativas propuestas para reducir o eliminar los riesgos.

o Desarrollar y verificar: programar e ir probando el programa para ir


disminuyendo los errores.

o Planificar: Se planifican los siguientes pasos para volver al inicio de la


espiral, mantiene dos dimensiones:

Angular.- avance del Software dentro de un ciclo.

Radial.- aumento del coste del Proyecto, ya que con cada nueva
interacción se pasa más tiempo desarrollando.

Al ser un modelo de Ciclo de Vida orientado al riesgo se dice que uno de los aspectos
fundamentales de su éxito radica en que el equipo que lo aplique sea capaz de
detectar y catalogar correctamente dicho riesgo.

Este sistema es muy utilizado en proyectos largos, que necesitan constantes cambios.
GRAFICO 1
Gráfico de Programación Espiral

7
Principios básicos del Modelo Espiral

 Decidir qué problema se quiere resolver antes de ir a resolverlo.


 Examinar tus múltiples alternativas de acción y elegir una de las más
convenientes.
 Evaluar qué tienes hecho y qué tienes que haber aprendido después de hacer
algo.
 Conocer los niveles de riesgo, que tendrás que tolerar.

Diagramas UML

Con el objeto de manejar una mejor organización y tener un soporte teórico


del sistema he considerado necesario incluir diagramas que pertenecen al lenguaje de
modelado visual (UML Lenguaje Unificado de Modelado).

Diagramas de Casos de Usos

Sirve como una técnica para la captura de requisitos potenciales de un nuevo sistema o
actualización de software. Cada caso de uso proporciona uno o más escenarios que indican
cómo debería interactuar el sistema con el usuario o con otro sistema para conseguir un
objetivo específico.

Definición de actores

Los actores son los diferentes participantes que se encuentran en el uso del sistema,
dependiendo del sistema desarrollado, los roles de estos actores pueden variar,

8
CUADRO 1

Actor 1

ACT-01 Desarrollador de Aplicaciones

Este actor es el encargado de


desarrollar los diferentes
Descripción requerimientos solicitados por los
usuarios propietarios.

Caso de Uso Desarrollo de aplicación en AGBB

Propósito Desarrollo de la aplicación para el


dispositivo móvil BlackBerry.

CUADRO 2

Actor 2

ACT-02 Usuario Propietario

Este actor es el propietario del


dispositivo móvil donde se estará
Descripción ejecutando el aplicativo resultado
desarrollado por el usuario
desarrollador de aplicaciones, este
usuario en la mayoría de los casos
es el propietario del dispositivo.

Caso de Uso Uso de aplicación en AGBB

Propósito Dar uso al aplicativo desarrollado


en el AGBB.

9
GRAFICO 2
Caso de Uso 1er Nivel: Creación de interfaz Grafica

Diseño de Interfase grafica

CUADRO 3

Descripción de Casos de Uso 1


Caso de uso Creación de Interfaz grafica

Actores Usuario, Aplicativo, sistema de archivos

Tipo Básico

Descripción El usuario desarrolla la interfaz gráfica , una vez desarrollado


generara el código, modificara lo que se necesite y se compilara,
una vez compilado se desarrolla la solución para ser utilizada en
eclipse

10
GRAFICO 3

Caso de Uso 2do. Nivel: Generación de Solución

Proceso de Generacion de solucion en Eclipse

CUADRO 4

Definición de 2do Caso de Uso


Caso de uso Generación de solución hacia móvil

Actores Usuario, Solución generada, aplicativo eclipse , dispositivo móvil

Tipo Básico

Descripción Este caso el desarrollador utiliza la solución generada en el


aplicativo inicial, esto es importado en eclipse y se genera el
archivo final para ser utilizado en el dispositivo BlackBerry.

11
GRAFICO 4

Diagrama de Colaboración

12
Diagrama de Contexto

GRAFICO 5

Diagrama de contexto nivel 0 - AGBB

GRAFICO 6
Diagrama de colaboración Nivel Superior

13
GRAFICO 7

Diagrama de Eventos

Aplicativo AGBB
Usuario Solucion Generada

Aplicativo en movil Aplicativo Eclipse

Diagrama de Proceso

GRAFICO 8
Diagrama de Proceso

 Se genera el código con ayuda de la AGBB

 Se modifica el código y se compila

 Se genera el sistema de archivos a ser importado

 Se realiza la carga de la solución a eclipse

 Se genera la solución final al dispositivo.

14
Diagrama de secuencias

Con la elaboración del diagrama de secuencias se pretende mostrar los diversos


objetos y sus interacciones por medio de mensajes que se envían en el momento que
son considerados como importantes para ellos

15
16
Llena propiedades

17
EL FRAMEWORK

Nuestro proyecto se vio la necesidad de utilizar un Framework profesional, ya que el


desarrollo del proyecto se basa en un aplicativo de escritorio, este aplicativo está
utilizando lenguaje C#, el cual se encuentra entre las librerías del paquete indicado, se
manejara el uso de archivos y directorios.

ESTRUCTURA

La estructura del aplicativo se desarrollo de manera sencilla para el fácil


entendimiento del mismo, para ello se tiene un esquema de clase base y demás clases
derivadas.

Aclaramos que no solo creamos formularios, sino implementamos funcionalidades


para el desarrollo de los procesos necesarios para la generación de las soluciones a ser
importadas en el IDE Eclipse

En el aplicativo se gestionaran

Archivos

Formularios

Generación de código java

Edición de código java

Compilaciones

Creación de soluciones

Se necesita tener un aplicativo directorio que es la siguiente


C:\FuentesDesarrolladosTHWPR

Se necesita tener la carpeta Plantillas

18
GRAFICO 9

Carpeta Plantilla

La carpeta Plantillas se necesita tener la organización de los siguientes archivos:

GRÁFICO 10
Contenido Plantillas

GRAFICO 11

Contenido de Carpeta Setting

19
Contenido del archivo org.eclipse.jdt.core.prefs

#Sat Dec 01 22:45:47 COT 2012


eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.4
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
org.eclipse.jdt.core.compiler.source=1.3
Este archivo no se debe modificar, de modificarse la compilación se generara de
manera errónea

Contenido del archivo .classpath


<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="res"/>
<classpathentry kind="con" path =
"org.eclipse.jdt.launching.JRE_CONTAINER/net.rim.ejde.BlackBerryVMInstallType/BlackBerry JRE
7.1.0"/>
<classpathentry kind="output" path="bin"/>
</classpath>

Contenido del archivo .proyect


<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>[[NOMBREAPP]]</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>

<name>net.rim.ejde.internal.builder.BlackBerryPreprocessBuilder</name>
<arguments>

20
</arguments>
</buildCommand>
<buildCommand>
<name>net.rim.ejde.internal.builder.BlackBerryResourcesBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>net.rim.ejde.BlackBerryPreProcessNature</nature>
<nature>net.rim.ejde.BlackBerryProjectCoreNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
Contenido del archivo BlackBerry_App_Descriptor.xml
<!-- This file has been generated by the BlackBerry Plugin for Eclipse v3.7.100. -->

<Properties ModelVersion="1.1.2">
<General Title="" Version="1.0.0" Vendor="BlackBerry Developer" Description=""/>
<Application Type="BlackBerry Application"
MainMIDletName=""
MainArgs=""
HomeScreenPosition="0"
StartupTier="7"
IsSystemModule="false"
IsAutostartup="false"/>
<Resources hasTitleResource="false"
TitleResourceBundleName=""
TitleResourceBundleRelativePath=""
TitleResourceBundleClassName=""
TitleResourceBundleKey=""
DescriptionId="">
<Icons>
<Icon CanonicalFileName="res/img/[[ICONOAPP]]"
IsFocus="false"/>
</Icons>
</Resources>
<KeywordResources KeywordResourceBundleName=""
KeywordResourceBundleRelativePath=""
KeywordResourceBundleClassName=""
KeywordResourceBundleKey=""/>
<Compile OutputCompilerMessages="false"
ConvertImages="true"
CreateWarningForNoExportedRoutine="true"
CompressResources="false"
AliasList="">
<PreprocessorDefines/>
</Compile>
<Packaging PreBuildStep=""
PostBuildStep=""
CleanStep=""

21
OutputFileName="[[NOMBREAPP]]"
OutputFolder="deliverables"
GenerateALXFile="true">
<AlxFiles/>
</Packaging>
<HiddenProperties>
<ClassProtection/>
<PackageProtection/>
</HiddenProperties>
<AlternateEntryPoints/>
</Properties>

GRAFICO 12

Icon App

DATOS TÉCNICOS DEL APLICATIVO

Plataforma: Windows Vista o Superior.

CUADRO 5

Características Generales
Espacio en Disco 15.1 MB

Banda Ancho No Aplica

Dominios Compartidos No Aplica

Constructor de Sitios No aplica

Soporte 24x7 No Aplica

Backups Programados No Aplica

Mysql Bases No Aplica

22
Cuentas FTP No Aplica

Php5 No Aplica

Streaming Audio/Video No Aplica

Cuentas Pop3 No Aplica

WebMail No Aplica

Administración Cpanel No Aplica

phpMyAdmin No Aplica

Logs de Errores No Aplica

Ip Dedicada No Aplica

Máximo de Conexiones No Aplica


Simultaneas a base de datos

Modelo Entidad Relación

No Aplica

Diccionario de Datos

No Aplica

CODIFICACIÓN DE COMPONENTES

Objeto Base.

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

23
using System.Windows.Forms;

namespace TesisEjemplo1
{
class ObjetoBase : Panel
{
string ls_nombreControl;
string ls_tipo = "";
int ln_posX = 0;
int ln_posY = 0;
int ln_ancho = 0;
int ln_alto = 0;
bool lb_movible = false;
string ls_contenido = "";
bool lb_poseeFuncionClick = false;
string ls_funcionClick = "";
public bool lb_poseeEstilo = false;
string textoEstilo = "";
public bool lb_poseeOtraFamiliaTexto = false;
string texto_nombreFamilia = "";
public bool lb_otrotamanioTexto = false;
string te4xto_tamanioTexto = "";

#region "modifica las propiedades basicas de cada objeto"

/// <summary>
/// controla el nombre del objeto
/// </summary>
public string _Nombrecontrol
{
set
{
ls_nombreControl = value;
}
get
{
return ls_nombreControl;
}
}
/// <summary>
/// controla el tipo del objeto
/// </summary>
public string _TipoControl
{
set{
ls_tipo = value;
}
get
{
return ls_tipo;
}
}
/// <summary>
/// controla la posicion horizontal del objeto
/// </summary>
public int _posX
{

24
set
{
this.ln_posX = this.Left;
}
get
{
return this.Left;
}
}
/// <summary>
/// controla la posicion vertiacl del objeto
/// </summary>
public int _posY
{
set
{
this.ln_posY = this.Top;
}
get
{
return this.Top;
}
}
/// <summary>
/// controla el ancho del objeto
/// </summary>
public int _ancho
{
set
{
ln_ancho = value;
}
get
{
return ln_ancho;
}
}
/// <summary>
/// controla el alto del objeto
/// </summary>
public int _alto
{
set
{
ln_alto = value;
}
get
{
return ln_alto;
}
}

public bool _AccionClick


{
set
{
this.lb_poseeFuncionClick = value;

25
}
get
{
return lb_poseeFuncionClick;
}
}

public string _FuncionClick


{
set
{
this.ls_funcionClick = value;
}
get
{
return this.ls_funcionClick;
}
}

public string _NombreFamiliaTexto


{
set
{
this.lb_poseeOtraFamiliaTexto = true;
this.texto_nombreFamilia = value;
}
get
{
return this.texto_nombreFamilia;
}
}

public string _NombreEstiloTexto


{
set
{
this.lb_poseeEstilo = true;
this.textoEstilo = value;
}
get
{
return this.textoEstilo;
}
}

public string _TamanioTexto


{
set
{
this.lb_otrotamanioTexto = true;
this.te4xto_tamanioTexto = value;
}
get
{
return te4xto_tamanioTexto;
}
}

26
#endregion

private void InitializeComponent()


{
this.SuspendLayout();
//
// ObjetoBase
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}
}

Codificacion Panel AutoCompletar

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelAutoCompletar: ObjetoBase
{
public bool poseeColorfondo = false;
Color coloFondo;
public bool poseeColorTextop = false;
Color colorEtiqueta;

public PanelAutoCompletar(string texto)


{
_TipoControl = "TEXTOAUTOCOMPLETAR_";
_alto = 20;
seteaFormato();

}
public PanelAutoCompletar() {
_TipoControl = "TEXTOAUTOCOMPLETAR_";
_alto = 20;
seteaFormato();
}

public PanelAutoCompletar(bool conColor)


{
this.BackColor = Color.White;
_TipoControl = "TEXTOAUTOCOMPLETAR_";

27
_alto = 20;
seteaFormato();
}

public void seteaFormato()


{
this.BackColor = Color.White;
_ancho = 100;
_alto = 20;
this.Width = _ancho;
this.Height = _alto;
this.Cursor = Cursors.SizeAll;
}

public Color ColorFondo


{
set
{
this.poseeColorfondo = true;
this.coloFondo = value;
}
get
{
return coloFondo;
}
}

public Color ColorEtiqueta


{
set
{
this.poseeColorTextop = true;
this.colorEtiqueta = value;
}
get
{
return this.colorEtiqueta;
}
}

public void cambiarColorFondo(Color color)


{
this.BackColor = color;
}

private void InitializeComponent()


{
this.SuspendLayout();
//
// PanelAutoCompletar
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}
}

28
Codificacion PanelBoton

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelBoton : ObjetoBase
{
string ls_TextoBoton = "";
Label Etiqueta = new Label();
public string _Texto
{
set
{
this.ls_TextoBoton = value;
}
get
{
return ls_TextoBoton;
}
}
public PanelBoton()
{
_TipoControl = "BOTON";
ColocaEtiqueta();
}
public PanelBoton(bool conColor)
{
this.BackColor = Color.Gray;
_TipoControl = "BOTON";
ColocaEtiqueta();
}
public PanelBoton(string texto)
{
this._TipoControl = "BOTON";
_Texto = texto;
ColocaEtiqueta();
}

public void llenaFuncionClick(string contenidoFuncion)


{
_AccionClick = true;
_FuncionClick = contenidoFuncion;
}

public void ColocaEtiqueta()


{
Etiqueta.Text = "Etiqueta";

29
Etiqueta.ForeColor = Color.White;
Etiqueta.BackColor = Color.Gray;
Etiqueta.Width = 70;
Etiqueta.Left = 10;
Etiqueta.TextAlign = ContentAlignment.MiddleCenter;
Etiqueta.Cursor = Cursors.Default;
this.Cursor = Cursors.SizeAll;
this.Controls.Add(Etiqueta);
this._ancho = 90;
this._alto = 20;
this.Width = 90;
this.Height = 20;
}
public string TextoEtiqueta
{
set
{
this.Etiqueta.Text = value;
}
get
{
return this.Etiqueta.Text;
}
}

private void InitializeComponent()


{
this.SuspendLayout();
//
// PanelBoton
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
public void cambiaEtiquetaVisible(string textoMuestra)
{
try
{
this.Etiqueta.Text = textoMuestra;
}
catch (Exception ex)
{
this.Etiqueta.Text = ex.Message;
}
}
}
}

Codificacion PanelBrowserField

using System;

30
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelBrowserField: ObjetoBase
{
bool lb_noDefecto = false;
string ls_cadenaUrl = "http://www.google.com";
public string UrlVisitaInicial
{
set
{
this.lb_noDefecto = true;
ls_cadenaUrl = value;
}
get
{
return ls_cadenaUrl;
}
}
public PanelBrowserField()
{
_TipoControl = "BROWSER";
this.BackColor = Color.WhiteSmoke;
this._alto = 100;
this._ancho = 100;
this.Width = this._ancho;
this.Height = this._alto;
this.Cursor = Cursors.SizeAll;
this.BackgroundImageLayout = ImageLayout.Stretch;
this.BackgroundImage = global::TesisEjemplo1.Properties.Resources.MensajeControslWeb;
}
}
}

Codificacion PanelCajaTexto

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelCajatexto : ObjetoBase
{

31
public bool poseeColorfondo = false;
Color coloFondo;
public bool poseeColorTextop = false;
Color colorEtiqueta;

public PanelCajatexto(string texto)


{
_TipoControl = "CAJATEXTO";
seteaFormato();
}
public PanelCajatexto() {
_TipoControl = "CAJATEXTO";
seteaFormato();
}

public PanelCajatexto(bool conColor)


{
this.BackColor = Color.White;
_TipoControl = "CAJATEXTO";
seteaFormato();
}

public void seteaFormato()


{
this.BackColor = Color.White;
_ancho = 100;
_alto = 20;
this.Width = _ancho;
this.Height = _alto;
this.Cursor = Cursors.SizeAll;
}

public Color ColorFondo


{
set
{
this.poseeColorfondo = true;
this.coloFondo = value;
}
get
{
return coloFondo;
}
}

public Color ColorEtiqueta


{
set
{
this.poseeColorTextop = true;
this.colorEtiqueta = value;
}
get
{
return this.colorEtiqueta;
}
}

32
public void cambiarColorFondo(Color color)
{
this.BackColor = color;
}

private void InitializeComponent()


{
this.SuspendLayout();
//
// PanelCajatexto
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}

Codificacion PanelCampoFecha

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelCampoFecha:ObjetoBase
{
public bool poseeColorfondo = false;
Color coloFondo;
public bool poseeColorTextop = false;
Color colorEtiqueta;

public PanelCampoFecha(string texto)


{
_TipoControl = "CAMPOFECHA";
seteaFormato();
}
public PanelCampoFecha() {
_TipoControl = "CAMPOFECHA";
seteaFormato();
}

public PanelCampoFecha(bool conColor)


{
this.BackColor = Color.White;
_TipoControl = "CAMPOFECHA";
seteaFormato();
}

33
public void seteaFormato()
{
this.BackColor = Color.White;
_ancho = 100;
_alto = 20;
this.Width = _ancho;
this.Height = _alto;
this.Cursor = Cursors.SizeAll;
this.BackgroundImageLayout = ImageLayout.Stretch;
this.BackgroundImage = global::TesisEjemplo1.Properties.Resources.CampoFecha;
}

public Color ColorFondo


{
set
{
this.poseeColorfondo = true;
this.coloFondo = value;
}
get
{
return coloFondo;
}
}

public Color ColorEtiqueta


{
set
{
this.poseeColorTextop = true;
this.colorEtiqueta = value;
}
get
{
return this.colorEtiqueta;
}
}

public void cambiarColorFondo(Color color)


{
this.BackColor = color;
}

private void InitializeComponent()


{
this.SuspendLayout();
//
// PanelCampoFecha
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}
}

34
Codificacion Panel Campo Imagen

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelCampoImagen: ObjetoBase
{
string nombreImagen = "";
string rutaImagenTmp = "";
PictureBox imagenMuestra = new PictureBox();
public PanelCampoImagen()
{
_TipoControl = "IMAGEN";
this.BackColor = Color.WhiteSmoke;
this._alto = 100;
this._ancho = 100;
this.Width = this._ancho;
this.Height = this._alto;
this.Cursor = Cursors.SizeAll;
/*imagenMuestra.Width = 90;
imagenMuestra.Height = 90;
imagenMuestra.Left = 5;
imagenMuestra.Top=5;
imagenMuestra.Cursor = Cursors.Default;
imagenMuestra.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.Controls.Add(imagenMuestra);*/
}
public string rutaImagentemporal
{
set
{
rutaImagenTmp = value;
this.imagenMuestra.ImageLocation = rutaImagenTmp;
}
get
{
return rutaImagenTmp;
}
}
public string NombreImagenVer
{
set
{
nombreImagen = value;
}
get
{
return nombreImagen;
}

35
}

public int altoImagen


{
set;
get;
}
public int anchoImagen
{
set;
get;
}

public bool redimencionaImagen(int alto, int ancho)


{
if(alto - 6 >1 && ancho - 6 > 1)
{
this.Width = ancho;
this.Height = alto;
this.imagenMuestra.Width = ancho-6;
this.imagenMuestra.Height = alto-6;
_ancho = ancho;
_alto = alto;
return true;
}
else
{
return false;
}
}

private void InitializeComponent()


{
this.SuspendLayout();
//
// PanelCampoImagen
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}
}

Codificacion PanelCampoOpcion

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

36
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelCampoOpcion : ObjetoBase
{
private Microsoft.VisualBasic.PowerPacks.ShapeContainer shapeContainer1 = new
Microsoft.VisualBasic.PowerPacks.ShapeContainer();
private Microsoft.VisualBasic.PowerPacks.RectangleShape rectangeShape1 = new
Microsoft.VisualBasic.PowerPacks.RectangleShape();

string ls_textoEtiqueta = "";


Label lblEtiqueta = new Label();
string nombreGrupoOpcion = "Grupo1";
public string _Texto
{
set
{
this.ls_textoEtiqueta = value;
}
get
{
return this.ls_textoEtiqueta;
}
}
public bool poseeColorfondo = false;
Color coloFondo;
public bool poseeColorTextop = false;
Color colorEtiqueta;
public PanelCampoOpcion(string contenido)
{
_TipoControl = "OPCION";
seteaFormato(contenido);
}
public PanelCampoOpcion()
{
_TipoControl = "OPCION";
seteaFormato("Etiqueta");
}

public PanelCampoOpcion(bool conColor)


{
this.BackColor = Color.White;
_TipoControl = "OPCION";
seteaFormato("Etiqueta");
}

public void llenaFuncionClick(string contenidoFuncion)


{

}
public Color ColorFondo
{
set
{
this.poseeColorfondo = true;
this.coloFondo = value;

37
}
get
{
return coloFondo;
}
}

public Color ColorEtiqueta


{
set
{
this.poseeColorTextop = true;
this.colorEtiqueta = value;
}
get
{
return this.colorEtiqueta;
}
}

public void seteaFormato(string contenido)


{
ColocaImagen();
this.lblEtiqueta.Text = contenido;
lblEtiqueta.BackColor = Color.Transparent;
lblEtiqueta.Cursor = Cursors.Default;
lblEtiqueta.Left = 13;
this.Controls.Add(lblEtiqueta);
_Texto = contenido;
this.Cursor = Cursors.SizeAll;
this.BackColor = Color.Transparent;
this._ancho = 100;
this._alto = 20;
this.Width = _ancho;
this.Height = _alto;
lblEtiqueta.Width = 70;
}

public void cambiaEtiquetaVisible(string textoMuestra)


{
try
{
this.lblEtiqueta.Text = textoMuestra;
}
catch (Exception ex)
{
this.lblEtiqueta.Text = ex.Message;
}
}
public void cambiarColorEtiqueta(Color color)
{
this.lblEtiqueta.ForeColor = color;
}
public void cambiarColorFondo(Color color)
{
this.lblEtiqueta.BackColor = color;
this.BackColor = color;

38
}
public void cambiaFamiliaTexto(string nomrbreFamilia)
{
try
{
//this.lblEtiqueta.Font = new System.Drawing.Font(nomrbreFamilia, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblEtiqueta.Font = new System.Drawing.Font(nomrbreFamilia, 8.25F,
this.lblEtiqueta.Font.Style, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
}
catch (Exception ex)
{
}
}
public void cambiarEstiloTexto(string nombreEstilo)
{
try
{
switch (nombreEstilo)
{
case "ANTIALIAS_LOW_RES":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ANTIALIAS_NONE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ANTIALIAS_STANDARD":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ANTIALIAS_SUBPIXEL":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "APPLICATION":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ARABIC_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ARMENIAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "BENGALI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "BOLD":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "BROKEN_LINE_UNDERLINED":

39
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "CJK_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "CURSIVE_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "CYRILLIC_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "DEVANAGARI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "DOTTED_UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ETHIOPIC_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "EXTRA_BOLD":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "FANTASY_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GEORGIAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GREEK_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GUID_FONT_CHANGED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GUJARATI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GURMUKHI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "HANGUL_SCRIPT":

40
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "HEBREW_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "HIRAGANA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ITALIC":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "KANNADA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "KATAKANA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "KHMER_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "LAO_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "LATIN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "MALAYALAM_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "MONGOLIAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "MYANMAR_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ORIYA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "PLAIN":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SANS_SERIF_STYLE":

41
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SERIF_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SERIF_STYLE_MASK":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SINHALA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "STRIKE_THROUGH":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Strikeout, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "TAMIL_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "TELUGU_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "THAI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "TIBETAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "UNSPECIFIED_SERIF_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "WAVY_UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
}

}
catch (Exception ex)
{
}
}
public void modificaTamanioTexto(string tamanio)
{
try

42
{
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name,
float.Parse(tamanio), this.lblEtiqueta.Font.Style, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
}
catch (Exception ex)
{
}
}
public string GrupoOpcion{
set
{
this.nombreGrupoOpcion = value;
}
get
{
return this.nombreGrupoOpcion;
}
}

public void ColocaImagen()


{
PictureBox pbx = new PictureBox();
pbx.SizeMode = PictureBoxSizeMode.StretchImage;
pbx.Image = global::TesisEjemplo1.Properties.Resources.Option;
pbx.Width = 15;
pbx.Height = 15;
pbx.Top = 0;
pbx.Left = 0;
this.Controls.Add(pbx);
}

private void InitializeComponent()


{
this.SuspendLayout();
//
// PanelCampoOpcion
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}
}

Codificacion PanelCampoMapa

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1

43
{
class PanelCamposMapa : ObjetoBase
{
public PanelCamposMapa()
{
_TipoControl = "MAPA";
this.BackColor = Color.WhiteSmoke;
this._alto = 100;
this._ancho = 100;
this.Width = this._ancho;
this.Height = this._alto;
this.Cursor = Cursors.SizeAll;
this.BackgroundImageLayout = ImageLayout.Stretch;
this.BackgroundImage = global::TesisEjemplo1.Properties.Resources.MensajeControslMapa;
}
}
}

Codificacion PanelCheckBox

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{

class PanelCheckBox: ObjetoBase


{
private Microsoft.VisualBasic.PowerPacks.ShapeContainer shapeContainer1= new
Microsoft.VisualBasic.PowerPacks.ShapeContainer();
private Microsoft.VisualBasic.PowerPacks.RectangleShape rectangeShape1 = new
Microsoft.VisualBasic.PowerPacks.RectangleShape();

string ls_textoEtiqueta = "";


Label lblEtiqueta = new Label();
public string _Texto
{
set
{
this.ls_textoEtiqueta = value;
}
get
{
return this.ls_textoEtiqueta;
}
}
public bool poseeColorfondo = false;
Color coloFondo;
public bool poseeColorTextop = false;

44
Color colorEtiqueta;
public PanelCheckBox(string contenido)
{
_TipoControl = "CHECKBOX";
seteaFormato(contenido);
}
public PanelCheckBox()
{
_TipoControl = "CHECKBOX";
seteaFormato("Etiqueta");
}

public PanelCheckBox(bool conColor)


{
this.BackColor = Color.White;
_TipoControl = "CHECKBOX";
seteaFormato("Etiqueta");
}

public void llenaFuncionClick(string contenidoFuncion){

}
public Color ColorFondo
{
set{
this.poseeColorfondo = true;
this.coloFondo = value;
}
get {
return coloFondo;
}
}

public Color ColorEtiqueta{


set
{
this.poseeColorTextop = true;
this.colorEtiqueta = value;
}
get
{
return this.colorEtiqueta;
}
}

public void seteaFormato(string contenido)


{
ColocaImagen();
this.lblEtiqueta.Text = contenido;
lblEtiqueta.BackColor = Color.Transparent;
lblEtiqueta.Cursor = Cursors.Default;
lblEtiqueta.Left = 13;
this.Controls.Add(lblEtiqueta);
_Texto = contenido;
this.Cursor = Cursors.SizeAll;
this.BackColor = Color.Transparent;
this._ancho = 100;

45
this._alto = 20;
this.Width = _ancho;
this.Height = _alto;
lblEtiqueta.Width = 70;
}

public void cambiaEtiquetaVisible(string textoMuestra)


{
try
{
this.lblEtiqueta.Text = textoMuestra;
}
catch (Exception ex) {
this.lblEtiqueta.Text = ex.Message;
}
}
public void cambiarColorEtiqueta(Color color)
{
this.lblEtiqueta.ForeColor = color;
}
public void cambiarColorFondo(Color color)
{
this.lblEtiqueta.BackColor = color;
this.BackColor = color;
}
public void cambiaFamiliaTexto(string nomrbreFamilia)
{
try
{
//this.lblEtiqueta.Font = new System.Drawing.Font(nomrbreFamilia, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblEtiqueta.Font = new System.Drawing.Font(nomrbreFamilia, 8.25F,
this.lblEtiqueta.Font.Style, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
}
catch (Exception ex)
{
}
}
public void cambiarEstiloTexto(string nombreEstilo)
{
try
{
switch (nombreEstilo)
{
case "ANTIALIAS_LOW_RES":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ANTIALIAS_NONE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ANTIALIAS_STANDARD":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ANTIALIAS_SUBPIXEL":

46
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "APPLICATION":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ARABIC_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ARMENIAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "BENGALI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "BOLD":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "BROKEN_LINE_UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "CJK_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "CURSIVE_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "CYRILLIC_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "DEVANAGARI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "DOTTED_UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ETHIOPIC_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "EXTRA_BOLD":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "FANTASY_STYLE":

47
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GEORGIAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GREEK_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GUID_FONT_CHANGED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GUJARATI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GURMUKHI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "HANGUL_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "HEBREW_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "HIRAGANA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ITALIC":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "KANNADA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "KATAKANA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "KHMER_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "LAO_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "LATIN_SCRIPT":

48
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "MALAYALAM_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "MONGOLIAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "MYANMAR_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ORIYA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "PLAIN":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SANS_SERIF_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SERIF_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SERIF_STYLE_MASK":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SINHALA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "STRIKE_THROUGH":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Strikeout, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "TAMIL_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "TELUGU_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "THAI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "TIBETAN_SCRIPT":

49
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "UNSPECIFIED_SERIF_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "WAVY_UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
}

}
catch (Exception ex)
{
}
}
public void modificaTamanioTexto(string tamanio)
{
try
{
this.lblEtiqueta.Font = new
System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name,float.Parse(tamanio), this.lblEtiqueta.Font.Style,
System.Drawing.GraphicsUnit.Point, ((byte)(0)));
}
catch (Exception ex)
{
}
}

public void ColocaImagen(){


PictureBox pbx = new PictureBox();
pbx.SizeMode = PictureBoxSizeMode.StretchImage;
pbx.Image = global::TesisEjemplo1.Properties.Resources.Check;
pbx.Width = 15;
pbx.Height = 15;
pbx.Top = 0;
pbx.Left = 0;
this.Controls.Add(pbx);
//this.shapeContainer1.Location = new System.Drawing.Point(0, 0);
//this.shapeContainer1.Margin = new System.Windows.Forms.Padding(0);
//this.shapeContainer1.Name = "shapeContainer1";
//this.shapeContainer1.Shapes.AddRange(new Microsoft.VisualBasic.PowerPacks.Shape[]
{this.rectangeShape1});
//this.shapeContainer1.Size = new System.Drawing.Size(301, 72);
////this.shapeContainer1.TabIndex = 0;
//this.shapeContainer1.TabStop = false;

//this.rectangeShape1.BorderWidth = 4;
//this.rectangeShape1.Location = new System.Drawing.Point(0, 0);
//this.rectangeShape1.Name = "ovalShape1";
//this.rectangeShape1.Size = new System.Drawing.Size(12, 12);

50
////this.Controls.Add(shapeContainer1);
}

private void InitializeComponent()


{
this.SuspendLayout();
//
// PanelCheckBox
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}

Codificacion Panel ComboBox

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelComboBox: ObjetoBase
{
public bool poseeColorfondo = false;
Color coloFondo;
public bool poseeColorTextop = false;
Color colorEtiqueta;
public bool poseeContenido=false;
Array contenidoAuto ;
public PanelComboBox(string texto)
{
_TipoControl = "COMBOBOX";
seteaFormato();

}
public PanelComboBox() {
_TipoControl = "COMBOBOX";
seteaFormato();
}

public PanelComboBox(bool conColor)


{
this.BackColor = Color.White;
_TipoControl = "COMBOBOX";
seteaFormato();
}

51
public void seteaFormato()
{
this.BackColor = Color.White;
_ancho = 80;
_alto = 20;
this.Width = _ancho;
this.Height = _alto;
this.Cursor = Cursors.SizeAll;
this.BackgroundImageLayout = ImageLayout.Stretch;
this.BackgroundImage = global::TesisEjemplo1.Properties.Resources.CampoCombo;
}

public Color ColorFondo


{
set
{
this.poseeColorfondo = true;
this.coloFondo = value;
}
get
{
return coloFondo;
}
}

public Color ColorEtiqueta


{
set
{
this.poseeColorTextop = true;
this.colorEtiqueta = value;
}
get
{
return this.colorEtiqueta;
}
}

public void cambiarColorFondo(Color color)


{
this.BackColor = color;
}

public Array Contenido


{
set
{
this.poseeContenido = true;
contenidoAuto = value;
}
get
{
return this.contenidoAuto;
}
}

52
private void InitializeComponent()
{
this.SuspendLayout();
//
// PanelComboBox
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}
}

Codificacion PanelComboBoxNumerico

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelComboBoxNumerico: ObjetoBase
{
public bool poseeColorfondo = false;
Color coloFondo;
public bool poseeColorTextop = false;
Color colorEtiqueta;

public PanelComboBoxNumerico(string texto)


{
_TipoControl = "COMBOBOXNUMERICO";
seteaFormato();
}
public PanelComboBoxNumerico() {
_TipoControl = "COMBOBOXNUMERICO";
seteaFormato();
}

public PanelComboBoxNumerico(bool conColor)


{
this.BackColor = Color.White;
_TipoControl = "COMBOBOXNUMERICO";
seteaFormato();
}

public void seteaFormato()


{
this.BackColor = Color.White;
_ancho = 100;
_alto = 20;
this.Width = _ancho;

53
this.Height = _alto;
this.Cursor = Cursors.SizeAll;
this.BackgroundImageLayout = ImageLayout.Stretch;
this.BackgroundImage = global::TesisEjemplo1.Properties.Resources.CampoComboNum;
}

public Color ColorFondo


{
set
{
this.poseeColorfondo = true;
this.coloFondo = value;
}
get
{
return coloFondo;
}
}

public Color ColorEtiqueta


{
set
{
this.poseeColorTextop = true;
this.colorEtiqueta = value;
}
get
{
return this.colorEtiqueta;
}
}

public void cambiarColorFondo(Color color)


{
this.BackColor = color;
}

public int indiceInicio {


set;
get;
}
public int indiceFinal {
set;
get;
}
public int incremento
{
set;
get;
}
public int comienzo
{
set;
get;
}

private void InitializeComponent()

54
{
this.SuspendLayout();
//
// PanelComboBoxNumerico
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}

Codificacion PaneEmail

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelEmail: ObjetoBase
{
public bool poseeColorfondo = false;
Color coloFondo;
public bool poseeColorTextop = false;
Color colorEtiqueta;

public PanelEmail(string texto)


{
_TipoControl = "EMAIL";
seteaFormato();
}
public PanelEmail() {
_TipoControl = "EMIAL";
seteaFormato();
}

public PanelEmail(bool conColor)


{
this.BackColor = Color.WhiteSmoke;
_TipoControl = "EMAIL";
seteaFormato();
}

public void seteaFormato()


{
this.BackColor = Color.White;
_ancho = 100;

55
_alto = 20;
this.Width = _ancho;
this.Height = _alto;
this.Cursor = Cursors.SizeAll;
}

public Color ColorFondo


{
set
{
this.poseeColorfondo = true;
this.coloFondo = value;
}
get
{
return coloFondo;
}
}

public Color ColorEtiqueta


{
set
{
this.poseeColorTextop = true;
this.colorEtiqueta = value;
}
get
{
return this.colorEtiqueta;
}
}

public void cambiarColorFondo(Color color)


{
this.BackColor = color;
}

private void InitializeComponent()


{
this.SuspendLayout();
//
// PanelEmail
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}
}

Codificacion PanelesBase

using System;
using System.Collections.Generic;
using System.Linq;

56
using System.Text;
using System.Threading.Tasks;

namespace TesisEjemplo1
{
class PanelesBases : System.Windows.Forms.Panel
{
string nombre = "";
string identificacion = "";
string tipoObjeto = "";
string metodoClick = "";
string etiqueta = "";

}
}

Codificacion PaneEtiquetas

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelEtiqueta : ObjetoBase
{
string ls_textoEtiqueta = "";
Label lblEtiqueta = new Label();
public string _Texto
{
set
{
this.ls_textoEtiqueta = value;
}
get
{
return this.ls_textoEtiqueta;
}
}
public bool poseeColorfondo = false;
Color coloFondo;
public bool poseeColorTextop = false;
Color colorEtiqueta;
public PanelEtiqueta(string contenido)
{
_TipoControl = "ETIQUETA";
seteaFormato(contenido);
}
public PanelEtiqueta() {
_TipoControl = "ETIQUETA";
seteaFormato("Etiqueta");

57
}

public PanelEtiqueta(bool conColor)


{
this.BackColor = Color.White;
_TipoControl = "ETIQUETA";
seteaFormato("Etiqueta");
}

public void llenaFuncionClick(string contenidoFuncion){

}
public Color ColorFondo
{
set{
this.poseeColorfondo = true;
this.coloFondo = value;
}
get {
return coloFondo;
}
}

public Color ColorEtiqueta{


set
{
this.poseeColorTextop = true;
this.colorEtiqueta = value;
}
get
{
return this.colorEtiqueta;
}
}

public void seteaFormato(string contenido)


{
this.lblEtiqueta.Text = contenido;
lblEtiqueta.BackColor = Color.Transparent;
lblEtiqueta.Cursor = Cursors.Default;
this.Controls.Add(lblEtiqueta);
_Texto = contenido;
this.Cursor = Cursors.SizeAll;
this.BackColor = Color.Transparent;
this._ancho = 100;
this._alto = 20;
Width = _ancho;
Height = _alto;
lblEtiqueta.Width = _ancho - 20;
}

public void cambiaEtiquetaVisible(string textoMuestra)


{
try
{
this.lblEtiqueta.Text = textoMuestra;
}

58
catch (Exception ex) {
this.lblEtiqueta.Text = ex.Message;
}
}
public void cambiarColorEtiqueta(Color color)
{
this.lblEtiqueta.ForeColor = color;
}
public void cambiarColorFondo(Color color)
{
this.lblEtiqueta.BackColor = color;
this.BackColor = color;
}
public void cambiaFamiliaTexto(string nomrbreFamilia)
{
try
{
//this.lblEtiqueta.Font = new System.Drawing.Font(nomrbreFamilia, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblEtiqueta.Font = new System.Drawing.Font(nomrbreFamilia, 8.25F,
this.lblEtiqueta.Font.Style, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
}
catch (Exception ex)
{
}
}
public void cambiarEstiloTexto(string nombreEstilo)
{
try
{
switch (nombreEstilo)
{
case "ANTIALIAS_LOW_RES":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ANTIALIAS_NONE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ANTIALIAS_STANDARD":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ANTIALIAS_SUBPIXEL":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "APPLICATION":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ARABIC_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ARMENIAN_SCRIPT":

59
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "BENGALI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "BOLD":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "BROKEN_LINE_UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "CJK_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "CURSIVE_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "CYRILLIC_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "DEVANAGARI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "DOTTED_UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ETHIOPIC_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "EXTRA_BOLD":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "FANTASY_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GEORGIAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GREEK_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GUID_FONT_CHANGED":

60
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GUJARATI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GURMUKHI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "HANGUL_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "HEBREW_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "HIRAGANA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ITALIC":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "KANNADA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "KATAKANA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "KHMER_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "LAO_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "LATIN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "MALAYALAM_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "MONGOLIAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "MYANMAR_SCRIPT":

61
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ORIYA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "PLAIN":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SANS_SERIF_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SERIF_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SERIF_STYLE_MASK":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SINHALA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "STRIKE_THROUGH":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Strikeout, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "TAMIL_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "TELUGU_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "THAI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "TIBETAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "UNSPECIFIED_SERIF_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "WAVY_UNDERLINED":

62
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
}

}
catch (Exception ex)
{
}
}
public void modificaTamanioTexto(string tamanio)
{
try
{
this.lblEtiqueta.Font = new
System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name,float.Parse(tamanio), this.lblEtiqueta.Font.Style,
System.Drawing.GraphicsUnit.Point, ((byte)(0)));
}
catch (Exception ex)
{
}
}

private void InitializeComponent()


{
this.SuspendLayout();
//
// PanelEtiqueta
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}
}

Codificacion PanelPassword

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelPassword : ObjetoBase
{
public bool poseeColorfondo = false;
Color coloFondo;
public bool poseeColorTextop = false;
Color colorEtiqueta;

63
public PanelPassword(string texto)
{
_TipoControl = "PASSWORD";
///seteaFormato();
this.Cursor = Cursors.SizeAll;
}
public PanelPassword() {
_TipoControl = "PASSWORD";
this.Cursor = Cursors.SizeAll;
}

public PanelPassword(bool conColor)


{
this.BackColor = Color.WhiteSmoke;
_TipoControl = "PASSWORD";
_ancho = 80;
_alto = 20;
this.Width = _ancho;
this.Height = _alto;
this.Cursor = Cursors.SizeAll;
}

public Color ColorFondo


{
set
{
this.poseeColorfondo = true;
this.coloFondo = value;
}
get
{
return coloFondo;
}
}

public Color ColorEtiqueta


{
set
{
this.poseeColorTextop = true;
this.colorEtiqueta = value;
}
get
{
return this.colorEtiqueta;
}
}

private void InitializeComponent()


{
this.SuspendLayout();
//
// PanelPassword
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

64
}

}
}

Codificacion PanelRichTextBox

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelRichTextBox : ObjetoBase
{
string ls_textoEtiqueta = "";
Label lblEtiqueta = new Label();
public string _Texto
{
set
{
this.ls_textoEtiqueta = value;
}
get
{
return this.ls_textoEtiqueta;
}
}
public bool poseeColorfondo = false;
Color coloFondo;
public bool poseeColorTextop = false;
Color colorEtiqueta;
public PanelRichTextBox(string contenido)
{
_TipoControl = "RICHTEXTBOX";
seteaFormato(contenido);
}
public PanelRichTextBox() {
_TipoControl = "RICHTEXTBOX";
seteaFormato("Etiqueta");
}

public PanelRichTextBox(bool conColor)


{
this.BackColor = Color.White;
_TipoControl = "RICHTEXTBOX";
seteaFormato("Etiqueta");
}

public void llenaFuncionClick(string contenidoFuncion){

65
}
public Color ColorFondo
{
set{
this.poseeColorfondo = true;
this.coloFondo = value;
}
get {
return coloFondo;
}
}

public Color ColorEtiqueta{


set
{
this.poseeColorTextop = true;
this.colorEtiqueta = value;
}
get
{
return this.colorEtiqueta;
}
}

public void seteaFormato(string contenido)


{
this.lblEtiqueta.Text = contenido;
lblEtiqueta.BackColor = Color.Transparent;
lblEtiqueta.Cursor = Cursors.Default;
this.Controls.Add(lblEtiqueta);
_Texto = contenido;
this.Cursor = Cursors.SizeAll;
this.BackColor = Color.Transparent;
this._ancho = 100;
this._alto = 25;
this.Width = _ancho;
this.Height = _alto;
lblEtiqueta.Width = this.Width - 5;
}

public void cambiaEtiquetaVisible(string textoMuestra)


{
try
{
this.lblEtiqueta.Text = textoMuestra;
}
catch (Exception ex) {
this.lblEtiqueta.Text = ex.Message;
}
}
public void cambiarColorEtiqueta(Color color)
{
this.lblEtiqueta.ForeColor = color;
}
public void cambiarColorFondo(Color color)
{
this.lblEtiqueta.BackColor = color;

66
this.BackColor = color;
}
public void cambiaFamiliaTexto(string nomrbreFamilia)
{
try
{
//this.lblEtiqueta.Font = new System.Drawing.Font(nomrbreFamilia, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblEtiqueta.Font = new System.Drawing.Font(nomrbreFamilia, 8.25F,
this.lblEtiqueta.Font.Style, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
}
catch (Exception ex)
{
}
}
public void cambiarEstiloTexto(string nombreEstilo)
{
try
{
switch (nombreEstilo)
{
case "ANTIALIAS_LOW_RES":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ANTIALIAS_NONE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ANTIALIAS_STANDARD":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ANTIALIAS_SUBPIXEL":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "APPLICATION":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ARABIC_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ARMENIAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "BENGALI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "BOLD":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;

67
case "BROKEN_LINE_UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "CJK_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "CURSIVE_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "CYRILLIC_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "DEVANAGARI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "DOTTED_UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ETHIOPIC_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "EXTRA_BOLD":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "FANTASY_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GEORGIAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GREEK_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GUID_FONT_CHANGED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GUJARATI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "GURMUKHI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "HANGUL_SCRIPT":

68
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "HEBREW_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "HIRAGANA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ITALIC":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "KANNADA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "KATAKANA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "KHMER_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "LAO_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "LATIN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "MALAYALAM_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "MONGOLIAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "MYANMAR_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "ORIYA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "PLAIN":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SANS_SERIF_STYLE":

69
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SERIF_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SERIF_STYLE_MASK":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "SINHALA_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "STRIKE_THROUGH":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Strikeout, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "TAMIL_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "TELUGU_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "THAI_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "TIBETAN_SCRIPT":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "UNSPECIFIED_SERIF_STYLE":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
case "WAVY_UNDERLINED":
this.lblEtiqueta.Font = new System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name, 8.25F,
System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
break;
}

}
catch (Exception ex)
{
}
}
public void modificaTamanioTexto(string tamanio)
{
try

70
{
this.lblEtiqueta.Font = new
System.Drawing.Font(lblEtiqueta.Font.FontFamily.Name,float.Parse(tamanio), this.lblEtiqueta.Font.Style,
System.Drawing.GraphicsUnit.Point, ((byte)(0)));
}
catch (Exception ex)
{
}
}

private void InitializeComponent()


{
this.SuspendLayout();
//
// PanelRichTextBox
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}
}

Codificacion PanelTextoAutocompletar

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelTextoAutocompletar: ObjetoBase
{
public bool poseeColorfondo = false;
Color coloFondo;
public bool poseeColorTextop = false;
Color colorEtiqueta;
public bool poseeContenido=false;
Array contenidoAuto ;
public PanelTextoAutocompletar(string texto)
{
_TipoControl = "TEXTOAUTOCOMPLETAR";
seteaFormato();

}
public PanelTextoAutocompletar() {
_TipoControl = "TEXTOAUTOCOMPLETAR";
seteaFormato();
}

public PanelTextoAutocompletar(bool conColor)

71
{
this.BackColor = Color.White;
_TipoControl = "TEXTOAUTOCOMPLETAR";
seteaFormato();
}

public void seteaFormato()


{
this.BackColor = Color.White;
_ancho = 80;
_alto = 20;
this.Width = _ancho;
this.Height = _alto;
this.Cursor = Cursors.SizeAll;
}

public Color ColorFondo


{
set
{
this.poseeColorfondo = true;
this.coloFondo = value;
}
get
{
return coloFondo;
}
}

public Color ColorEtiqueta


{
set
{
this.poseeColorTextop = true;
this.colorEtiqueta = value;
}
get
{
return this.colorEtiqueta;
}
}

public void cambiarColorFondo(Color color)


{
this.BackColor = color;
}

public Array Contenido


{
set
{
this.poseeContenido = true;
contenidoAuto = value;
}
get
{
return this.contenidoAuto;

72
}
}

private void InitializeComponent()


{
this.SuspendLayout();
//
// PanelTextoAutocompletar
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}
}

Codificacion PanelTextoAutoCorregir

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
class PanelTextoAutocorregir: ObjetoBase
{
public bool poseeColorfondo = false;
Color coloFondo;
public bool poseeColorTextop = false;
Color colorEtiqueta;

public PanelTextoAutocorregir(string texto)


{
_TipoControl = "CAJATEXTOAUTOCORREGIR";
seteaFormato();

}
public PanelTextoAutocorregir() {
_TipoControl = "CAJATEXTOAUTOCORREGIR";
seteaFormato();
}

public PanelTextoAutocorregir(bool conColor)


{
this.BackColor = Color.White;
_TipoControl = "CAJATEXTOAUTOCORREGIR";
seteaFormato();
}

public void seteaFormato()


{

73
this.BackColor = Color.White;
_ancho = 80;
_alto = 20;
Width = _ancho;
Height = _alto;
this.Cursor = Cursors.SizeAll;
}

public Color ColorFondo


{
set
{
this.poseeColorfondo = true;
this.coloFondo = value;
}
get
{
return coloFondo;
}
}

public Color ColorEtiqueta


{
set
{
this.poseeColorTextop = true;
this.colorEtiqueta = value;
}
get
{
return this.colorEtiqueta;
}
}

public void cambiarColorFondo(Color color)


{
this.BackColor = color;
}

private void InitializeComponent()


{
this.SuspendLayout();
//
// PanelTextoAutocorregir
//
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ResumeLayout(false);

}
}
}

Codificacion PlatillasFunciones

using System;

74
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TesisEjemplo1
{
class PantillasFunciones
{
public static string PlantillaAccionBoton(string nombreObjeto)
{
return "\n\tpublic void Action" + nombreObjeto + "_(ActionEvento evento){\n\t}" ;
}
public static string PlatillaFormato(string nombreObjeto)
{
return "";
}
}
}

Codificacion Presentacion

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
public partial class Presentacion : Form
{
int i = 0;
public Presentacion()
{
InitializeComponent();
}

private void Presentacion_Load(object sender, EventArgs e)


{

private void timer1_Tick(object sender, EventArgs e)


{
i++;
if (i == 5)
{
//Form1 f = new Form1();
//f.Show();

75
this.Close();
}
}
}
}

Codificacion Programs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
static class Program
{
/// <summary>
/// Punto de entrada principal para la aplicación.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

Codificacion VentanaColores

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
public partial class VentanaColores : Form
{
public Color colorClick
{
set;
get;
}

76
public string ColorSeleccionado
{
set;
get;
}
public VentanaColores()
{
InitializeComponent();
}

private void VentanaColores_Load(object sender, EventArgs e)


{

private void button2_Click(object sender, EventArgs e)


{
this.Close();
}

private void pictureBox1_Click(object sender, EventArgs e)


{
ColorSeleccionado = "ALICEBLUE";
colorClick = Color.AliceBlue;
this.Close();
}

private void pictureBox2_Click(object sender, EventArgs e)


{
ColorSeleccionado = "ANTIQUEWHITE";
colorClick = Color.AntiqueWhite;
this.Close();
}

private void pictureBox3_Click(object sender, EventArgs e)


{
ColorSeleccionado = "AQUA";
colorClick = Color.Aqua;
this.Close();
}

private void pictureBox4_Click(object sender, EventArgs e)


{
ColorSeleccionado = "AQUAMARINE";
colorClick = Color.Aquamarine;
this.Close();
}

private void pictureBox5_Click(object sender, EventArgs e)


{
ColorSeleccionado = "AZURE";
colorClick = Color.Azure;
this.Close();
}

private void pictureBox6_Click(object sender, EventArgs e)


{

77
ColorSeleccionado = "BEIGE";
colorClick = Color.Beige;
this.Close();
}

private void pictureBox7_Click(object sender, EventArgs e)


{
ColorSeleccionado = "BISQUE";
colorClick = Color.Bisque;
this.Close();
}

private void pictureBox8_Click(object sender, EventArgs e)


{
ColorSeleccionado = "BLACK";
colorClick = Color.Black;
this.Close();
}

private void pictureBox9_Click(object sender, EventArgs e)


{
ColorSeleccionado = "BLANCHEDALMOND";
colorClick = Color.BlanchedAlmond;
this.Close();
}

private void pictureBox10_Click(object sender, EventArgs e)


{
ColorSeleccionado = "BLUE";
colorClick = Color.Blue;
this.Close();
}

private void pictureBox11_Click(object sender, EventArgs e)


{
this.ColorSeleccionado = "BLUEVIOLET";
colorClick = Color.BlueViolet;
this.Close();
}

private void pictureBox12_Click(object sender, EventArgs e)


{
ColorSeleccionado = "BROWN";
colorClick = Color.Brown;
this.Close();
}

private void pictureBox13_Click(object sender, EventArgs e)


{
ColorSeleccionado = "BURLYWOOD";
colorClick = Color.BurlyWood;
this.Close();
}

private void pictureBox14_Click(object sender, EventArgs e)


{
ColorSeleccionado = "CADETBLUE";

78
colorClick = Color.CadetBlue;
this.Close();
}

private void pictureBox15_Click(object sender, EventArgs e)


{
ColorSeleccionado = "CHARTREUSE";
colorClick = Color.Chartreuse;
this.Close();
}

private void pictureBox17_Click(object sender, EventArgs e)


{
ColorSeleccionado = "CHOCOLATE";
colorClick = Color.Chocolate;
this.Close();
}

private void pictureBox18_Click(object sender, EventArgs e)


{
ColorSeleccionado = "CORAL";
colorClick = Color.Coral;
this.Close();
}

private void pictureBox19_Click(object sender, EventArgs e)


{
ColorSeleccionado = "CORNFLOWERBLUE";
colorClick = Color.CornflowerBlue;
this.Close();
}

private void pictureBox20_Click(object sender, EventArgs e)


{
ColorSeleccionado = "CORNSILK";
colorClick = Color.Cornsilk;
this.Close();
}

private void pictureBox16_Click(object sender, EventArgs e)


{
ColorSeleccionado = "CRIMSON";
colorClick = Color.Crimson;
this.Close();
}

private void pictureBox30_Click(object sender, EventArgs e)


{
ColorSeleccionado = "CYAN";
colorClick = Color.Cyan;
this.Close();
}

private void pictureBox29_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKBLUE";
colorClick = Color.DarkBlue;

79
this.Close();
}

private void pictureBox28_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKCYAN";
colorClick = Color.DarkCyan;
this.Close();
}

private void pictureBox27_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKGOLDENROD";
colorClick = Color.DarkGoldenrod;
this.Close();
}

private void pictureBox26_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKGRAY";
colorClick = Color.DarkGray;
this.Close();
}

private void pictureBox25_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKGREEN";
colorClick = Color.DarkGreen;
this.Close();
}

private void pictureBox24_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKKHAKI";
colorClick = Color.DarkKhaki;
this.Close();
}

private void pictureBox23_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKMAGENTA";
colorClick = Color.DarkMagenta;
this.Close();
}

private void pictureBox22_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKOLIVEGREEN";
colorClick = Color.DarkOliveGreen;
this.Close();
}

private void pictureBox21_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKORANGE";
colorClick = Color.DarkOrange;
this.Close();

80
}

private void pictureBox60_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKORCHID";
colorClick = Color.DarkOrchid;
this.Close();
}

private void pictureBox59_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKRED";
colorClick = Color.DarkRed;
this.Close();
}

private void pictureBox58_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKSALMON";
colorClick = Color.DarkSalmon;
this.Close();
}

private void pictureBox57_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKSEAGREEN";
colorClick = Color.DarkSeaGreen;
this.Close();
}

private void pictureBox56_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKSLATEBLUE";
colorClick = Color.DarkSlateBlue;
this.Close();
}

private void pictureBox55_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKSLATEGRAY";
colorClick = Color.DarkSlateGray;
this.Close();
}

private void pictureBox54_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKTURQUOISE";
colorClick = Color.DarkTurquoise;
this.Close();
}

private void pictureBox53_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DARKVIOLET";
colorClick = Color.DarkViolet;
this.Close();
}

81
private void pictureBox52_Click(object sender, EventArgs e)
{
ColorSeleccionado = "DEEPPINK";
colorClick = Color.DeepPink;
this.Close();
}

private void pictureBox51_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DEEPSKYBLUE";
colorClick = Color.DeepSkyBlue;
this.Close();
}

private void pictureBox50_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DIMGRAY";
colorClick = Color.DimGray;
this.Close();
}

private void pictureBox49_Click(object sender, EventArgs e)


{
ColorSeleccionado = "DODGERBLUE";
colorClick = Color.DodgerBlue;
this.Close();
}

private void pictureBox48_Click(object sender, EventArgs e)


{
ColorSeleccionado = "FIREBRICK";
colorClick = Color.Firebrick;
this.Close();
}

private void pictureBox47_Click(object sender, EventArgs e)


{
ColorSeleccionado = "FLORALWHITE";
colorClick = Color.FloralWhite;
this.Close();
}

private void pictureBox46_Click(object sender, EventArgs e)


{
ColorSeleccionado = "FORESTGREEN";
colorClick = Color.ForestGreen;
this.Close();
}

private void pictureBox44_Click(object sender, EventArgs e)


{
ColorSeleccionado = "FUCHSIA";
colorClick = Color.Fuchsia;
this.Close();
}

82
private void pictureBox43_Click(object sender, EventArgs e)
{
ColorSeleccionado = "GAINSBORO";
colorClick = Color.Gainsboro;
this.Close();
}

private void pictureBox42_Click(object sender, EventArgs e)


{
ColorSeleccionado = "GHOSTWHITE";
colorClick = Color.GhostWhite;
this.Close();
}

private void pictureBox41_Click(object sender, EventArgs e)


{
ColorSeleccionado = "GOLD";
colorClick = Color.Gold;
this.Close();
}

private void pictureBox45_Click(object sender, EventArgs e)


{
ColorSeleccionado = "GOLDENROD";
colorClick = Color.Goldenrod;
this.Close();
}

private void pictureBox40_Click(object sender, EventArgs e)


{
ColorSeleccionado = "GRAY";
colorClick = Color.Gray;
this.Close();
}

private void pictureBox39_Click(object sender, EventArgs e)


{
ColorSeleccionado = "GREEN";
colorClick = Color.Green;
this.Close();
}

private void pictureBox38_Click(object sender, EventArgs e)


{
ColorSeleccionado = "GREENYELLOW";
colorClick = Color.GreenYellow;
this.Close();
}

private void pictureBox37_Click(object sender, EventArgs e)


{
ColorSeleccionado = "HONEYDEW";
colorClick = Color.Honeydew;
this.Close();
}

private void pictureBox36_Click(object sender, EventArgs e)

83
{
ColorSeleccionado = "HOTPINK";
colorClick = Color.HotPink;
this.Close();
}

private void pictureBox35_Click(object sender, EventArgs e)


{
ColorSeleccionado = "INDIANRED";
colorClick = Color.IndianRed;
this.Close();
}

private void pictureBox34_Click(object sender, EventArgs e)


{
ColorSeleccionado = "INDIGO";
colorClick = Color.Indigo;
this.Close();
}

private void pictureBox33_Click(object sender, EventArgs e)


{
ColorSeleccionado = "IVORY";
colorClick = Color.Ivory;
this.Close();
}

private void pictureBox32_Click(object sender, EventArgs e)


{
ColorSeleccionado = "KHAKI";
colorClick = Color.Khaki;
this.Close();
}

private void pictureBox31_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LAVENDER";
colorClick = Color.Lavender;
this.Close();
}

private void pictureBox90_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LAVENDERBLUSH";
colorClick = Color.LavenderBlush;
this.Close();
}

private void pictureBox89_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LAWNGREEN";
colorClick = Color.LawnGreen;
this.Close();
}

private void pictureBox88_Click(object sender, EventArgs e)


{

84
ColorSeleccionado = "LEMONCHIFFON";
colorClick = Color.LemonChiffon;
this.Close();
}

private void pictureBox87_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTBLUE";
colorClick = Color.LightBlue;
this.Close();
}

private void pictureBox86_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTCORAL";
colorClick = Color.LightCoral;
this.Close();
}

private void pictureBox85_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTCYAN";
colorClick = Color.LightCyan;
this.Close();
}

private void pictureBox84_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTGOLDENRODYELLOW";
colorClick = Color.LightGoldenrodYellow;
this.Close();
}

private void pictureBox83_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTGRAY";
colorClick = Color.LightGray;
this.Close();
}

private void pictureBox82_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTGREEN";
colorClick = Color.LightGreen;
this.Close();
}

private void pictureBox81_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTGREY";
colorClick = Color.LightGray;
this.Close();
}

private void pictureBox80_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTPINK";

85
colorClick = Color.LightPink;
this.Close();
}

private void pictureBox79_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTSALMON";
colorClick = Color.LightSalmon;
this.Close();
}

private void pictureBox78_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTSEAGREEN";
colorClick = Color.LightSeaGreen;
this.Close();
}

private void pictureBox77_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTSKYBLUE";
colorClick = Color.LightSkyBlue;
this.Close();
}

private void pictureBox76_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTSLATEGRAY";
colorClick = Color.LightSlateGray;
this.Close();
}

private void pictureBox74_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTSTEELBLUE";
colorClick = Color.LightSteelBlue;
this.Close();
}

private void pictureBox73_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIGHTYELLOW";
colorClick = Color.LightYellow;
this.Close();
}

private void pictureBox72_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIME";
colorClick = Color.Lime;
this.Close();
}

private void pictureBox71_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LIMEGREEN";
colorClick = Color.LimeGreen;

86
this.Close();
}

private void pictureBox75_Click(object sender, EventArgs e)


{
ColorSeleccionado = "LINEN";
colorClick = Color.Linen;
this.Close();
}

private void pictureBox70_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MAGENTA";
colorClick = Color.Magenta;
this.Close();
}

private void pictureBox69_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MAROON";
colorClick = Color.Maroon;
this.Close();
}

private void pictureBox68_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MEDIUMAQUAMARINE";
colorClick = Color.MediumAquamarine;
this.Close();
}

private void pictureBox67_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MEDIUMBLUE";
colorClick = Color.MediumBlue;
this.Close();
}

private void pictureBox66_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MEDIUMORCHID";
colorClick = Color.MediumOrchid;
this.Close();
}

private void pictureBox65_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MEDIUMPURPLE";
colorClick = Color.MediumPurple;
this.Close();
}

private void pictureBox64_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MEDIUMSEAGREEN";
colorClick = Color.MediumSeaGreen;
this.Close();

87
}

private void pictureBox63_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MEDIUMSLATEBLUE";
colorClick = Color.MediumSlateBlue;
this.Close();
}

private void pictureBox62_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MEDIUMSPRINGGREEN";
colorClick = Color.MediumSpringGreen;
this.Close();
}

private void pictureBox61_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MEDIUMTURQUOISE";
colorClick = Color.MediumTurquoise;
this.Close();
}

private void pictureBox120_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MEDIUMVIOLETRED";
colorClick = Color.MediumVioletRed;
this.Close();
}

private void pictureBox119_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MIDNIGHTBLUE";
colorClick = Color.MidnightBlue;
this.Close();
}

private void pictureBox118_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MINTCREAM";
colorClick = Color.MintCream;
this.Close();
}

private void pictureBox117_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MISTYROSE";
colorClick = Color.MistyRose;
this.Close();
}

private void pictureBox116_Click(object sender, EventArgs e)


{
ColorSeleccionado = "MOCCASIN";
colorClick = Color.Moccasin;
this.Close();
}

88
private void pictureBox115_Click(object sender, EventArgs e)
{
ColorSeleccionado = "NAVAJOWHITE";
colorClick = Color.NavajoWhite;
this.Close();
}

private void pictureBox114_Click(object sender, EventArgs e)


{
ColorSeleccionado = "NAVY";
colorClick = Color.Navy;
this.Close();
}

private void pictureBox113_Click(object sender, EventArgs e)


{
ColorSeleccionado = "OLDLACE";
colorClick = Color.OldLace;
this.Close();
}

private void pictureBox112_Click(object sender, EventArgs e)


{
ColorSeleccionado = "OLIVE";
colorClick = Color.Olive;
this.Close();
}

private void pictureBox111_Click(object sender, EventArgs e)


{
ColorSeleccionado = "OLIVEDRAB";
colorClick = Color.OliveDrab;
this.Close();
}

private void pictureBox110_Click(object sender, EventArgs e)


{
ColorSeleccionado = "ORANGE";
colorClick = Color.Orange;
this.Close();
}

private void pictureBox109_Click(object sender, EventArgs e)


{
ColorSeleccionado = "ORANGERED";
colorClick = Color.OrangeRed;
this.Close();
}

private void pictureBox108_Click(object sender, EventArgs e)


{
ColorSeleccionado = "ORCHID";
colorClick = Color.Orchid;
this.Close();
}

89
private void pictureBox107_Click(object sender, EventArgs e)
{
ColorSeleccionado = "PALEGOLDENROD";
colorClick = Color.PaleGoldenrod;
this.Close();
}

private void pictureBox106_Click(object sender, EventArgs e)


{
ColorSeleccionado = "PALEGREEN";
colorClick = Color.PaleGreen;
this.Close();
}

private void pictureBox104_Click(object sender, EventArgs e)


{
ColorSeleccionado = "PALETURQUOISE";
colorClick = Color.PaleTurquoise;
this.Close();
}

private void pictureBox103_Click(object sender, EventArgs e)


{
ColorSeleccionado = "PALEVIOLETRED";
colorClick = Color.PaleVioletRed;
this.Close();
}

private void pictureBox102_Click(object sender, EventArgs e)


{
ColorSeleccionado = "PAPAYAWHIP";
colorClick = Color.PapayaWhip;
this.Close();
}

private void pictureBox101_Click(object sender, EventArgs e)


{
ColorSeleccionado = "PEACHPUFF";
colorClick = Color.PeachPuff;
this.Close();
}

private void pictureBox105_Click(object sender, EventArgs e)


{
ColorSeleccionado = "PERU";
colorClick = Color.Peru;
this.Close();
}

private void pictureBox100_Click(object sender, EventArgs e)


{
ColorSeleccionado = "PINK";
colorClick = Color.Pink;
this.Close();
}

private void pictureBox99_Click(object sender, EventArgs e)

90
{
ColorSeleccionado = "PLUM";
colorClick = Color.Plum;
this.Close();
}

private void pictureBox98_Click(object sender, EventArgs e)


{
ColorSeleccionado = "POWDERBLUE";
colorClick = Color.PowderBlue;
this.Close();
}

private void pictureBox97_Click(object sender, EventArgs e)


{
ColorSeleccionado = "PURPLE";
colorClick = Color.Purple;
this.Close();
}

private void pictureBox96_Click(object sender, EventArgs e)


{
ColorSeleccionado = "RED";
colorClick = Color.Red;
this.Close();
}

private void pictureBox95_Click(object sender, EventArgs e)


{
ColorSeleccionado = "ROSYBROWN";
colorClick = Color.RosyBrown;
this.Close();
}

private void pictureBox94_Click(object sender, EventArgs e)


{
ColorSeleccionado = "ROYALBLUE";
colorClick = Color.RoyalBlue;
this.Close();
}

private void pictureBox93_Click(object sender, EventArgs e)


{
ColorSeleccionado = "SADDLEBROWN";
colorClick = Color.SaddleBrown;
this.Close();
}

private void pictureBox92_Click(object sender, EventArgs e)


{
ColorSeleccionado = "SALMON";
colorClick = Color.Salmon;
this.Close();
}

private void pictureBox91_Click(object sender, EventArgs e)


{

91
ColorSeleccionado = "SANDYBROWN";
colorClick = Color.SandyBrown;
this.Close();
}

private void pictureBox150_Click(object sender, EventArgs e)


{
ColorSeleccionado = "SEAGREEN";
colorClick = Color.SeaGreen;
this.Close();
}

private void pictureBox149_Click(object sender, EventArgs e)


{
ColorSeleccionado = "SEASHELL";
colorClick = Color.SeaShell;
this.Close();
}

private void pictureBox148_Click(object sender, EventArgs e)


{
ColorSeleccionado = "SIENNA";
colorClick = Color.Sienna;
this.Close();
}

private void pictureBox147_Click(object sender, EventArgs e)


{
ColorSeleccionado = "SILVER";
colorClick = Color.Silver;
this.Close();
}

private void pictureBox146_Click(object sender, EventArgs e)


{
ColorSeleccionado = "SKYBLUE";
colorClick = Color.SkyBlue;
this.Close();
}

private void pictureBox145_Click(object sender, EventArgs e)


{
ColorSeleccionado = "SLATEBLUE";
colorClick = Color.SlateBlue;
this.Close();
}

private void pictureBox144_Click(object sender, EventArgs e)


{
ColorSeleccionado = "SLATEGRAY";
colorClick = Color.SlateGray;
this.Close();
}

private void pictureBox143_Click(object sender, EventArgs e)


{
ColorSeleccionado = "SNOW";

92
colorClick = Color.Snow;
this.Close();
}

private void pictureBox142_Click(object sender, EventArgs e)


{
ColorSeleccionado = "SPRINGGREEN";
colorClick = Color.SpringGreen;
this.Close();
}

private void pictureBox141_Click(object sender, EventArgs e)


{
ColorSeleccionado = "STEELBLUE";
colorClick = Color.SteelBlue;
this.Close();
}

private void pictureBox140_Click(object sender, EventArgs e)


{
ColorSeleccionado = "TAN";
colorClick = Color.Tan;
this.Close();
}

private void pictureBox139_Click(object sender, EventArgs e)


{
ColorSeleccionado = "TEAL";
colorClick = Color.Teal;
this.Close();
}

private void pictureBox138_Click(object sender, EventArgs e)


{
ColorSeleccionado = "THISTLE";
colorClick = Color.Thistle;
this.Close();
}

private void pictureBox137_Click(object sender, EventArgs e)


{
ColorSeleccionado = "TOMATO";
colorClick = Color.Tomato;
this.Close();
}

private void pictureBox136_Click(object sender, EventArgs e)


{
ColorSeleccionado = "TURQUOISE";
colorClick = Color.Turquoise;
this.Close();
}

private void pictureBox126_Click(object sender, EventArgs e)


{
ColorSeleccionado = "VIOLET";
colorClick = Color.Violet;

93
this.Close();
}

private void pictureBox125_Click(object sender, EventArgs e)


{
ColorSeleccionado = "WHEAT";
colorClick = Color.Wheat;
this.Close();
}

private void pictureBox124_Click(object sender, EventArgs e)


{
ColorSeleccionado = "WHITE";
colorClick = Color.White;
this.Close();
}

private void pictureBox123_Click(object sender, EventArgs e)


{
ColorSeleccionado = "WHITESMOKE";
colorClick = Color.WhiteSmoke;
this.Close();
}

private void pictureBox122_Click(object sender, EventArgs e)


{
ColorSeleccionado = "YELLOW";
colorClick = Color.Yellow;
this.Close();
}

private void pictureBox121_Click(object sender, EventArgs e)


{
ColorSeleccionado = "YELLOWGREEN";
colorClick = Color.YellowGreen;
this.Close();
}
}
}

Codificacion DialogAccionBoton

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
public partial class DialogoAccionBoton : Form

94
{
public string contenidoT
{
set;
get;
}

public DialogoAccionBoton()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)


{
this.contenidoT = this.textBox1.Text;
this.Close();
}

private void DialogoAccionBoton_Load(object sender, EventArgs e)


{
this.textBox1.Text = contenidoT;
}
}
}

Codificacion Form1

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TesisEjemplo1
{
public partial class Form1 : Form
{
#region "declaracion de variable"

bool cambiaTexto = true;


int posMouseFormX, posMouseFormY;
int posMouseBotonX, posMouseBotonY;
int posActBotonX, posActBotonY;
bool botonPresionado = false;
bool cambiaIcono = false;
string nombreIconoDefecto = "IconApp.png";
int indiceSeleccionado = -1;
Panel pnlSeleccionado = new Panel();

95
ArrayList arreglo = new ArrayList();
#region variableFormularioManipulacion
string ls_DireccionArchivoJava = "";
public Color _Color
{
set;
get;
}
public string _DirectorioJava
{
set
{
this.ls_DireccionArchivoJava = value;
}
get
{
return this.ls_DireccionArchivoJava;
}
}
string ls_NombreArchivoJava = "";
public string _NombreJava
{
set
{
this.ls_NombreArchivoJava = value;
}
get
{
return this.ls_NombreArchivoJava;
}
}
public string nombreImagenFondo
{
set;
get;
}
#endregion
#region variables formulario
public string nombreIcono
{
set
{
this.cambiaIcono = true;
this.nombreIconoDefecto = value;
}
get
{
return this.nombreIconoDefecto;
}
}
#endregion

#endregion

public Form1()
{
InitializeComponent();

96
}

/////////////////////////////////////////////////////////////////////////////
#region

#region "evento de accion click"


// Result of the event click Button, get the text of button and find record
private void ClickButton(Object sender, System.EventArgs e)
{
Panel btn = (Panel)sender;
string strFind = btn.Text + "";
///string strSql = "SELECT * FROM Phone WHERE [Name] LIKE " +
/// "'" + strFind + "'" + " Order by Name";
///FindAnyName(strSql); //using (DataReader) to find records
MessageBox.Show(strFind);
}
#endregion
#region "eventos movimiento"

private void moverBoton(Panel botonAccion)


{
botonAccion.Location = new System.Drawing.Point(posMouseFormX - posMouseBotonX,
posMouseFormY - posMouseBotonY);
posActBotonX = botonAccion.Location.X;
posActBotonY = botonAccion.Location.Y;
}

private void Form_MouseMove(object sender, MouseEventArgs e)


{
posMouseFormX = e.Location.X;
posMouseFormY = e.Location.Y;

private void btnMover_MouseMove(object sender, MouseEventArgs e)


{
if (e.Button.Equals(MouseButtons.Left))
{
Panel btn = (Panel)sender;
posMouseFormX = posActBotonX + e.Location.X;
posMouseFormY = posActBotonY + e.Location.Y;
if (botonPresionado) moverBoton(btn);
}
}

private void btnMover_MouseDown(object sender, MouseEventArgs e)


{
Panel pnl = (Panel)sender;
for (int i = 0; i < arreglo.Count; i++)
{
Panel pnlIndice = (Panel)arreglo[i];
if (pnl.Equals(pnlIndice))
{
pnlIndice.BorderStyle = BorderStyle.FixedSingle;

indiceSeleccionado = i;
pnlSeleccionado = pnlIndice;

97
llenaPropiedades((object)pnl);
}
else
{
pnlIndice.BorderStyle = BorderStyle.None;
}
}
if (e.Button.Equals(MouseButtons.Left))
{
posMouseBotonX = e.Location.X;
posMouseBotonY = e.Location.Y;
botonPresionado = true;
}
}

private void btnMover_MouseUp(object sender, MouseEventArgs e)


{
if (e.Button.Equals(MouseButtons.Left))
{
botonPresionado = false;
}
}

#endregion

int mostrar = 0;
private void Form1_Load(object sender, EventArgs e)
{
Presentacion p = new Presentacion();
p.Show();
this.Visible = false;
this.Hide();
this.cmbTipoFondo.SelectedIndex = 0;
this.pnlSeleccionarColor.Visible = false;
this.pnlBuscarImgFondo.Visible = false;
crearDirectorios();
this.cmbTipoFondo.SelectedIndex = 0;
}

#region creacion de solucion


public void generasolucion(string pathInput, string pathOutput, string nombreApp)
{
try
{
string iconoaplicacion = "";
#region crea directorio solucion
///de no existeir la ruta de solucion se la crea
if (System.IO.Directory.Exists(pathOutput))
{
System.IO.Directory.Delete(pathOutput,true);
}
System.IO.Directory.CreateDirectory(pathOutput);
#endregion
#region crear directorio para archivo java
string rutaPaquetes = "", contenidoArchivoJava = "";

98
System.IO.StreamReader archivoclassLectura = new System.IO.StreamReader(pathInput + "\\" +
"src" + "\\" + "Clase1.java");
while (!archivoclassLectura.EndOfStream)
{
contenidoArchivoJava = archivoclassLectura.ReadLine();
if (contenidoArchivoJava.Replace(" ", "") != "")
{
if (rutaPaquetes == "")
{
if (contenidoArchivoJava.Substring(0, 7) == "package")
{
rutaPaquetes = contenidoArchivoJava.Substring(7, contenidoArchivoJava.Length -
7).Replace(";", "").Replace(".", "\\").Replace(" ", "");
if (!System.IO.Directory.Exists(pathOutput + "\\src\\" + rutaPaquetes))
{
System.IO.Directory.CreateDirectory(pathOutput + "\\src\\" + rutaPaquetes);
}
}
}
}
}
#endregion
#region copiar archivos y carpetas a la solucion
System.IO.File.Copy(pathInput + "\\" + "src\\Clase1.java", pathOutput + "\\src\\" + rutaPaquetes +
"\\Clase1.java", true);
if (!System.IO.Directory.Exists(""))
{
System.IO.Directory.CreateDirectory(pathOutput + "\\" + ".preprocessed");
}
if (!System.IO.Directory.Exists(pathOutput + "\\.settings"))
{
System.IO.Directory.CreateDirectory(pathOutput + "\\.settings");
}

System.IO.File.Copy("C:\\FuentesDesarrolladosTHWPR\\Plantillas\\.settings\\org.eclipse.jdt.core.prefs",
pathOutput + "\\.settings\\org.eclipse.jdt.core.prefs", true);
if (!System.IO.Directory.Exists(pathOutput + "\\res\\img"))
{
System.IO.Directory.CreateDirectory(pathOutput + "\\res\\img");
}
string[] archivosIconos = System.IO.Directory.GetFiles(pathInput + "\\res\\img");
string dirimg="", rchimg="";
for (int i = 0; i < archivosIconos.Length; i++)
{
separaDirArchivo(archivosIconos[i], ref dirimg, ref rchimg);
System.IO.File.Copy(pathInput + "\\res\\img\\" + rchimg, pathOutput + "\\res\\img\\" + rchimg,
true);
iconoaplicacion = rchimg;
}
string[] archivosImagenes = System.IO.Directory.GetFiles(pathInput + "\\res");
for (int i = 0; i < archivosImagenes.Length; i++)
{
if (archivosImagenes[i] != "img")
{
separaDirArchivo(archivosImagenes[i], ref dirimg, ref rchimg);
System.IO.File.Copy(pathInput + "\\res\\" + rchimg, pathOutput + "\\res\\" + rchimg, true);

99
}
}
System.IO.File.Copy("C:\\FuentesDesarrolladosTHWPR\\Plantillas\\.classpath", pathOutput +
"\\.classpath", true);
System.IO.StreamReader archivoproyectFile = new
System.IO.StreamReader("C:\\FuentesDesarrolladosTHWPR\\Plantillas\\.project");
string contenidoArchivoproyect = "";
while (!archivoproyectFile.EndOfStream)
{
contenidoArchivoproyect = contenidoArchivoproyect +
archivoproyectFile.ReadLine().Replace("[[NOMBREAPP]]", nombreApp) + "\n";
}
//contenidoArchivoproyect.Replace("[[NOMBREAPP]]", nombreApp);
System.IO.StreamWriter archivoProyectFinal = new System.IO.StreamWriter(pathOutput +
"\\.project", true);
archivoProyectFinal.WriteLine(contenidoArchivoproyect);
archivoProyectFinal.Close();

System.IO.StreamReader archivoDescriptorFile = new


System.IO.StreamReader("C:\\FuentesDesarrolladosTHWPR\\Plantillas\\BlackBerry_App_Descriptor.xml")
;
string contenidoArchivoDescriptor = "";
while (!archivoDescriptorFile.EndOfStream)
{
contenidoArchivoDescriptor = contenidoArchivoDescriptor +
archivoDescriptorFile.ReadLine().Replace("[[ICONOAPP]]",
this.txtIconoSolucionApp.Text).Replace("[[NOMBREAPP]]", nombreApp) + "\n";
}
//contenidoArchivoproyect.Replace("[[ICONOAPP]]", iconoaplicacion);
//contenidoArchivoproyect.Replace("[[NOMBREAPP]]", nombreApp);
System.IO.StreamWriter archivoDescriptortFinal = new System.IO.StreamWriter(pathOutput +
"\\BlackBerry_App_Descriptor.xml", true);
archivoDescriptortFinal.WriteLine(contenidoArchivoDescriptor);
archivoDescriptortFinal.Close();
MessageBox.Show("Se Genero la Solucion en la Siguiente Ruta:" + pathOutput, "Generacion
Exitosa", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
#endregion
}
catch (Exception ex)
{
MessageBox.Show("Error de Generacion " + ex.Message,"Error de
Solucion",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}

#endregion

//private void button1_Click(object sender, EventArgs e)


//{
// string resultadoFinal = "";
// for (int i = 0; i < arreglo.Count; i++)
// {
// Panel btn = (Panel)arreglo[i];
// resultadoFinal = resultadoFinal + "Boton " + btn.Name + i.ToString() + "::: pos X = " +
btn.Location.X.ToString() + " pos Y = " + btn.Location.Y.ToString() + "\n";
// }

100
// this.txtResultadoMovimiento.Text = resultadoFinal;
//}

private void txtResultadoMovimiento_TextChanged(object sender, EventArgs e)


{

private void button1_Click_1(object sender, EventArgs e)


{
string resultadoFinal = "";
for (int i = 0; i < arreglo.Count; i++)
{
Panel btn = (Panel)arreglo[i];
resultadoFinal = resultadoFinal + "Boton " + btn.Name + i.ToString() + "::: pos X = " +
btn.Location.X.ToString() + " pos Y = " + btn.Location.Y.ToString() + "\n";
}
this.txtResultadoMovimiento.Text = resultadoFinal;
}

private void aumentaPanel(System.Windows.Forms.Panel panel , int ancho ,int alto )


{
int posX=0,posY=0;
///------buscaPosicionUltmoObj(ref posX, ref posY);
ObjetoBase bj = (ObjetoBase)panel;
if(bj._TipoControl != "BROWSER" && bj._TipoControl != "MAPA"){
panel.Width = ancho;
panel.Height = alto;
///panel.Width = 500;
//panel.Height = 400;
panel.BorderStyle = BorderStyle.FixedSingle;

//panel.Left = 1;
//panel.Top = 1;
panel.Left = posX;
panel.Top = posY;
panel1.Controls.Add(panel);
///panel.Text = ((char)(i + 65)).ToString();
//boton.Click += new System.EventHandler(ClickButton);
panel.MouseMove += new MouseEventHandler(btnMover_MouseMove);
panel.MouseDown += new MouseEventHandler(btnMover_MouseDown);
panel.MouseUp += new MouseEventHandler(btnMover_MouseUp);
this.MouseMove += new MouseEventHandler(Form_MouseMove);
panel.ContextMenuStrip = mnuClickDerecho;
arreglo.Add(panel);
}
else
{
bj._ancho = this.panel1.Width;
bj._alto = this.panel1.Height;
panel.Top = 0;
panel.Left = 0;
panel.Width = this.panel1.Width;
panel.Height = this.panel1.Height;
panel1.Controls.Add(panel);
panel.ContextMenuStrip = mnuClickDerecho;
arreglo.Add(panel);

101
}
}

//private void button3_Click(object sender, EventArgs e)


//{
// if (indiceSeleccionado > -1)
// {
// arreglo.RemoveAt(indiceSeleccionado);
// pnlSeleccionado.Visible = false;
// indiceSeleccionado = -1;
// }
//}

private void mnuClickDerecho_Opening(object sender, CancelEventArgs e)


{

private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)


{

private void menuStrip1_ItemClicked_1(object sender, ToolStripItemClickedEventArgs e)


{
arreglo.RemoveAt(indiceSeleccionado);
pnlSeleccionado.Visible = false;
indiceSeleccionado = -1;
}

private void toolStripMenuItem1_Click(object sender, EventArgs e)


{

#endregion

public void AsignaNombre()


{
if (arreglo.Count >= 1)
{
ObjetoBase objeto = (ObjetoBase)arreglo[arreglo.Count - 1];
string tipo = objeto._TipoControl;
string nombre ="";
if(tipo == "ETIQUETA"){
nombre = "Etiqueta_";
}
if (tipo == "RICHTEXTBOX")
{
nombre = "RichTextBox_";
}
if(tipo == "CAJATEXTO"){
nombre = "CajaTexto_";
}
if (tipo == "BOTON")
{
nombre = "Boton_";

102
}
if (tipo == "PASSWORD")
{
nombre = "Password_";
}
if (tipo == "EMAIL")
{
nombre = "Email_";
}
if (tipo == "TEXTOAUTOCOMPLETAR")
{
nombre = "TxtAutoCompleta_";
}
if (tipo == "CAJATEXTOAUTOCORREGIR")
{
nombre = "TxtAutoCorregir_";
}
if (tipo == "TEXTOAUTOCOMPLETAR_")
{
nombre = "TxtCompletar_";
}
if (tipo == "CHECKBOX")
{
nombre = "CheckBox_";
}
if (tipo == "COMBOBOX")
{
nombre = "ComboBox_";
}
if (tipo == "COMBOBOXNUMERICO")
{
nombre = "ComboBoxNum_";
}
if (tipo == "CAMPOFECHA")
{
nombre = "CampoFecha_";
}
if (tipo == "OPCION")
{
nombre = "Opcion_";
}
if (tipo == "IMAGEN")
{
nombre = "Imagen_";
}
if (tipo == "BROWSER")
{
nombre = "Browser_";
}
if (tipo == "MAPA")
{
nombre = "Mapa_";
}
int indiceObjeto = 1;
bool repetido=false;
do
{

103
for (int i = 0; i < arreglo.Count; i++)
{
ObjetoBase bs = (ObjetoBase)arreglo[i];
if (nombre + indiceObjeto.ToString() == bs._Nombrecontrol)
{
indiceObjeto++;
repetido = true;
}
else
{
repetido = false;
}
}

} while (repetido);
nombre = nombre + indiceObjeto;
if (tipo == "ETIQUETA")
{
PanelEtiqueta pe = (PanelEtiqueta)arreglo[arreglo.Count - 1];
pe._Nombrecontrol = nombre;
}
if (tipo == "RICHTEXTBOX")
{
PanelRichTextBox prtb = (PanelRichTextBox)arreglo[arreglo.Count - 1];
prtb._Nombrecontrol = nombre;
}
if (tipo == "CAJATEXTO")
{
PanelCajatexto pct = (PanelCajatexto)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "PASSWORD")
{
PanelPassword pct = (PanelPassword)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "EMAIL")
{
PanelEmail pct = (PanelEmail)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "TEXTOAUTOCOMPLETAR")
{
PanelTextoAutocompletar pct = (PanelTextoAutocompletar)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "CAJATEXTOAUTOCORREGIR")
{
PanelTextoAutocorregir pct = (PanelTextoAutocorregir)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "TEXTOAUTOCOMPLETAR_")
{
PanelAutoCompletar pct = (PanelAutoCompletar)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "CHECKBOX")

104
{
PanelCheckBox pct = (PanelCheckBox)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "COMBOBOX")
{
PanelComboBox pct = (PanelComboBox)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "COMBOBOXNUMERICO")
{
PanelComboBoxNumerico pct = (PanelComboBoxNumerico)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "CAMPOFECHA")
{
PanelCampoFecha pct = (PanelCampoFecha)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "OPCION")
{
PanelCampoOpcion pct = (PanelCampoOpcion)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "BOTON")
{
PanelBoton pct = (PanelBoton)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "IMAGEN")
{
PanelCampoImagen pct = (PanelCampoImagen)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "BROWSER")
{
PanelBrowserField pct = (PanelBrowserField)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
if (tipo == "MAPA")
{
PanelCamposMapa pct = (PanelCamposMapa)arreglo[arreglo.Count - 1];
pct._Nombrecontrol = nombre;
}
}
}

public void buscaPosicionUltmoObj(ref int posX, ref int posY)


{
if (arreglo.Count < 1)
{
posY = 0;
posX = 0;
}
else
{
for (int i = 0; i < arreglo.Count; i++)

105
{
ObjetoBase obj = (ObjetoBase)arreglo[i];
if (posY < obj._posY)
{
posY = obj._posY;
}
}
posY += 20;
}
}

public string retornaTipoSeleccionado()


{
ObjetoBase obj = (ObjetoBase)arreglo[indiceSeleccionado];
return obj._TipoControl;
}

#region "se encarga de la generacion de los codigos java para RIM"


public void generaCodigoJava()
{
try
{
if (arreglo.Count > 0)
{
string nombreGrupos = "";
string contenidoArchivo =
"package miPaquete;\n" +
"import net.rim.device.api.system.Bitmap;\n" +
"import net.rim.device.api.ui.Color;\n" +
"import net.rim.device.api.ui.Font;\n" +
"import net.rim.device.api.ui.FontFamily;\n" +
"import net.rim.device.api.ui.Ui;\n" +
"import net.rim.device.api.ui.Graphics;\n" +
"import net.rim.device.api.ui.UiApplication;\n" +
"import net.rim.device.api.ui.decor.Background;\n" +
"import net.rim.device.api.ui.decor.BackgroundFactory;\n" +
"import net.rim.device.api.ui.container.AbsoluteFieldManager;\n" +
"import net.rim.device.api.collection.util.BasicFilteredList;\n" +
"import net.rim.device.api.ui.component.StandardTitleBar;\n" +
"import net.rim.device.api.ui.container.MainScreen;\n\n\n" +

"\n\n" +
"import java.util.Vector;\n\n" +
"import net.rim.device.api.ui.Field;\n" +
"import net.rim.device.api.ui.Manager;\n" +
"import net.rim.device.api.ui.XYPoint;\n\n\n" +
"public class Clase1 extends net.rim.device.api.ui.UiApplication{\n" +
" public static void main(String[] args)\n" +
" {\n" +
" Clase1 theApp = new Clase1();\n" +
" theApp.enterEventDispatcher();\n" +
" }\n" +
" public Clase1()\n" +
" {\n" +
" pushScreen(new MyScreen());\n" +
" }\n" +
"}\n" +

106
"final class MyScreen extends MainScreen\n" +
"{\n" +
" public MyScreen()\n" +
" {\n" +
" super( net.rim.device.api.ui.container.FullScreen.DEFAULT_CLOSE |
net.rim.device.api.ui.container.FullScreen.DEFAULT_MENU );\n" +
" StandardTitleBar myTitleBar = new StandardTitleBar()\n" +
" .addIcon(\"" +
((this.txtImagenIcono.Text!="")?this.txtImagenIcono.Text:nombreIconoDefecto).ToString() + "\")\n" +
" .addTitle(\"" + this.txtTituloPantalla.Text + "\")\n";
if(chkReloj.Checked)
{
contenidoArchivo = contenidoArchivo + " .addClock()\n" ;
}
if(chkNotificaciones.Checked)
{
contenidoArchivo = contenidoArchivo + " .addNotifications()\n";
}
if (chkSenal.Checked)
{
contenidoArchivo = contenidoArchivo + " .addSignalIndicator()\n";
}
contenidoArchivo = contenidoArchivo + ";\n" +
"
myTitleBar.setPropertyValue(StandardTitleBar.PROPERTY_BATTERY_VISIBILITY,\n" +
" StandardTitleBar.BATTERY_VISIBLE_LOW_OR_CHARGING);\n" +
" setTitleBar(myTitleBar);\n" +
" ControlLibreFieldManager manejador1 = new ControlLibreFieldManager();\n";

if (this.cmbTipoFondo.Items[this.cmbTipoFondo.SelectedIndex].ToString() == "IMAGEN")
{
contenidoArchivo = contenidoArchivo +
" Bitmap bitmapImage = Bitmap.getBitmapResource(\"" + nombreImagenFondo +
"\");\n" +
"
getMainManager().setBackground(BackgroundFactory.createBitmapBackground(bitmapImage,0, 0,
Background.REPEAT_SCALE_TO_FIT));\n";
}
for (int i = 0; i < arreglo.Count; i++)
{
ObjetoBase obj = (ObjetoBase)arreglo[i];
#region "generacion de etiquetas"
if (obj._TipoControl == "ETIQUETA")
{
PanelEtiqueta pe = (PanelEtiqueta)arreglo[i];
if (!pe.poseeColorfondo && !pe.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.LabelField " + pe._Nombrecontrol + "= new
net.rim.device.api.ui.component.LabelField(\"" + pe._Texto.Replace(Encoding.ASCII.GetString(new byte[]
{ (byte)13 }), "").Replace(Encoding.ASCII.GetString(new byte[] { (byte)10 }), "") + "\");\n";
}
else
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.LabelField " + pe._Nombrecontrol + " = new

107
net.rim.device.api.ui.component.LabelField(\"" + pe._Texto.Replace(Encoding.ASCII.GetString(new byte[]
{ (byte)13 }), "").Replace(Encoding.ASCII.GetString(new byte[] { (byte)10 }), "") + "\"){\n" +
" public void paint(Graphics g){\n";
if (pe.poseeColorfondo)
{
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color." +
pe.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";
}
if(pe.poseeColorTextop){
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
pe.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +
" }\n" +
" };\n";
}

if (pe.lb_poseeEstilo || pe.lb_poseeOtraFamiliaTexto || pe.lb_otrotamanioTexto)


{
contenidoArchivo = contenidoArchivo +
" try\n" +
" {\n" +
" Font f = " + pe._Nombrecontrol + ".getFont();\n";

if (pe.lb_poseeOtraFamiliaTexto)
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily =
FontFamily.forName(\"" + pe._NombreFamiliaTexto + "\");\n";
}
else
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily = " +
pe._Nombrecontrol + ".getFont().getFontFamily();\n";
}
String textoPlano = (pe.lb_poseeEstilo == true) ? pe._NombreEstiloTexto.ToString() :
"PLAIN";
string tamanio = (pe.lb_otrotamanioTexto == true) ? pe._TamanioTexto.ToString() :
"10";
contenidoArchivo = contenidoArchivo + " Font myFont =
fontFamily.getFont(" + pe._Nombrecontrol + ".getFont().getLeading(), " + pe._Nombrecontrol +
".getFont().getHeight()).derive(Font." + textoPlano + ", " + tamanio + ", Ui.UNITS_pt);\n";
contenidoArchivo = contenidoArchivo + " " + pe._Nombrecontrol +
".setFont(myFont);\n";
contenidoArchivo = contenidoArchivo + " }\n" +
" catch(Exception ex)\n" +
" {\n" +
" }\n";
}

contenidoArchivo = contenidoArchivo + " manejador1.add(" + pe._Nombrecontrol +


"," + (pe._posX * 2).ToString() + "," + (pe._posY * 2).ToString() + ");\n";
//" this.add(" + pe._Nombrecontrol + ");\n";
}
#endregion
#region "generacion de campo de solo lectura"

108
if (obj._TipoControl == "RICHTEXTBOX")
{
PanelRichTextBox prt = (PanelRichTextBox)arreglo[i];
if (!prt.poseeColorfondo && !prt.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.RichTextField " + prt._Nombrecontrol + "= new
net.rim.device.api.ui.component.RichTextField(\"" + prt._Texto.Replace(Encoding.ASCII.GetString(new
byte[] { (byte)13 }), "\\n").Replace(Encoding.ASCII.GetString(new byte[] { (byte)10 }), "") + "\");\n";
}
else
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.RichTextField " + prt._Nombrecontrol + " = new
net.rim.device.api.ui.component.RichTextField(\"" + prt._Texto.Replace(Encoding.ASCII.GetString(new
byte[] { (byte)10 }), "\\n").Replace(Encoding.ASCII.GetString(new byte[] { (byte)10 }), "") + "\"){\n" +
" public void paint(Graphics g){\n";
if (prt.poseeColorfondo)
{
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color." +
prt.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";
}
if (prt.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
prt.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +
" }\n" +
" };\n";
}

if (prt.lb_poseeEstilo || prt.lb_poseeOtraFamiliaTexto || prt.lb_otrotamanioTexto)


{
contenidoArchivo = contenidoArchivo +
" try\n" +
" {\n" +
" Font f = " + prt._Nombrecontrol + ".getFont();\n";

if (prt.lb_poseeOtraFamiliaTexto)
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily =
FontFamily.forName(\"" + prt._NombreFamiliaTexto + "\");\n";
}
else
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily = " +
prt._Nombrecontrol + ".getFont().getFontFamily();\n";
}
String textoPlano = (prt.lb_poseeEstilo == true) ? prt._NombreEstiloTexto.ToString() :
"PLAIN";
string tamanio = (prt.lb_otrotamanioTexto == true) ? prt._TamanioTexto.ToString() :
"10";

109
contenidoArchivo = contenidoArchivo + " Font myFont =
fontFamily.getFont(" + prt._Nombrecontrol + ".getFont().getLeading(), " + prt._Nombrecontrol +
".getFont().getHeight()).derive(Font." + textoPlano + ", " + tamanio + ", Ui.UNITS_pt);\n";
contenidoArchivo = contenidoArchivo + " " + prt._Nombrecontrol +
".setFont(myFont);\n";
contenidoArchivo = contenidoArchivo + " }\n" +
" catch(Exception ex)\n" +
" {\n" +
" }\n";
}

contenidoArchivo = contenidoArchivo + " manejador1.add(" + prt._Nombrecontrol +


"," + (prt._posX * 2).ToString() + "," + (prt._posY * 2).ToString() + ");\n";
//" this.add(" + pe._Nombrecontrol + ");\n";
}
#endregion
#region "generacion de campos de textos"
if (obj._TipoControl == "CAJATEXTO")
{
PanelCajatexto pct = (PanelCajatexto)arreglo[i];
if (!pct.poseeColorfondo && !pct.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.TextField " + pct._Nombrecontrol + "= new
net.rim.device.api.ui.component.TextField();\n";

}
else
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.TextField " + pct._Nombrecontrol + " = new
net.rim.device.api.ui.component.TextField(){\n" +
" public void paint(Graphics g){\n";
if (pct.poseeColorfondo)
{
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color." +
pct.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";
}
if (pct.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
pct.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +
" }\n" +
" };\n";
}

if (pct.lb_poseeEstilo || pct.lb_poseeOtraFamiliaTexto || pct.lb_otrotamanioTexto)


{
contenidoArchivo = contenidoArchivo +
" try\n" +
" {\n" +
" Font f = " + pct._Nombrecontrol + ".getFont();\n";

110
if (pct.lb_poseeOtraFamiliaTexto)
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily =
FontFamily.forName(\"" + pct._NombreFamiliaTexto + "\");\n";
}
else
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily = " +
pct._Nombrecontrol + ".getFont().getFontFamily();\n";
}
String textoPlano = (pct.lb_poseeEstilo == true) ? pct._NombreEstiloTexto.ToString() :
"PLAIN";
string tamanio = (pct.lb_otrotamanioTexto == true) ? pct._TamanioTexto.ToString() :
"10";
contenidoArchivo = contenidoArchivo + " Font myFont =
fontFamily.getFont(" + pct._Nombrecontrol + ".getFont().getLeading(), " + pct._Nombrecontrol +
".getFont().getHeight()).derive(Font." + textoPlano + ", " + tamanio + ", Ui.UNITS_pt);\n";
contenidoArchivo = contenidoArchivo + " " + pct._Nombrecontrol +
".setFont(myFont);\n";
contenidoArchivo = contenidoArchivo + " }\n" +
" catch(Exception ex)\n" +
" {\n" +
" }\n";
}

contenidoArchivo = contenidoArchivo + " manejador1.add(" + pct._Nombrecontrol +


"," + (pct._posX * 2).ToString() + "," + (pct._posY * 2).ToString() + ");\n";
}
#endregion
#region "generacion de campos de password"
if (obj._TipoControl == "PASSWORD")
{
/*PanelCajatexto pct = (PanelCajatexto)arreglo[i];
contenidoArchivo = contenidoArchivo + " net.rim.device.api.ui.component.TextField
" + pct._Nombrecontrol + "= new net.rim.device.api.ui.component.TextField();\n" +
" manejador1.add(" + pct._Nombrecontrol + "," + (pct._posX * 2).ToString() + "," +
(pct._posY * 2).ToString() + ");\n";*/
//" this.add(" + pct._Nombrecontrol + ");\n";
PanelPassword ppwd = (PanelPassword)arreglo[i];
if (!ppwd.poseeColorfondo && !ppwd.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.PasswordEditField " + ppwd._Nombrecontrol + "= new
net.rim.device.api.ui.component.PasswordEditField();\n";

}
else
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.PasswordEditField " + ppwd._Nombrecontrol + " = new
net.rim.device.api.ui.component.PasswordEditField(){\n" +
" public void paint(Graphics g){\n";
if (ppwd.poseeColorfondo)
{
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color." +
ppwd.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";

111
}
if (ppwd.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
ppwd.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +
" }\n" +
" };\n";
}
contenidoArchivo = contenidoArchivo + " manejador1.add(" + ppwd._Nombrecontrol
+ "," + (ppwd._posX * 2).ToString() + "," + (ppwd._posY * 2).ToString() + ");\n";
}
#endregion
#region "generacion de campos de correos"
if (obj._TipoControl == "EMAIL")
{
/*PanelCajatexto pct = (PanelCajatexto)arreglo[i];
contenidoArchivo = contenidoArchivo + " net.rim.device.api.ui.component.TextField
" + pct._Nombrecontrol + "= new net.rim.device.api.ui.component.TextField();\n" +
" manejador1.add(" + pct._Nombrecontrol + "," + (pct._posX * 2).ToString() + "," +
(pct._posY * 2).ToString() + ");\n";*/
//" this.add(" + pct._Nombrecontrol + ");\n";
PanelEmail pemail = (PanelEmail)arreglo[i];
if (!pemail.poseeColorfondo && !pemail.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.EmailAddressEditField " + pemail._Nombrecontrol + "= new
net.rim.device.api.ui.component.EmailAddressEditField(\"\",\"\");\n";

}
else
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.EmailAddressEditField " + pemail._Nombrecontrol + " = new
net.rim.device.api.ui.component.EmailAddressEditField(\"\",\"\"){\n" +
" public void paint(Graphics g){\n";
if (pemail.poseeColorfondo)
{
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color." +
pemail.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";
}
if (pemail.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
pemail.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +
" }\n" +
" };\n";
}

if (pemail.lb_poseeEstilo || pemail.lb_poseeOtraFamiliaTexto ||
pemail.lb_otrotamanioTexto)

112
{
contenidoArchivo = contenidoArchivo +
" try\n" +
" {\n" +
" Font f = " + pemail._Nombrecontrol + ".getFont();\n";

if (pemail.lb_poseeOtraFamiliaTexto)
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily =
FontFamily.forName(\"" + pemail._NombreFamiliaTexto + "\");\n";
}
else
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily = " +
pemail._Nombrecontrol + ".getFont().getFontFamily();\n";
}
String textoPlano = (pemail.lb_poseeEstilo == true) ?
pemail._NombreEstiloTexto.ToString() : "PLAIN";
string tamanio = (pemail.lb_otrotamanioTexto == true) ?
pemail._TamanioTexto.ToString() : "10";
contenidoArchivo = contenidoArchivo + " Font myFont =
fontFamily.getFont(" + pemail._Nombrecontrol + ".getFont().getLeading(), " + pemail._Nombrecontrol +
".getFont().getHeight()).derive(Font." + textoPlano + ", " + tamanio + ", Ui.UNITS_pt);\n";
contenidoArchivo = contenidoArchivo + " " + pemail._Nombrecontrol +
".setFont(myFont);\n";
contenidoArchivo = contenidoArchivo + " }\n" +
" catch(Exception ex)\n" +
" {\n" +
" }\n";
}

contenidoArchivo = contenidoArchivo + " manejador1.add(" +


pemail._Nombrecontrol + "," + (pemail._posX * 2).ToString() + "," + (pemail._posY * 2).ToString() +
");\n";
}
#endregion
#region "generacion de campos de textos busqueda"
if (obj._TipoControl == "TEXTOAUTOCOMPLETAR")
{

PanelTextoAutocompletar pct = (PanelTextoAutocompletar)arreglo[i];


contenidoArchivo = contenidoArchivo + " BasicFilteredList filterList_" +
pct._Nombrecontrol + " = new BasicFilteredList();\n";
contenidoArchivo = contenidoArchivo + " String[] varArray_" + pct._Nombrecontrol
+ " = {" ;
Array arregloTmp = pct.Contenido;
for (int j = 0; j < pct.Contenido.Length; j++)
{
contenidoArchivo = contenidoArchivo + "\"" + pct.Contenido.GetValue(j).ToString() +
"\",";
}
contenidoArchivo = contenidoArchivo.Substring(0, contenidoArchivo.Length - 1);
contenidoArchivo = contenidoArchivo + "};\n" +
" filterList_" + pct._Nombrecontrol +
".addDataSet(1,varArray_" + pct._Nombrecontrol
+",\"days\",BasicFilteredList.COMPARISON_IGNORE_CASE);\n";
if (!pct.poseeColorfondo && !pct.poseeColorTextop)

113
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.AutoCompleteField " + pct._Nombrecontrol + "= new
net.rim.device.api.ui.component.AutoCompleteField(filterList_" + pct._Nombrecontrol +");\n";

}
else
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.AutoCompleteField " + pct._Nombrecontrol + " = new
net.rim.device.api.ui.component.AutoCompleteField(filterList_" + pct._Nombrecontrol +"){\n" +
" public void paint(Graphics g){\n";
if (pct.poseeColorfondo)
{
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color." +
pct.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";
}
if (pct.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
pct.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +
" }\n" +
" };\n";
}

if (pct.lb_poseeEstilo || pct.lb_poseeOtraFamiliaTexto || pct.lb_otrotamanioTexto)


{
contenidoArchivo = contenidoArchivo +
" try\n" +
" {\n" +
" Font f = " + pct._Nombrecontrol + ".getFont();\n";

if (pct.lb_poseeOtraFamiliaTexto)
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily =
FontFamily.forName(\"" + pct._NombreFamiliaTexto + "\");\n";
}
else
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily = " +
pct._Nombrecontrol + ".getFont().getFontFamily();\n";
}
String textoPlano = (pct.lb_poseeEstilo == true) ? pct._NombreEstiloTexto.ToString() :
"PLAIN";
string tamanio = (pct.lb_otrotamanioTexto == true) ? pct._TamanioTexto.ToString() :
"10";
contenidoArchivo = contenidoArchivo + " Font myFont =
fontFamily.getFont(" + pct._Nombrecontrol + ".getFont().getLeading(), " + pct._Nombrecontrol +
".getFont().getHeight()).derive(Font." + textoPlano + ", " + tamanio + ", Ui.UNITS_pt);\n";
contenidoArchivo = contenidoArchivo + " " + pct._Nombrecontrol +
".setFont(myFont);\n";
contenidoArchivo = contenidoArchivo + " }\n" +
" catch(Exception ex)\n" +

114
" {\n" +
" }\n";
}

contenidoArchivo = contenidoArchivo + " manejador1.add(" + pct._Nombrecontrol +


"," + (pct._posX * 2).ToString() + "," + (pct._posY * 2).ToString() + ");\n";
}
#endregion
#region "generacion de campos de textos autocorregir"
if (obj._TipoControl == "CAJATEXTOAUTOCORREGIR")
{
PanelTextoAutocorregir pct = (PanelTextoAutocorregir)arreglo[i];
if (!pct.poseeColorfondo && !pct.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.AutoTextEditField " + pct._Nombrecontrol + "= new
net.rim.device.api.ui.component.AutoTextEditField();\n";

}
else
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.AutoTextEditField " + pct._Nombrecontrol + " = new
net.rim.device.api.ui.component.AutoTextEditField(){\n" +
" public void paint(Graphics g){\n";
if (pct.poseeColorfondo)
{
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color." +
pct.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";
}
if (pct.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
pct.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +
" }\n" +
" };\n";
}

if (pct.lb_poseeEstilo || pct.lb_poseeOtraFamiliaTexto || pct.lb_otrotamanioTexto)


{
contenidoArchivo = contenidoArchivo +
" try\n" +
" {\n" +
" Font f = " + pct._Nombrecontrol + ".getFont();\n";

if (pct.lb_poseeOtraFamiliaTexto)
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily =
FontFamily.forName(\"" + pct._NombreFamiliaTexto + "\");\n";
}
else
{

115
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily = " +
pct._Nombrecontrol + ".getFont().getFontFamily();\n";
}
String textoPlano = (pct.lb_poseeEstilo == true) ? pct._NombreEstiloTexto.ToString() :
"PLAIN";
string tamanio = (pct.lb_otrotamanioTexto == true) ? pct._TamanioTexto.ToString() :
"10";
contenidoArchivo = contenidoArchivo + " Font myFont =
fontFamily.getFont(" + pct._Nombrecontrol + ".getFont().getLeading(), " + pct._Nombrecontrol +
".getFont().getHeight()).derive(Font." + textoPlano + ", " + tamanio + ", Ui.UNITS_pt);\n";
contenidoArchivo = contenidoArchivo + " " + pct._Nombrecontrol +
".setFont(myFont);\n";
contenidoArchivo = contenidoArchivo + " }\n" +
" catch(Exception ex)\n" +
" {\n" +
" }\n";
}

contenidoArchivo = contenidoArchivo + " manejador1.add(" + pct._Nombrecontrol +


"," + (pct._posX * 2).ToString() + "," + (pct._posY * 2).ToString() + ");\n";
}
#endregion
#region "generacion de campos de textos completar"
if (obj._TipoControl == "TEXTOAUTOCOMPLETAR_")
{
PanelAutoCompletar pct = (PanelAutoCompletar)arreglo[i];
if (!pct.poseeColorfondo && !pct.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.ActiveAutoTextEditField " + pct._Nombrecontrol + "= new
net.rim.device.api.ui.component.ActiveAutoTextEditField(\"\",\"\");\n";

}
else
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.ActiveAutoTextEditField " + pct._Nombrecontrol + " = new
net.rim.device.api.ui.component.ActiveAutoTextEditField(\"\",\"\"){\n" +
" public void paint(Graphics g){\n";
if (pct.poseeColorfondo)
{
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color." +
pct.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";
}
if (pct.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
pct.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +
" }\n" +
" };\n";
}

if (pct.lb_poseeEstilo || pct.lb_poseeOtraFamiliaTexto || pct.lb_otrotamanioTexto)

116
{
contenidoArchivo = contenidoArchivo +
" try\n" +
" {\n" +
" Font f = " + pct._Nombrecontrol + ".getFont();\n";

if (pct.lb_poseeOtraFamiliaTexto)
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily =
FontFamily.forName(\"" + pct._NombreFamiliaTexto + "\");\n";
}
else
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily = " +
pct._Nombrecontrol + ".getFont().getFontFamily();\n";
}
String textoPlano = (pct.lb_poseeEstilo == true) ? pct._NombreEstiloTexto.ToString() :
"PLAIN";
string tamanio = (pct.lb_otrotamanioTexto == true) ? pct._TamanioTexto.ToString() :
"10";
contenidoArchivo = contenidoArchivo + " Font myFont =
fontFamily.getFont(" + pct._Nombrecontrol + ".getFont().getLeading(), " + pct._Nombrecontrol +
".getFont().getHeight()).derive(Font." + textoPlano + ", " + tamanio + ", Ui.UNITS_pt);\n";
contenidoArchivo = contenidoArchivo + " " + pct._Nombrecontrol +
".setFont(myFont);\n";
contenidoArchivo = contenidoArchivo + " }\n" +
" catch(Exception ex)\n" +
" {\n" +
" }\n";
}

contenidoArchivo = contenidoArchivo + " manejador1.add(" + pct._Nombrecontrol +


"," + (pct._posX * 2).ToString() + "," + (pct._posY * 2).ToString() + ");\n";
}
#endregion
#region "generacion de campo check box"
if (obj._TipoControl == "CHECKBOX")
{
PanelCheckBox pe = (PanelCheckBox)arreglo[i];
if (!pe.poseeColorfondo && !pe.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.CheckboxField " + pe._Nombrecontrol + "= new
net.rim.device.api.ui.component.CheckboxField(\"" + pe._Texto.Replace(Encoding.ASCII.GetString(new
byte[] { (byte)13 }), "").Replace(Encoding.ASCII.GetString(new byte[] { (byte)10 }), "") + "\",false);\n";

}
else
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.CheckboxField " + pe._Nombrecontrol + " = new
net.rim.device.api.ui.component.CheckboxField(\"" + pe._Texto.Replace(Encoding.ASCII.GetString(new
byte[] { (byte)13 }), "").Replace(Encoding.ASCII.GetString(new byte[] { (byte)10 }), "") + "\",false){\n" +
" public void paint(Graphics g){\n";
if (pe.poseeColorfondo)
{

117
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color." +
pe.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";
}
if (pe.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
pe.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +
" }\n" +
" };\n";
}

if (pe.lb_poseeEstilo || pe.lb_poseeOtraFamiliaTexto || pe.lb_otrotamanioTexto)


{
contenidoArchivo = contenidoArchivo +
" try\n" +
" {\n" +
" Font f = " + pe._Nombrecontrol + ".getFont();\n";

if (pe.lb_poseeOtraFamiliaTexto)
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily =
FontFamily.forName(\"" + pe._NombreFamiliaTexto + "\");\n";
}
else
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily = " +
pe._Nombrecontrol + ".getFont().getFontFamily();\n";
}
String textoPlano = (pe.lb_poseeEstilo == true) ? pe._NombreEstiloTexto.ToString() :
"PLAIN";
string tamanio = (pe.lb_otrotamanioTexto == true) ? pe._TamanioTexto.ToString() :
"10";
contenidoArchivo = contenidoArchivo + " Font myFont =
fontFamily.getFont(" + pe._Nombrecontrol + ".getFont().getLeading(), " + pe._Nombrecontrol +
".getFont().getHeight()).derive(Font." + textoPlano + ", " + tamanio + ", Ui.UNITS_pt);\n";
contenidoArchivo = contenidoArchivo + " " + pe._Nombrecontrol +
".setFont(myFont);\n";
contenidoArchivo = contenidoArchivo + " }\n" +
" catch(Exception ex)\n" +
" {\n" +
" }\n";
}

contenidoArchivo = contenidoArchivo +
" net.rim.device.api.ui.container.GridFieldManager miGrid_" + pe._Nombrecontrol
+ " = new net.rim.device.api.ui.container.GridFieldManager(1,1,0);\n" +
" miGrid_" + pe._Nombrecontrol + ".add(" + pe._Nombrecontrol + ");\n" +
" manejador1.add(miGrid_" + pe._Nombrecontrol + "," + (pe._posX * 2).ToString()
+ "," + (pe._posY * 2).ToString() + ");\n";
//" this.add(" + pe._Nombrecontrol + ");\n";
}
#endregion
#region "generacion de campo Combo Box"

118
if (obj._TipoControl == "COMBOBOX")
{
PanelComboBox pct = (PanelComboBox)arreglo[i];
contenidoArchivo = contenidoArchivo + " String[] varArray_" + pct._Nombrecontrol
+ " = {";
Array arregloTmp = pct.Contenido;
for (int j = 0; j < pct.Contenido.Length; j++)
{
contenidoArchivo = contenidoArchivo + "\"" + pct.Contenido.GetValue(j).ToString() +
"\",";
}
contenidoArchivo = contenidoArchivo.Substring(0, contenidoArchivo.Length - 1) +
"};\n";
if (!pct.poseeColorfondo && !pct.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.ObjectChoiceField " + pct._Nombrecontrol + "= new
net.rim.device.api.ui.component.ObjectChoiceField(\"\",varArray_" + pct._Nombrecontrol + ",0);\n";
}
else
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.ObjectChoiceField " + pct._Nombrecontrol + " = new
net.rim.device.api.ui.component.ObjectChoiceField(\"\",varArray_" + pct._Nombrecontrol + ",0){\n" +
" public void paint(Graphics g){\n";
if (pct.poseeColorfondo)
{
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color." +
pct.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";
}
if (pct.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
pct.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +
" }\n" +
" };\n";
}

if (pct.lb_poseeEstilo || pct.lb_poseeOtraFamiliaTexto || pct.lb_otrotamanioTexto)


{
contenidoArchivo = contenidoArchivo +
" try\n" +
" {\n" +
" Font f = " + pct._Nombrecontrol + ".getFont();\n";

if (pct.lb_poseeOtraFamiliaTexto)
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily =
FontFamily.forName(\"" + pct._NombreFamiliaTexto + "\");\n";
}
else
{

119
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily = " +
pct._Nombrecontrol + ".getFont().getFontFamily();\n";
}
String textoPlano = (pct.lb_poseeEstilo == true) ? pct._NombreEstiloTexto.ToString() :
"PLAIN";
string tamanio = (pct.lb_otrotamanioTexto == true) ? pct._TamanioTexto.ToString() :
"10";
contenidoArchivo = contenidoArchivo + " Font myFont =
fontFamily.getFont(" + pct._Nombrecontrol + ".getFont().getLeading(), " + pct._Nombrecontrol +
".getFont().getHeight()).derive(Font." + textoPlano + ", " + tamanio + ", Ui.UNITS_pt);\n";
contenidoArchivo = contenidoArchivo + " " + pct._Nombrecontrol +
".setFont(myFont);\n";
contenidoArchivo = contenidoArchivo + " }\n" +
" catch(Exception ex)\n" +
" {\n" +
" }\n";
}

contenidoArchivo = contenidoArchivo +
" net.rim.device.api.ui.container.GridFieldManager miGrid_" + pct._Nombrecontrol
+ " = new net.rim.device.api.ui.container.GridFieldManager(1,1,0);\n" +
" miGrid_" + pct._Nombrecontrol + ".add(" + pct._Nombrecontrol + ");\n" +
" manejador1.add(miGrid_" + pct._Nombrecontrol + "," + (pct._posX *
2).ToString() + "," + (pct._posY * 2).ToString() + ");\n";
}
#endregion
#region "generacion de campos Combo Box Numerico"
if (obj._TipoControl == "COMBOBOXNUMERICO")
{
PanelComboBoxNumerico pct = (PanelComboBoxNumerico)arreglo[i];
if (!pct.poseeColorfondo && !pct.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.NumericChoiceField " + pct._Nombrecontrol + "= new
net.rim.device.api.ui.component.NumericChoiceField(\"\"," + pct.indiceInicio + "," + pct.indiceFinal + "," +
pct.incremento + "," + pct.comienzo + ");\n";
}
else
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.NumericChoiceField " + pct._Nombrecontrol + " = new
net.rim.device.api.ui.component.NumericChoiceField(\"\"," + pct.indiceInicio + "," + pct.indiceFinal + "," +
pct.incremento + "," + pct.comienzo + "){\n" +
" public void paint(Graphics g){\n";
if (pct.poseeColorfondo)
{
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color." +
pct.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";
}
if (pct.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
pct.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +

120
" }\n" +
" };\n";
}

if (pct.lb_poseeEstilo || pct.lb_poseeOtraFamiliaTexto || pct.lb_otrotamanioTexto)


{
contenidoArchivo = contenidoArchivo +
" try\n" +
" {\n" +
" Font f = " + pct._Nombrecontrol + ".getFont();\n";

if (pct.lb_poseeOtraFamiliaTexto)
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily =
FontFamily.forName(\"" + pct._NombreFamiliaTexto + "\");\n";
}
else
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily = " +
pct._Nombrecontrol + ".getFont().getFontFamily();\n";
}
String textoPlano = (pct.lb_poseeEstilo == true) ? pct._NombreEstiloTexto.ToString() :
"PLAIN";
string tamanio = (pct.lb_otrotamanioTexto == true) ? pct._TamanioTexto.ToString() :
"10";
contenidoArchivo = contenidoArchivo + " Font myFont =
fontFamily.getFont(" + pct._Nombrecontrol + ".getFont().getLeading(), " + pct._Nombrecontrol +
".getFont().getHeight()).derive(Font." + textoPlano + ", " + tamanio + ", Ui.UNITS_pt);\n";
contenidoArchivo = contenidoArchivo + " " + pct._Nombrecontrol +
".setFont(myFont);\n";
contenidoArchivo = contenidoArchivo + " }\n" +
" catch(Exception ex)\n" +
" {\n" +
" }\n";
}

contenidoArchivo = contenidoArchivo +
" net.rim.device.api.ui.container.GridFieldManager miGrid_" + pct._Nombrecontrol
+ " = new net.rim.device.api.ui.container.GridFieldManager(1,1,0);\n" +
" miGrid_" + pct._Nombrecontrol + ".add(" + pct._Nombrecontrol + ");\n" +
" manejador1.add(miGrid_" + pct._Nombrecontrol + "," + (pct._posX *
2).ToString() + "," + (pct._posY * 2).ToString() + ");\n";
}
#endregion
#region "generacion de campos fechas"
if (obj._TipoControl == "CAMPOFECHA")
{
PanelCampoFecha pcf = (PanelCampoFecha)arreglo[i];
if (!pcf.poseeColorfondo && !pcf.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.DateField " + pcf._Nombrecontrol + "= new
net.rim.device.api.ui.component.DateField(\"\",System.currentTimeMillis(),net.rim.device.api.ui.component
.DateField.DATE_TIME);\n";
}
else
{

121
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.DateField " + pcf._Nombrecontrol + " = new
net.rim.device.api.ui.component.DateField(\"\",System.currentTimeMillis(),net.rim.device.api.ui.component
.DateField.DATE_TIME){\n" +
" public void paint(Graphics g){\n";
if (pcf.poseeColorfondo)
{
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color." +
pcf.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";
}
if (pcf.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
pcf.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +
" }\n" +
" };\n";
}

if (pcf.lb_poseeEstilo || pcf.lb_poseeOtraFamiliaTexto || pcf.lb_otrotamanioTexto)


{
contenidoArchivo = contenidoArchivo +
" try\n" +
" {\n" +
" Font f = " + pcf._Nombrecontrol + ".getFont();\n";

if (pcf.lb_poseeOtraFamiliaTexto)
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily =
FontFamily.forName(\"" + pcf._NombreFamiliaTexto + "\");\n";
}
else
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily = " +
pcf._Nombrecontrol + ".getFont().getFontFamily();\n";
}
String textoPlano = (pcf.lb_poseeEstilo == true) ? pcf._NombreEstiloTexto.ToString() :
"PLAIN";
string tamanio = (pcf.lb_otrotamanioTexto == true) ? pcf._TamanioTexto.ToString() :
"10";
contenidoArchivo = contenidoArchivo + " Font myFont =
fontFamily.getFont(" + pcf._Nombrecontrol + ".getFont().getLeading(), " + pcf._Nombrecontrol +
".getFont().getHeight()).derive(Font." + textoPlano + ", " + tamanio + ", Ui.UNITS_pt);\n";
contenidoArchivo = contenidoArchivo + " " + pcf._Nombrecontrol +
".setFont(myFont);\n";
contenidoArchivo = contenidoArchivo + " }\n" +
" catch(Exception ex)\n" +
" {\n" +
" }\n";
}

contenidoArchivo = contenidoArchivo +
" net.rim.device.api.ui.container.GridFieldManager miGrid_" +
pcf._Nombrecontrol + " = new net.rim.device.api.ui.container.GridFieldManager(1,1,0);\n" +

122
" miGrid_" + pcf._Nombrecontrol + ".add(" + pcf._Nombrecontrol + ");\n" +
" manejador1.add(miGrid_" + pcf._Nombrecontrol + "," + (pcf._posX *
2).ToString() + "," + (pcf._posY * 2).ToString() + ");\n";
}
#endregion
#region "generacion de campo opcion"
if (obj._TipoControl == "OPCION")
{
PanelCampoOpcion pe = (PanelCampoOpcion)arreglo[i];
int indicePerdido = nombreGrupos.IndexOf('|');
if (indicePerdido < 0)
{
nombreGrupos = nombreGrupos + pe.GrupoOpcion + "|";
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.RadioButtonGroup " + pe.GrupoOpcion + " = new
net.rim.device.api.ui.component.RadioButtonGroup();\n";
if (!pe.poseeColorfondo && !pe.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.RadioButtonField " + pe._Nombrecontrol + "= new
net.rim.device.api.ui.component.RadioButtonField(\"" + pe._Texto.Replace(Encoding.ASCII.GetString(new
byte[] { (byte)13 }), "").Replace(Encoding.ASCII.GetString(new byte[] { (byte)10 }), "") + "\"," +
pe.GrupoOpcion + ",false);\n";
}
else
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.RadioButtonField " + pe._Nombrecontrol + " = new
net.rim.device.api.ui.component.RadioButtonField(\"" + pe._Texto.Replace(Encoding.ASCII.GetString(new
byte[] { (byte)13 }), "").Replace(Encoding.ASCII.GetString(new byte[] { (byte)10 }), "") + "\"," +
pe.GrupoOpcion + ",false){\n" +
" public void paint(Graphics g){\n";
if (pe.poseeColorfondo)
{
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color."
+ pe.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";
}
if (pe.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
pe.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +
" }\n" +
" };\n";
}
}
else
{

if (!pe.poseeColorfondo && !pe.poseeColorTextop)


{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.RadioButtonField " + pe._Nombrecontrol + "= new
net.rim.device.api.ui.component.RadioButtonField(\"" + pe._Texto.Replace(Encoding.ASCII.GetString(new

123
byte[] { (byte)13 }), "").Replace(Encoding.ASCII.GetString(new byte[] { (byte)10 }), "") + "\"," +
pe.GrupoOpcion + ",false);\n";

}
else
{
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.RadioButtonField " + pe._Nombrecontrol + " = new
net.rim.device.api.ui.component.RadioButtonField(\"" + pe._Texto.Replace(Encoding.ASCII.GetString(new
byte[] { (byte)13 }), "").Replace(Encoding.ASCII.GetString(new byte[] { (byte)10 }), "") + "\"," +
pe.GrupoOpcion + ",false){\n" +
" public void paint(Graphics g){\n";
if (pe.poseeColorfondo)
{
contenidoArchivo = contenidoArchivo + " g.setBackgroundColor(Color."
+ pe.ColorFondo.Name.ToUpper() + ");\n" +
" g.fillRect(0,0,getWidth(),getHeight());\n";
}
if (pe.poseeColorTextop)
{
contenidoArchivo = contenidoArchivo + " g.setColor(Color." +
pe.ColorEtiqueta.Name.ToUpper() + ");\n";
}
contenidoArchivo = contenidoArchivo + " g.clear();\n" +
" super.paint(g);\n" +
" }\n" +
" };\n";
}
}

if (pe.lb_poseeEstilo || pe.lb_poseeOtraFamiliaTexto || pe.lb_otrotamanioTexto)


{
contenidoArchivo = contenidoArchivo +
" try\n" +
" {\n" +
" Font f = " + pe._Nombrecontrol + ".getFont();\n";

if (pe.lb_poseeOtraFamiliaTexto)
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily =
FontFamily.forName(\"" + pe._NombreFamiliaTexto + "\");\n";
}
else
{
contenidoArchivo = contenidoArchivo + " FontFamily fontFamily = " +
pe._Nombrecontrol + ".getFont().getFontFamily();\n";
}
String textoPlano = (pe.lb_poseeEstilo == true) ? pe._NombreEstiloTexto.ToString() :
"PLAIN";
string tamanio = (pe.lb_otrotamanioTexto == true) ? pe._TamanioTexto.ToString() :
"10";
contenidoArchivo = contenidoArchivo + " Font myFont =
fontFamily.getFont(" + pe._Nombrecontrol + ".getFont().getLeading(), " + pe._Nombrecontrol +
".getFont().getHeight()).derive(Font." + textoPlano + ", " + tamanio + ", Ui.UNITS_pt);\n";
contenidoArchivo = contenidoArchivo + " " + pe._Nombrecontrol +
".setFont(myFont);\n";
contenidoArchivo = contenidoArchivo + " }\n" +

124
" catch(Exception ex)\n" +
" {\n" +
" }\n";
}

contenidoArchivo = contenidoArchivo +
" net.rim.device.api.ui.container.GridFieldManager miGrid_" + pe._Nombrecontrol
+ " = new net.rim.device.api.ui.container.GridFieldManager(1,1,0);\n" +
" miGrid_" + pe._Nombrecontrol + ".add(" + pe._Nombrecontrol + ");\n" +
" manejador1.add(miGrid_" + pe._Nombrecontrol + "," + (pe._posX * 2).ToString()
+ "," + (pe._posY * 2).ToString() + ");\n";
//" this.add(" + pe._Nombrecontrol + ");\n";
}
#endregion
#region "Generacion de campo boton"
if (obj._TipoControl == "BOTON")
{
PanelBoton pbtn = (PanelBoton)arreglo[i];
contenidoArchivo = contenidoArchivo + "
net.rim.device.api.ui.component.ButtonField " + pbtn._Nombrecontrol + "= new
net.rim.device.api.ui.component.ButtonField(\"" + pbtn.TextoEtiqueta + "\");\n";
if (pbtn._AccionClick)
{
contenidoArchivo = contenidoArchivo + pbtn._FuncionClick;
}
contenidoArchivo = contenidoArchivo + " manejador1.add(" + pbtn._Nombrecontrol
+ "," + (pbtn._posX * 2).ToString() + "," + (pbtn._posY * 2).ToString() + ");\n";
}
#endregion
#region "Generacion de campo imagen"
if (obj._TipoControl == "IMAGEN")
{
PanelCampoImagen pci = (PanelCampoImagen)arreglo[i];
contenidoArchivo = contenidoArchivo +
" net.rim.device.api.system.Bitmap bitmap_" + pci._Nombrecontrol + " =
Bitmap.getBitmapResource(\"" + pci.NombreImagenVer + "\");\n" +
" int scaledX_" + pci._Nombrecontrol + " = " + (pci._ancho*2).ToString() + ";\n" +
" int scaledY_" + pci._Nombrecontrol + " = " + (pci._alto*2).ToString() + ";\n" +
" Bitmap bitmapScaled_" + pci._Nombrecontrol + " = new
Bitmap(Bitmap.ROWWISE_32BIT_ARGB8888, scaledX_" + pci._Nombrecontrol + ", scaledY_" +
pci._Nombrecontrol + ");\n" +
" bitmap_" + pci._Nombrecontrol + ".scaleInto(bitmapScaled_" +
pci._Nombrecontrol + ", Bitmap.FILTER_BILINEAR, Bitmap.SCALE_TO_FIT);\n" +
" net.rim.device.api.ui.component.BitmapField " + pci._Nombrecontrol + "= new
net.rim.device.api.ui.component.BitmapField(bitmapScaled_" + pci._Nombrecontrol +
",Field.FOCUSABLE);\n" +
//contenidoArchivo = contenidoArchivo +
" net.rim.device.api.ui.container.GridFieldManager miGrid_" + pci._Nombrecontrol
+ " = new net.rim.device.api.ui.container.GridFieldManager(1,1,0);\n" +
" miGrid_" + pci._Nombrecontrol + ".add(" + pci._Nombrecontrol + ");\n" +
" manejador1.add(miGrid_" + pci._Nombrecontrol + "," + (pci._posX *
2).ToString() + "," + (pci._posY * 2).ToString() + ");\n";
}
#endregion
#region "Generacion de campo Browser"
if (obj._TipoControl == "BROWSER")
{

125
PanelBrowserField pci = (PanelBrowserField)arreglo[i];
contenidoArchivo = contenidoArchivo +
" net.rim.device.api.browser.field2.BrowserFieldConfig myBrowserFieldConfig_" +
pci._Nombrecontrol + " = new net.rim.device.api.browser.field2.BrowserFieldConfig();\n" +
" myBrowserFieldConfig_" + pci._Nombrecontrol +
".setProperty(net.rim.device.api.browser.field2.BrowserFieldConfig.NAVIGATION_MODE,net.rim.device.
api.browser.field2.BrowserFieldConfig.NAVIGATION_MODE_POINTER);\n" +
" net.rim.device.api.browser.field2.BrowserField browserField_" +
pci._Nombrecontrol + " = new net.rim.device.api.browser.field2.BrowserField(myBrowserFieldConfig_" +
pci._Nombrecontrol + ");\n" +
" add(browserField_" + pci._Nombrecontrol + ");\n" +
" browserField_" + pci._Nombrecontrol + ".requestContent(\"" + pci.UrlVisitaInicial
+ "\");\n";
}
#endregion
#region "Generacion de campos mapas "
if (obj._TipoControl == "MAPA")
{
PanelCamposMapa kl = (PanelCamposMapa)arreglo[i];
contenidoArchivo = contenidoArchivo +
" net.rim.device.api.lbs.maps.ui.MapField map_" + kl._Nombrecontrol + " = new
net.rim.device.api.lbs.maps.ui.MapField();\n" +
" net.rim.device.api.lbs.maps.ui.MapAction action_" + kl._Nombrecontrol + " =
map_" + kl._Nombrecontrol + ".getAction();\n" +
" action_" + kl._Nombrecontrol + ".setCentreAndZoom(new
net.rim.device.api.lbs.maps.model.MapPoint(43.46518, -80.52237), 3);\n" +
" add(map_" + kl._Nombrecontrol + ");\n";
}
#endregion
}
contenidoArchivo = contenidoArchivo + " this.add(manejador1);\n" +
" }\n" +
" protected boolean onSavePrompt()\n" +
" {\n" +
" return true;\n" +
" }\n";
if(this.cmbTipoFondo.Items[this.cmbTipoFondo.SelectedIndex].ToString()=="COLOR")
{
contenidoArchivo = contenidoArchivo +
" protected void paint( Graphics graphics )\n" +
" {\n" +
" graphics.setBackgroundColor( net.rim.device.api.ui.Color." +
this.txtColorSeleccionado.Text + " );\n" +
" graphics.clear();\n" +
" subpaint( graphics );\n" +
" }\n" ;
}
contenidoArchivo = contenidoArchivo +"}\n\n" + this.txtClaseManager.Text;
this.txtResultadoMovimiento.Text = contenidoArchivo;
}
else
{
MessageBox.Show("No se a diseñado ningun Objeto para la pantalla", "Sin Objetos",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}

126
catch (Exception ex) {
MessageBox.Show("Ocurrio un error " + ex.Message, "Error ", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
#endregion

public void crearDirectorios()


{
try
{
int indiceProyecto = 1;
bool continua = true;
if (!Directory.Exists("C:\\FuentesDesarrolladosTHWPR"))
{
Directory.CreateDirectory("C:\\FuentesDesarrolladosTHWPR");
}
do
{
if (!Directory.Exists("C:\\FuentesDesarrolladosTHWPR\\Proyecto" +
indiceProyecto.ToString()))
{
Directory.CreateDirectory("C:\\FuentesDesarrolladosTHWPR\\Proyecto" +
indiceProyecto.ToString());
continua = false;
}
else
{
indiceProyecto++;
continua = true;
}
} while (continua);
if (!Directory.Exists("C:\\FuentesDesarrolladosTHWPR\\Proyecto" + indiceProyecto + "\\src"))
{
Directory.CreateDirectory("C:\\FuentesDesarrolladosTHWPR\\Proyecto" + indiceProyecto
+"\\src");
}
if (!Directory.Exists("C:\\FuentesDesarrolladosTHWPR\\Proyecto" + indiceProyecto +
"\\res\\img"))
{
Directory.CreateDirectory("C:\\FuentesDesarrolladosTHWPR\\Proyecto" + indiceProyecto +
"\\res\\img");
}
_DirectorioJava = "C:\\FuentesDesarrolladosTHWPR\\Proyecto" + indiceProyecto + "\\src";
#region Creacion de Plantillas
if (!System.IO.Directory.Exists("C:\\FuentesDesarrolladosTHWPR\\Plantillas"))
{

System.IO.Directory.CreateDirectory("C:\\FuentesDesarrolladosTHWPR\\Plantillas\\.preprossed");

System.IO.Directory.CreateDirectory("C:\\FuentesDesarrolladosTHWPR\\Plantillas\\.settings");

}
System.IO.File.Copy(Application.StartupPath.ToString() + "\\Plantillas\\.classpath",
"C:\\FuentesDesarrolladosTHWPR\\Plantillas\\.classpath", true);

127
System.IO.File.Copy(Application.StartupPath.ToString() +
"\\Plantillas\\BlackBerry_App_Descriptor.xml",
"C:\\FuentesDesarrolladosTHWPR\\Plantillas\\BlackBerry_App_Descriptor.xml", true);
System.IO.File.Copy(Application.StartupPath.ToString() + "\\Plantillas\\.project",
"C:\\FuentesDesarrolladosTHWPR\\Plantillas\\.project", true);

System.IO.File.Copy(Application.StartupPath.ToString() +
"\\Plantillas\\.settings\\org.eclipse.jdt.core.prefs",
"C:\\FuentesDesarrolladosTHWPR\\Plantillas\\.settings\\org.eclipse.jdt.core.prefs", true);
System.IO.File.Copy(Application.StartupPath.ToString() + "\\Plantillas\\IconApp.png",
"C:\\FuentesDesarrolladosTHWPR\\Plantillas\\IconApp.png", true);
#endregion
System.IO.File.Copy("C:\\FuentesDesarrolladosTHWPR\\Plantillas\\IconApp.png",
"C:\\FuentesDesarrolladosTHWPR\\Proyecto" + indiceProyecto + "\\res\\img\\IconApp.png", true);
this.txtNombreSolucion.Text = this.txtNombreSolucion.Text + indiceProyecto;
}
catch (Exception ex) {
MessageBox.Show("Se genero un Error al Crear Directorios " + ex.Message, "Error Creacion",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

public void creaArchivoJava()


{
try
{
//crearDirectorios();

_NombreJava = "Clase1" + ".java";


if(System.IO.File.Exists(_DirectorioJava + "\\" + _NombreJava)){
System.IO.File.Delete(_DirectorioJava + "\\" + _NombreJava);
}
System.IO.StreamWriter la_archivoSalida = new System.IO.StreamWriter(_DirectorioJava + "\\"
+ _NombreJava, true);
la_archivoSalida.WriteLine(this.txtResultadoMovimiento.Text);
la_archivoSalida.Close();
}
catch (Exception ex) {
MessageBox.Show("Se genero un Error al crear el archivo java " + ex.Message, "Error Creacion",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

private void cmbTipoFondo_SelectedIndexChanged(object sender, EventArgs e)


{
if (this.cmbTipoFondo.SelectedIndex > -1)
{
if (this.cmbTipoFondo.Items[this.cmbTipoFondo.SelectedIndex].ToString() == "COLOR")
{
this.pnlSeleccionarColor.Visible = true;
this.pnlBuscarImgFondo.Visible = false;
}
if (this.cmbTipoFondo.Items[this.cmbTipoFondo.SelectedIndex].ToString() == "IMAGEN")
{
this.pnlSeleccionarColor.Visible = false;
this.pnlBuscarImgFondo.Visible = true;
}

128
if (this.cmbTipoFondo.Items[this.cmbTipoFondo.SelectedIndex].ToString() == "NINGUNO")
{
this.pnlSeleccionarColor.Visible = false;
this.pnlBuscarImgFondo.Visible = false;
this.panel1.BackgroundImage = null;
this.panel1.BackColor = Color.White;
}
}
}

private void button9_Click(object sender, EventArgs e)


{
VentanaColores clrs = new VentanaColores();
clrs.ShowDialog();
this.txtColorSeleccionado.Text = clrs.ColorSeleccionado;
this.panel1.BackColor = clrs.colorClick;
}

public void extraerFicherBinJava(ref string carpeta,ref string dirArchivoJar)


{
try
{
string[] directorios = Directory.GetDirectories("C:\\Program Files\\Java");
for (int i = 0; i < directorios.Length; i++)
{
if (directorios[i].Replace("C:\\Program Files\\Java\\", "").Substring(0, 3).ToLower() == "jdk")
{
if (directorios[i].Replace("C:\\Program Files\\Java\\", "").Substring(0, 6).ToLower() ==
"jdk1.7")
{
carpeta = directorios[i];
}
}
}
dirArchivoJar = Application.StartupPath.ToString() + "\\LibreriasRIM\\";
}
catch (Exception ex) {
MessageBox.Show("Se genero un error de consulta de bin de java " + ex.Message, "Error
Creacion", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

private void button1_Click_3(object sender, EventArgs e)


{
creaArchivoJava();
string res = "Archivo compilado exitosamente";
string dirJava = "",dirJarRIM="";
extraerFicherBinJava(ref dirJava, ref dirJarRIM);
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = "\"" + dirJava + "\\bin\\javac\"";
proc.StartInfo.Arguments = " -Xlint:unchecked -classpath \".\\;" + dirJarRIM + "net_rim_api.jar\" \""
+ _DirectorioJava + "\\" + _NombreJava + "\"";
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.CreateNoWindow = true;

129
proc.StartInfo.UseShellExecute = false;
proc.Start();
//System.IO.StreamReader myOutput = proc.StandardOutput;
proc.BeginOutputReadLine();
res = proc.StandardError.ReadToEnd();
proc.WaitForExit();
if(res.Length <= 0){
this.txtResultadoMovimiento.Text = "Archivo compilado exitosamente";
}
else{
int posError = -1;
posError = res.ToUpper().IndexOf("ERROR");
if (posError > -1)
{
this.txtResultadoMovimiento.Text = "Archivo compilado con Errores \n" + res;
}
else
{
this.txtResultadoMovimiento.Text = "Archivo compilado con Advertencias \n" + res;
}
}
}

private void button3_Click_2(object sender, EventArgs e)


{
if (indiceSeleccionado > -1)
{
arreglo.RemoveAt(indiceSeleccionado);
pnlSeleccionado.Visible = false;
indiceSeleccionado = -1;
}
}

private void button4_Click_1(object sender, EventArgs e)


{

private void button2_Click_2(object sender, EventArgs e)


{
PanelEtiqueta pnl = new PanelEtiqueta("Texto etiqueta");
aumentaPanel(pnl,pnl._ancho,pnl._alto);
AsignaNombre();
}

private void button6_Click_1(object sender, EventArgs e)


{

private void button7_Click_1(object sender, EventArgs e)


{
try
{
if (arreglo.Count <= 0)
{

130
}
else
{
ObjetoBase objb = (ObjetoBase)arreglo[indiceSeleccionado];
if (objb._TipoControl == "BOTON")
{
string textoAccion = "";
PanelBoton pbtn = (PanelBoton)arreglo[indiceSeleccionado];
if (pbtn._FuncionClick.Length > 0)
{
textoAccion = pbtn._FuncionClick;
}
else
{
textoAccion =
" " + pbtn._Nombrecontrol + ".setChangeListener(new
net.rim.device.api.ui.FieldChangeListener() {\n" +
" public void fieldChanged( net.rim.device.api.ui.Field field, int
context) {\n" +
" net.rim.device.api.ui.component.Dialog.alert(\"Accion en " +
pbtn._Nombrecontrol + "\");\n" +
" }\n" +
" });\n";
}
DialogoAccionBoton dlg = new DialogoAccionBoton();
dlg.contenidoT = textoAccion;
DialogResult dr = dlg.ShowDialog();
pbtn._AccionClick = true;
pbtn._FuncionClick = dlg.contenidoT;
}
}
}
catch (Exception ex)
{
MessageBox.Show("No se a seleccionado ningun boton para la accion", "Sin Objetos",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

private void button8_Click(object sender, EventArgs e)


{
try
{
opfdImagen.Filter = "Imagenes Ligeras (*.jpg)|*.jpg|Mapas de Bits(*.bmp)|*.bmp|Imagenes
Web(*.gif)|*.gif";
opfdImagen.ShowDialog();
string pathImagen = opfdImagen.FileName;
string nombreArchivo = "";
string nombreDirectorio = "";
separaDirArchivo(pathImagen, ref nombreDirectorio, ref nombreArchivo);
nombreImagenFondo = nombreArchivo;
this.txtImagenSeleccionada.Text = nombreImagenFondo;
/*if(File.Exists("C:\\FuentesDesarrolladosTHWPR\\Proyecto\\res\\" + nombreArchivo)){
File.Delete("C:\\FuentesDesarrolladosTHWPR\\Proyecto\\res\\" + nombreArchivo);
}
File.Copy(pathImagen, "C:\\FuentesDesarrolladosTHWPR\\Proyecto\\res\\" + nombreArchivo);

131
Image img1 = Image.FromFile("C:\\FuentesDesarrolladosTHWPR\\Proyecto\\res\\" +
nombreArchivo);*/
if (File.Exists(_DirectorioJava.Replace("\\src","\\res\\") + nombreArchivo))
{
File.Delete(_DirectorioJava.Replace("\\src", "\\res\\") + nombreArchivo);
}
File.Copy(pathImagen, _DirectorioJava.Replace("\\src", "\\res\\") + nombreArchivo);
Image img1 = Image.FromFile(_DirectorioJava.Replace("\\src", "\\res\\") + nombreArchivo);

this.panel1.BackgroundImage =
CambiarTamanoImagen(img1,this.panel1.Width,this.panel1.Height);
}
catch (Exception ex) {
MessageBox.Show("no se pudo copiar la imagen seleccionada " + ex.Message, "Sin Objetos",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}

public Image CambiarTamanoImagen(Image pImagen, int pAncho, int pAlto)


{
//creamos un bitmap con el nuevo tamaño
Bitmap vBitmap = new Bitmap(pAncho, pAlto);
//creamos un graphics tomando como base el nuevo Bitmap
using (Graphics vGraphics = Graphics.FromImage((Image)vBitmap))
{
//especificamos el tipo de transformación, se escoge esta para no perder calidad.
vGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
//Se dibuja la nueva imagen
vGraphics.DrawImage(pImagen, 0, 0, pAncho, pAlto);
}
//retornamos la nueva imagen
return (Image)vBitmap;
}

public void separaDirArchivo(string pathBase, ref string directorio, ref string archivo)
{
char[] arregloPath = pathBase.ToCharArray();

int posFinalBackSlash = 0;
for (int i = 0; i < arregloPath.Length; i++)
{
if(arregloPath[i] == '\\'){
posFinalBackSlash = i;
}
}
directorio = pathBase.Substring(0, posFinalBackSlash + 1);
archivo = pathBase.Substring(posFinalBackSlash + 1, (pathBase.Length - directorio.Length) );
}

private void txtTituloPantalla_TextChanged(object sender, EventArgs e)


{
this.lblTituloPantalla.Text = this.txtTituloPantalla.Text;
}

#region asigna propiedades visibles


public void llenaPropiedades(object objetoPropiedades)
{

132
try
{
ObjetoBase obj1 = (ObjetoBase)objetoPropiedades;
cambiaTexto = false;
this.txtTextoEtiquetaBB.Text = "";
this.comboBox1.Text = ""; ;
this.comboBox2.Text="";
this.cmbTamanioFuenteBB.Text="";
this.comboBox1.SelectedText = "";
this.comboBox2.SelectedText = "";
cambiaTexto = true;
this.cmbTamanioFuenteBB.SelectedText = "";
this.pnlImagenControl.Top = 123;
this.pnlImagenControl.Left = 5;
this.pnlImagenControl.Visible = false;
this.pnlItemsComboBox.Top = 239;
this.pnlItemsComboBox.Left = 5;
this.pnlItemsComboBox.Visible = false;
this.pnlValoresComboNum.Top = 239;
this.pnlValoresComboNum.Left = 5;
this.pnlValoresComboNum.Visible = false;
this.pnlDimensiones.Top= 73;
this.pnlDimensiones.Left= 6;
this.pnlDimensiones.Visible=false;
this.pnlFuentes.Visible = false;
this.pnlColorControles.Visible = true;
this.btnAccionBotonVarios.Visible = false;
switch (obj1._TipoControl)
{
#region propiedades Etiqueta
case "ETIQUETA":
PanelEtiqueta pe = (PanelEtiqueta)obj1;
this.txtNombreEtiquetaBB.Text = pe._Nombrecontrol;
this.txtTextoEtiquetaBB.Text = pe._Texto;
this.pnlFuentes.Visible = true;
if (pe.lb_poseeEstilo)
{
for (int i = 0; i < this.comboBox2.Items.Count; i++)
{
if (this.comboBox2.Items[i].ToString() == pe._NombreEstiloTexto)
{
this.comboBox2.SelectedIndex = i;
}
}
}
if(pe.lb_poseeOtraFamiliaTexto)
{
for (int i = 0; i < this.comboBox1.Items.Count; i++)
{
if (this.comboBox1.Items[i].ToString() == pe._NombreFamiliaTexto)
{
this.comboBox1.SelectedIndex = i;
}
}
}
if (pe.lb_otrotamanioTexto)
{

133
for (int i = 0; i < this.cmbTamanioFuenteBB.Items.Count; i++)
{
if (this.cmbTamanioFuenteBB.Items[i].ToString() == pe._TamanioTexto)
{
this.cmbTamanioFuenteBB.SelectedIndex = i;
}
}
}
if (pe.poseeColorTextop)
{
this.txtColorFuenteEtiquetaBB.Text = "";
this.txtColorFuenteEtiquetaBB.Text = pe.ColorEtiqueta.Name;
}
if (pe.poseeColorfondo)
{
this.txtColorFodoEtiquetaBB.Text = "";
this.txtColorFodoEtiquetaBB.Text = pe.ColorFondo.Name;
}
break;
#endregion
#region propiedades caja de texto
case "CAJATEXTO":
PanelCajatexto pct = (PanelCajatexto)obj1;
this.txtNombreEtiquetaBB.Text = pct._Nombrecontrol;
this.pnlFuentes.Visible = true;
//this.txtTextoEtiquetaBB.Text = "";

//this.comboBox1.SelectedText = "";
//this.comboBox2.SelectedText = "";
//this.cmbTamanioFuenteBB.SelectedText = "";
if (pct.lb_poseeEstilo)
{
for (int i = 0; i < this.comboBox2.Items.Count; i++)
{
if (this.comboBox2.Items[i].ToString() == pct._NombreEstiloTexto)
{
this.comboBox2.SelectedIndex = i;
}
}
}
if(pct.lb_poseeOtraFamiliaTexto)
{
for (int i = 0; i < this.comboBox1.Items.Count; i++)
{
if (this.comboBox1.Items[i].ToString() == pct._NombreFamiliaTexto)
{
this.comboBox1.SelectedIndex = i;
}
}
}
if (pct.lb_otrotamanioTexto)
{
for (int i = 0; i < this.cmbTamanioFuenteBB.Items.Count; i++)
{
if (this.cmbTamanioFuenteBB.Items[i].ToString() == pct._TamanioTexto)
{
this.cmbTamanioFuenteBB.SelectedIndex = i;

134
}
}
}
if (pct.poseeColorTextop)
{
this.txtColorFuenteEtiquetaBB.Text = "";
this.txtColorFuenteEtiquetaBB.Text = pct.ColorEtiqueta.Name;
}
if (pct.poseeColorfondo)
{
this.txtColorFodoEtiquetaBB.Text = "";
this.txtColorFodoEtiquetaBB.Text = pct.ColorFondo.Name;
}
break;
#endregion
#region propiedades cata texto lectura
case "RICHTEXTBOX":
this.pnlFuentes.Visible = true;
PanelRichTextBox prtb = (PanelRichTextBox)obj1;
this.txtNombreEtiquetaBB.Text = prtb._Nombrecontrol;
this.txtTextoEtiquetaBB.Text = prtb._Texto;

if (prtb.lb_poseeEstilo)
{
for (int i = 0; i < this.comboBox2.Items.Count; i++)
{
if (this.comboBox2.Items[i].ToString() == prtb._NombreEstiloTexto)
{
this.comboBox2.SelectedIndex = i;
}
}
}
if (prtb.lb_poseeOtraFamiliaTexto)
{
for (int i = 0; i < this.comboBox1.Items.Count; i++)
{
if (this.comboBox1.Items[i].ToString() == prtb._NombreFamiliaTexto)
{
this.comboBox1.SelectedIndex = i;
}
}
}
if (prtb.lb_otrotamanioTexto)
{
for (int i = 0; i < this.cmbTamanioFuenteBB.Items.Count; i++)
{
if (this.cmbTamanioFuenteBB.Items[i].ToString() == prtb._TamanioTexto)
{
this.cmbTamanioFuenteBB.SelectedIndex = i;
}
}
}
if (prtb.poseeColorTextop)
{
this.txtColorFuenteEtiquetaBB.Text = "";
this.txtColorFuenteEtiquetaBB.Text = prtb.ColorEtiqueta.Name;
}

135
if (prtb.poseeColorfondo)
{
this.txtColorFodoEtiquetaBB.Text = "";
this.txtColorFodoEtiquetaBB.Text = prtb.ColorFondo.Name;
}
break;
#endregion
#region propiedades boton
case "BOTON":
PanelBoton pb = (PanelBoton)obj1;
this.txtNombreEtiquetaBB.Text = pb._Nombrecontrol;
this.txtTextoEtiquetaBB.Text = pb._Texto;
this.btnAccionBotonVarios.Top = 53;//239;

this.btnAccionBotonVarios.Visible = true;
break;
#endregion
#region propiedades password
case "PASSWORD":
PanelPassword ppw = (PanelPassword)obj1;
this.txtNombreEtiquetaBB.Text = ppw._Nombrecontrol;

if (ppw.lb_poseeEstilo)
{
for (int i = 0; i < this.comboBox2.Items.Count; i++)
{
if (this.comboBox2.Items[i].ToString() == ppw._NombreEstiloTexto)
{
this.comboBox2.SelectedIndex = i;
}
}
}
if (ppw.lb_poseeOtraFamiliaTexto)
{
for (int i = 0; i < this.comboBox1.Items.Count; i++)
{
if (this.comboBox1.Items[i].ToString() == ppw._NombreFamiliaTexto)
{
this.comboBox1.SelectedIndex = i;
}
}
}
if (ppw.lb_otrotamanioTexto)
{
for (int i = 0; i < this.cmbTamanioFuenteBB.Items.Count; i++)
{
if (this.cmbTamanioFuenteBB.Items[i].ToString() == ppw._TamanioTexto)
{
this.cmbTamanioFuenteBB.SelectedIndex = i;
}
}
}
if (ppw.poseeColorTextop)
{
this.txtColorFuenteEtiquetaBB.Text = "";
this.txtColorFuenteEtiquetaBB.Text = ppw.ColorEtiqueta.Name;
}

136
if (ppw.poseeColorfondo)
{
this.txtColorFodoEtiquetaBB.Text = "";
this.txtColorFodoEtiquetaBB.Text = ppw.ColorFondo.Name;
}
break;
#endregion
#region propiedades EMAIL
case "EMAIL":
this.pnlFuentes.Visible = true;
PanelEmail pem = (PanelEmail)obj1;
this.txtNombreEtiquetaBB.Text = pem._Nombrecontrol;

if (pem.lb_poseeEstilo)
{
for (int i = 0; i < this.comboBox2.Items.Count; i++)
{
if (this.comboBox2.Items[i].ToString() == pem._NombreEstiloTexto)
{
this.comboBox2.SelectedIndex = i;
}
}
}
if (pem.lb_poseeOtraFamiliaTexto)
{
for (int i = 0; i < this.comboBox1.Items.Count; i++)
{
if (this.comboBox1.Items[i].ToString() == pem._NombreFamiliaTexto)
{
this.comboBox1.SelectedIndex = i;
}
}
}
if (pem.lb_otrotamanioTexto)
{
for (int i = 0; i < this.cmbTamanioFuenteBB.Items.Count; i++)
{
if (this.cmbTamanioFuenteBB.Items[i].ToString() == pem._TamanioTexto)
{
this.cmbTamanioFuenteBB.SelectedIndex = i;
}
}
}
if (pem.poseeColorTextop)
{
this.txtColorFuenteEtiquetaBB.Text = "";
this.txtColorFuenteEtiquetaBB.Text = pem.ColorEtiqueta.Name;
}
if (pem.poseeColorfondo)
{
this.txtColorFodoEtiquetaBB.Text = "";
this.txtColorFodoEtiquetaBB.Text = pem.ColorFondo.Name;
}
break;
#endregion
#region propiedades TEXTOAUTOCOMPLETAR
case "TEXTOAUTOCOMPLETAR":

137
this.pnlFuentes.Visible = true;
pnlItemsComboBox.Visible = true;
pnlItemsComboBox.Top = 53;
pnlItemsComboBox.Left = 310;
PanelTextoAutocompletar pac = (PanelTextoAutocompletar)obj1;
this.txtNombreEtiquetaBB.Text = pac._Nombrecontrol;

if (pac.lb_poseeEstilo)
{
for (int i = 0; i < this.comboBox2.Items.Count; i++)
{
if (this.comboBox2.Items[i].ToString() == pac._NombreEstiloTexto)
{
this.comboBox2.SelectedIndex = i;
}
}
}
if (pac.lb_poseeOtraFamiliaTexto)
{
for (int i = 0; i < this.comboBox1.Items.Count; i++)
{
if (this.comboBox1.Items[i].ToString() == pac._NombreFamiliaTexto)
{
this.comboBox1.SelectedIndex = i;
}
}
}
if (pac.lb_otrotamanioTexto)
{
for (int i = 0; i < this.cmbTamanioFuenteBB.Items.Count; i++)
{
if (this.cmbTamanioFuenteBB.Items[i].ToString() == pac._TamanioTexto)
{
this.cmbTamanioFuenteBB.SelectedIndex = i;
}
}
}
if (pac.poseeColorTextop)
{
this.txtColorFuenteEtiquetaBB.Text = "";
this.txtColorFuenteEtiquetaBB.Text = pac.ColorEtiqueta.Name;
}
if (pac.poseeColorfondo)
{
this.txtColorFodoEtiquetaBB.Text = "";
this.txtColorFodoEtiquetaBB.Text = pac.ColorFondo.Name;
}
break;
#endregion
#region propiedades CAJATEXTOAUTOCORREGIR
case "CAJATEXTOAUTOCORREGIR":
this.pnlFuentes.Visible = true;
PanelTextoAutocorregir paco = (PanelTextoAutocorregir)obj1;
this.txtNombreEtiquetaBB.Text = paco._Nombrecontrol;

if (paco.lb_poseeEstilo)
{

138
for (int i = 0; i < this.comboBox2.Items.Count; i++)
{
if (this.comboBox2.Items[i].ToString() == paco._NombreEstiloTexto)
{
this.comboBox2.SelectedIndex = i;
}
}
}
if (paco.lb_poseeOtraFamiliaTexto)
{
for (int i = 0; i < this.comboBox1.Items.Count; i++)
{
if (this.comboBox1.Items[i].ToString() == paco._NombreFamiliaTexto)
{
this.comboBox1.SelectedIndex = i;
}
}
}
if (paco.lb_otrotamanioTexto)
{
for (int i = 0; i < this.cmbTamanioFuenteBB.Items.Count; i++)
{
if (this.cmbTamanioFuenteBB.Items[i].ToString() == paco._TamanioTexto)
{
this.cmbTamanioFuenteBB.SelectedIndex = i;
}
}
}
if (paco.poseeColorTextop)
{
this.txtColorFuenteEtiquetaBB.Text = "";
this.txtColorFuenteEtiquetaBB.Text = paco.ColorEtiqueta.Name;
}
if (paco.poseeColorfondo)
{
this.txtColorFodoEtiquetaBB.Text = "";
this.txtColorFodoEtiquetaBB.Text = paco.ColorFondo.Name;
}
break;
#endregion
#region propiedades TEXTOAUTOCOMPLETAR_
case "TEXTOAUTOCOMPLETAR_":
this.pnlFuentes.Visible = true;
PanelAutoCompletar pacom = (PanelAutoCompletar)obj1;
this.txtNombreEtiquetaBB.Text = pacom._Nombrecontrol;

if (pacom.lb_poseeEstilo)
{
for (int i = 0; i < this.comboBox2.Items.Count; i++)
{
if (this.comboBox2.Items[i].ToString() == pacom._NombreEstiloTexto)
{
this.comboBox2.SelectedIndex = i;
}
}
}
if (pacom.lb_poseeOtraFamiliaTexto)

139
{
for (int i = 0; i < this.comboBox1.Items.Count; i++)
{
if (this.comboBox1.Items[i].ToString() == pacom._NombreFamiliaTexto)
{
this.comboBox1.SelectedIndex = i;
}
}
}
if (pacom.lb_otrotamanioTexto)
{
for (int i = 0; i < this.cmbTamanioFuenteBB.Items.Count; i++)
{
if (this.cmbTamanioFuenteBB.Items[i].ToString() == pacom._TamanioTexto)
{
this.cmbTamanioFuenteBB.SelectedIndex = i;
}
}
}
if (pacom.poseeColorTextop)
{
this.txtColorFuenteEtiquetaBB.Text = "";
this.txtColorFuenteEtiquetaBB.Text = pacom.ColorEtiqueta.Name;
}
if (pacom.poseeColorfondo)
{
this.txtColorFodoEtiquetaBB.Text = "";
this.txtColorFodoEtiquetaBB.Text = pacom.ColorFondo.Name;
}
break;
#endregion
#region propiedades CHECKBOX
case "CHECKBOX":
this.pnlFuentes.Visible = true;
PanelCheckBox pchb = (PanelCheckBox)obj1;
this.txtNombreEtiquetaBB.Text = pchb._Nombrecontrol;
this.txtTextoEtiquetaBB.Text = pchb._Texto;

//this.comboBox1.SelectedText = "";
//this.comboBox2.SelectedText = "";
//this.cmbTamanioFuenteBB.SelectedText = "";
if (pchb.lb_poseeEstilo)
{
for (int i = 0; i < this.comboBox2.Items.Count; i++)
{
if (this.comboBox2.Items[i].ToString() == pchb._NombreEstiloTexto)
{
this.comboBox2.SelectedIndex = i;
}
}
}
if (pchb.lb_poseeOtraFamiliaTexto)
{
for (int i = 0; i < this.comboBox1.Items.Count; i++)
{
if (this.comboBox1.Items[i].ToString() == pchb._NombreFamiliaTexto)
{

140
this.comboBox1.SelectedIndex = i;
}
}
}
if (pchb.lb_otrotamanioTexto)
{
for (int i = 0; i < this.cmbTamanioFuenteBB.Items.Count; i++)
{
if (this.cmbTamanioFuenteBB.Items[i].ToString() == pchb._TamanioTexto)
{
this.cmbTamanioFuenteBB.SelectedIndex = i;
}
}
}
if (pchb.poseeColorTextop)
{
this.txtColorFuenteEtiquetaBB.Text = "";
this.txtColorFuenteEtiquetaBB.Text = pchb.ColorEtiqueta.Name;
}
if (pchb.poseeColorfondo)
{
this.txtColorFodoEtiquetaBB.Text = "";
this.txtColorFodoEtiquetaBB.Text = pchb.ColorFondo.Name;
}
break;
#endregion
#region propiedades COMBOBOX
case "COMBOBOX":
this.pnlFuentes.Visible = true;
this.pnlItemsComboBox.Visible = true;
this.pnlItemsComboBox.Top = 53;
this.pnlItemsComboBox.Left = 310;
PanelComboBox pcb = (PanelComboBox)obj1;
this.txtNombreEtiquetaBB.Text = pcb._Nombrecontrol;
//this.txtTextoEtiquetaBB.Text = "";

//this.comboBox1.SelectedText = "";
//this.comboBox2.SelectedText = "";
//this.cmbTamanioFuenteBB.SelectedText = "";
if (pcb.lb_poseeEstilo)
{
for (int i = 0; i < this.comboBox2.Items.Count; i++)
{
if (this.comboBox2.Items[i].ToString() == pcb._NombreEstiloTexto)
{
this.comboBox2.SelectedIndex = i;
}
}
}
if(pcb.lb_poseeOtraFamiliaTexto)
{
for (int i = 0; i < this.comboBox1.Items.Count; i++)
{
if (this.comboBox1.Items[i].ToString() == pcb._NombreFamiliaTexto)
{
this.comboBox1.SelectedIndex = i;
}

141
}
}
if (pcb.lb_otrotamanioTexto)
{
for (int i = 0; i < this.cmbTamanioFuenteBB.Items.Count; i++)
{
if (this.cmbTamanioFuenteBB.Items[i].ToString() == pcb._TamanioTexto)
{
this.cmbTamanioFuenteBB.SelectedIndex = i;
}
}
}
if (pcb.poseeColorTextop)
{
this.txtColorFuenteEtiquetaBB.Text = "";
this.txtColorFuenteEtiquetaBB.Text = pcb.ColorEtiqueta.Name;
}
if (pcb.poseeColorfondo)
{
this.txtColorFodoEtiquetaBB.Text = "";
this.txtColorFodoEtiquetaBB.Text = pcb.ColorFondo.Name;
}
try
{
this.txtContenidoCombo.Text = "";
string contTempItems = "";
for (int i = 0; i < pcb.Contenido.Length; i++)
{
contTempItems = contTempItems + pcb.Contenido.GetValue(i).ToString() +
Encoding.ASCII.GetString(new byte[] { (byte)13 }).ToString() + Encoding.ASCII.GetString(new byte[] {
(byte)10 }).ToString();
}
this.txtContenidoCombo.Text = contTempItems;
}
catch (Exception ex) { }
break;
#endregion
#region propiedades COMBOBOXNUMERICO
case "COMBOBOXNUMERICO":
this.pnlFuentes.Visible = true;
this.pnlValoresComboNum.Visible = true;
this.pnlValoresComboNum.Top=197;
this.pnlValoresComboNum.Left = 6;
PanelComboBoxNumerico pcbn = (PanelComboBoxNumerico)obj1;
this.txtNombreEtiquetaBB.Text = pcbn._Nombrecontrol;
//this.txtTextoEtiquetaBB.Text = "";

//this.comboBox1.SelectedText = "";
//this.comboBox2.SelectedText = "";
//this.cmbTamanioFuenteBB.SelectedText = "";
if (pcbn.lb_poseeEstilo)
{
for (int i = 0; i < this.comboBox2.Items.Count; i++)
{
if (this.comboBox2.Items[i].ToString() == pcbn._NombreEstiloTexto)
{
this.comboBox2.SelectedIndex = i;

142
}
}
}
if(pcbn.lb_poseeOtraFamiliaTexto)
{
for (int i = 0; i < this.comboBox1.Items.Count; i++)
{
if (this.comboBox1.Items[i].ToString() == pcbn._NombreFamiliaTexto)
{
this.comboBox1.SelectedIndex = i;
}
}
}
if (pcbn.lb_otrotamanioTexto)
{
for (int i = 0; i < this.cmbTamanioFuenteBB.Items.Count; i++)
{
if (this.cmbTamanioFuenteBB.Items[i].ToString() == pcbn._TamanioTexto)
{
this.cmbTamanioFuenteBB.SelectedIndex = i;
}
}
}
if (pcbn.poseeColorTextop)
{
this.txtColorFuenteEtiquetaBB.Text = "";
this.txtColorFuenteEtiquetaBB.Text = pcbn.ColorEtiqueta.Name;
}
if (pcbn.poseeColorfondo)
{
this.txtColorFodoEtiquetaBB.Text = "";
this.txtColorFodoEtiquetaBB.Text = pcbn.ColorFondo.Name;
}
this.txtMinimo.Text = pcbn.indiceInicio.ToString();
this.txtComienzo.Text = pcbn.comienzo.ToString();
this.txtIncremento.Text = pcbn.incremento.ToString();
this.txtMaximo.Text = pcbn.indiceFinal.ToString();
break;
#endregion
#region propiedades CAMPOFECHA
case "CAMPOFECHA":
PanelCampoFecha pcf = (PanelCampoFecha)obj1;
this.txtNombreEtiquetaBB.Text = pcf._Nombrecontrol;
//this.txtTextoEtiquetaBB.Text = "";

//this.comboBox1.SelectedText = "";
//this.comboBox2.SelectedText = "";
//this.cmbTamanioFuenteBB.SelectedText = "";
if (pcf.lb_poseeEstilo)
{
for (int i = 0; i < this.comboBox2.Items.Count; i++)
{
if (this.comboBox2.Items[i].ToString() == pcf._NombreEstiloTexto)
{
this.comboBox2.SelectedIndex = i;
}
}

143
}
if(pcf.lb_poseeOtraFamiliaTexto)
{
for (int i = 0; i < this.comboBox1.Items.Count; i++)
{
if (this.comboBox1.Items[i].ToString() == pcf._NombreFamiliaTexto)
{
this.comboBox1.SelectedIndex = i;
}
}
}
if (pcf.lb_otrotamanioTexto)
{
for (int i = 0; i < this.cmbTamanioFuenteBB.Items.Count; i++)
{
if (this.cmbTamanioFuenteBB.Items[i].ToString() == pcf._TamanioTexto)
{
this.cmbTamanioFuenteBB.SelectedIndex = i;
}
}
}
if (pcf.poseeColorTextop)
{
this.txtColorFuenteEtiquetaBB.Text = "";
this.txtColorFuenteEtiquetaBB.Text = pcf.ColorEtiqueta.Name;
}
if (pcf.poseeColorfondo)
{
this.txtColorFodoEtiquetaBB.Text = "";
this.txtColorFodoEtiquetaBB.Text = pcf.ColorFondo.Name;
}
break;
#endregion
#region propiedades OPCION
case "OPCION":
this.pnlFuentes.Visible = true;
PanelCampoOpcion pco = (PanelCampoOpcion)obj1;
this.txtNombreEtiquetaBB.Text = pco._Nombrecontrol;
this.txtTextoEtiquetaBB.Text = pco._Texto;

//this.comboBox1.SelectedText = "";
//this.comboBox2.SelectedText = "";
//this.cmbTamanioFuenteBB.SelectedText = "";
if (pco.lb_poseeEstilo)
{
for (int i = 0; i < this.comboBox2.Items.Count; i++)
{
if (this.comboBox2.Items[i].ToString() == pco._NombreEstiloTexto)
{
this.comboBox2.SelectedIndex = i;
}
}
}
if (pco.lb_poseeOtraFamiliaTexto)
{
for (int i = 0; i < this.comboBox1.Items.Count; i++)
{

144
if (this.comboBox1.Items[i].ToString() == pco._NombreFamiliaTexto)
{
this.comboBox1.SelectedIndex = i;
}
}
}
if (pco.lb_otrotamanioTexto)
{
for (int i = 0; i < this.cmbTamanioFuenteBB.Items.Count; i++)
{
if (this.cmbTamanioFuenteBB.Items[i].ToString() == pco._TamanioTexto)
{
this.cmbTamanioFuenteBB.SelectedIndex = i;
}
}
}
if (pco.poseeColorTextop)
{
this.txtColorFuenteEtiquetaBB.Text = "";
this.txtColorFuenteEtiquetaBB.Text = pco.ColorEtiqueta.Name;
}
if (pco.poseeColorfondo)
{
this.txtColorFodoEtiquetaBB.Text = "";
this.txtColorFodoEtiquetaBB.Text = pco.ColorFondo.Name;
}
break;
#endregion
#region propiedades IMAGEN
case "IMAGEN":
PanelCampoImagen pci = (PanelCampoImagen)obj1;
this.txtNombreEtiquetaBB.Text = pci._Nombrecontrol;
this.pnlFuentes.Visible = false;
this.pnlColorControles.Visible = false;
this.txtAncho.Text = pci._ancho.ToString();
this.txtAlto.Text = pci._alto.ToString();
this.pnlDimensiones.Visible=true;
this.pnlImagenControl.Visible = true;
break;
#endregion
#region propiedades BROWSER
case "BROWSER":
PanelBrowserField pbw = (PanelBrowserField)obj1;
this.txtNombreEtiquetaBB.Text = pbw._Nombrecontrol;
this.pnlFuentes.Visible = false;
this.pnlColorControles.Visible = false;
break;
#endregion
#region propiedades MAPA
case "MAPA":
PanelCamposMapa pm = (PanelCamposMapa)obj1;
this.txtNombreEtiquetaBB.Text = pm._Nombrecontrol;
this.pnlFuentes.Visible = false;
this.pnlColorControles.Visible = false;
break;
#endregion
}

145
}
catch (Exception ex) {
MessageBox.Show("Error " + ex.Message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
#endregion
#region cambia nombre controles
private void txtNombreEtiquetaBB_TextChanged(object sender, EventArgs e)
{
ObjetoBase obj = (ObjetoBase)arreglo[indiceSeleccionado];
switch (obj._TipoControl)
{
#region nombre etiqueta
case "ETIQUETA":
PanelEtiqueta pe = (PanelEtiqueta)obj;
pe._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre richttextbox
case "RICHTEXTBOX":
PanelRichTextBox prtb = (PanelRichTextBox)obj;
prtb._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre CAJATEXTO
case "CAJATEXTO":
PanelCajatexto pct = (PanelCajatexto)obj;
pct._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre BOTON
case "BOTON":
PanelBoton pb = (PanelBoton)obj;
pb._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre PASSWORD
case "PASSWORD":
PanelPassword pp = (PanelPassword)obj;
pp._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre EMAIL
case "EMAIL":
PanelEmail pem = (PanelEmail)obj;
pem._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre TEXTOAUTOCOMPLETAR
case "TEXTOAUTOCOMPLETAR":
PanelTextoAutocompletar pta = (PanelTextoAutocompletar)obj;
pta._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre CAJATEXTOAUTOCORREGIR

146
case "CAJATEXTOAUTOCORREGIR":
PanelTextoAutocorregir ptac = (PanelTextoAutocorregir)obj;
ptac._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre TEXTOAUTOCOMPLETAR_
case "TEXTOAUTOCOMPLETAR_":
PanelAutoCompletar paut = (PanelAutoCompletar)obj;
paut._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre CHECKBOX
case "CHECKBOX":
PanelCheckBox pchb = (PanelCheckBox)obj;
pchb._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre COMBOBOX
case "COMBOBOX":
PanelComboBox pcb = (PanelComboBox)obj;
pcb._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre COMBOBOXNUMERICO
case "COMBOBOXNUMERICO":
PanelComboBoxNumerico pcbn = (PanelComboBoxNumerico)obj;
pcbn._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre CAMPOFECHA
case "CAMPOFECHA":
PanelCampoFecha pf = (PanelCampoFecha)obj;
pf._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre OPCION
case "OPCION":
PanelCampoOpcion po = (PanelCampoOpcion)obj;
po._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre IMAGEN
case "IMAGEN":
PanelCampoImagen pim = (PanelCampoImagen)obj;
pim._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre BROWSER
case "BROWSER":
PanelBrowserField pbr = (PanelBrowserField)obj;
pbr._Nombrecontrol = this.txtNombreEtiquetaBB.Text;
break;
#endregion
#region nombre MAPA
case "MAPA":
PanelCamposMapa pmap = (PanelCamposMapa)obj;
pmap._Nombrecontrol = this.txtNombreEtiquetaBB.Text;

147
break;
#endregion
}
}
#endregion
#region cambia texto controles
private void txtTextoEtiquetaBB_TextChanged(object sender, EventArgs e)
{
if (cambiaTexto)
{
ObjetoBase obj = (ObjetoBase)arreglo[indiceSeleccionado];
switch (obj._TipoControl)
{
#region texto ETIQUETA
case "ETIQUETA":
PanelEtiqueta pe = (PanelEtiqueta)obj;
pe._Texto = this.txtTextoEtiquetaBB.Text;
pe.cambiaEtiquetaVisible(this.txtTextoEtiquetaBB.Text);
break;
#endregion
#region texto RICHTEXTBOX
case "RICHTEXTBOX":
PanelRichTextBox prtb = (PanelRichTextBox)obj;
prtb._Texto = this.txtTextoEtiquetaBB.Text;
prtb.cambiaEtiquetaVisible(this.txtTextoEtiquetaBB.Text);
break;
#endregion
#region texto BOTON
case "BOTON":
PanelBoton pb = (PanelBoton)obj;
pb._Texto = this.txtNombreEtiquetaBB.Text;
pb.cambiaEtiquetaVisible(pb._Texto);
break;
#endregion
#region texto CHECKBOX
case "CHECKBOX":
PanelCheckBox pchb = (PanelCheckBox)obj;
pchb._Texto = this.txtNombreEtiquetaBB.Text;
pchb.cambiaEtiquetaVisible(pchb._Texto);
break;
#endregion
#region texto OPCION
case "OPCION":
PanelCampoOpcion pco = (PanelCampoOpcion)obj;
pco._Texto = this.txtNombreEtiquetaBB.Text;
pco.cambiaEtiquetaVisible(pco._Texto);
break;
#endregion
}
}
}
#endregion
#region cambia color texto controles
private void button10_Click(object sender, EventArgs e)
{
ObjetoBase obj = (ObjetoBase)arreglo[indiceSeleccionado];
VentanaColores vc = new VentanaColores();

148
vc.ShowDialog();
switch (obj._TipoControl)
{
#region color texto ETIQUETA
case "ETIQUETA":
PanelEtiqueta pe = (PanelEtiqueta)obj;
pe.ColorEtiqueta = vc.colorClick;
pe.cambiarColorEtiqueta(vc.colorClick);
break;
#endregion
#region color texto RICHTEXTBOX
case "RICHTEXTBOX":
PanelRichTextBox prtb = (PanelRichTextBox)obj;
prtb.ColorEtiqueta = vc.colorClick;
prtb.cambiarColorEtiqueta(vc.colorClick);
break;
#endregion
#region color texto CAJATEXTO
case "CAJATEXTO":
PanelCajatexto pct = (PanelCajatexto)obj;
pct.ColorEtiqueta = vc.colorClick;
break;
#endregion
#region color texto PASSWORD
case "PASSWORD":
PanelPassword pp = (PanelPassword)obj;
pp.ColorEtiqueta = vc.colorClick;
break;
#endregion
#region color texto EMAIL
case "EMAIL":
PanelEmail pem = (PanelEmail)obj;
pem.ColorEtiqueta = vc.colorClick;
break;
#endregion
#region color texto TEXTOAUTOCOMPLETAR
case "TEXTOAUTOCOMPLETAR":
PanelTextoAutocompletar pta = (PanelTextoAutocompletar)obj;
pta.ColorEtiqueta = vc.colorClick;
break;
#endregion
#region color texto CAJATEXTOAUTOCORREGIR
case "CAJATEXTOAUTOCORREGIR":
PanelTextoAutocorregir ptac = (PanelTextoAutocorregir)obj;
ptac.ColorEtiqueta = vc.colorClick;
break;
#endregion
#region color texto TEXTOAUTOCOMPLETAR_
case "TEXTOAUTOCOMPLETAR_":
PanelAutoCompletar paut = (PanelAutoCompletar)obj;
paut.ColorEtiqueta = vc.colorClick;
break;
#endregion
#region color texto CHECKBOX
case "CHECKBOX":
PanelCheckBox pchb = (PanelCheckBox)obj;
pchb.ColorEtiqueta = vc.colorClick;

149
pchb.cambiarColorEtiqueta(vc.colorClick);
break;
#endregion
#region color texto COMBOBOX
case "COMBOBOX":
PanelComboBox pcb = (PanelComboBox)obj;
pcb.ColorEtiqueta = vc.colorClick;
break;
#endregion
#region coolor texto COMBOBOXNUMERICO
case "COMBOBOXNUMERICO":
PanelComboBoxNumerico pcbn = (PanelComboBoxNumerico)obj;
pcbn.ColorEtiqueta = vc.colorClick;
break;
#endregion
#region color texto CAMPOFECHA
case "CAMPOFECHA":
PanelCampoFecha pf = (PanelCampoFecha)obj;
pf.ColorEtiqueta = vc.colorClick;
break;
#endregion
#region color texto OPCION
case "OPCION":
PanelCampoOpcion po = (PanelCampoOpcion)obj;
po.ColorEtiqueta = vc.colorClick;
po.cambiarColorEtiqueta(vc.colorClick);
break;
#endregion
}
this.txtColorFuenteEtiquetaBB.Text = vc.colorClick.Name;
}
#endregion
#region cambia color fondo controles
private void button11_Click(object sender, EventArgs e)
{
ObjetoBase obj = (ObjetoBase)arreglo[indiceSeleccionado];
VentanaColores vc = new VentanaColores();
vc.ShowDialog();
switch (obj._TipoControl)
{
case "ETIQUETA":
PanelEtiqueta pe = (PanelEtiqueta)obj;
pe.ColorFondo = vc.colorClick;
pe.cambiarColorFondo(vc.colorClick);
this.txtColorFodoEtiquetaBB.Text = vc.colorClick.Name;
break;
case "RICHTEXTBOX":
PanelRichTextBox prtb = (PanelRichTextBox)obj;
prtb.ColorFondo = vc.colorClick;
prtb.cambiarColorFondo(vc.colorClick);
this.txtColorFodoEtiquetaBB.Text = vc.colorClick.Name;
break;
case "CAJATEXTO":
PanelCajatexto pct = (PanelCajatexto)obj;
pct.ColorFondo = vc.colorClick;
pct.cambiarColorFondo(vc.colorClick);
this.txtColorFodoEtiquetaBB.Text = vc.colorClick.Name;

150
break;

}
}
#endregion
#region cambia familia texto
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (cambiaTexto)
{
ObjetoBase obj = (ObjetoBase)arreglo[indiceSeleccionado];
switch (obj._TipoControl)
{
#region familia texto ETIQUETA
case "ETIQUETA":
PanelEtiqueta pe = (PanelEtiqueta)obj;
pe._NombreFamiliaTexto =
this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString();
pe.cambiaFamiliaTexto(pe._NombreFamiliaTexto);
break;
#endregion
#region familia texto RICHTEXTBOX
case "RICHTEXTBOX":
PanelRichTextBox prtb = (PanelRichTextBox)obj;
prtb._NombreFamiliaTexto =
this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString();
prtb.cambiaFamiliaTexto(prtb._NombreFamiliaTexto);
break;
#endregion
#region familia texto CAJATEXTO
case "CAJATEXTO":
PanelCajatexto pct = (PanelCajatexto)obj;
pct._NombreFamiliaTexto =
this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString();
break;
#endregion
#region nombre familia texto PASSWORD
case "PASSWORD":
PanelPassword pp = (PanelPassword)obj;
pp._NombreFamiliaTexto =
this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString();
break;
#endregion
#region nombre familia texto EMAIL
case "EMAIL":
PanelEmail pem = (PanelEmail)obj;
pem._NombreFamiliaTexto =
this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString();
break;
#endregion
#region nombre familia texto TEXTOAUTOCOMPLETAR
case "TEXTOAUTOCOMPLETAR":
PanelTextoAutocompletar pta = (PanelTextoAutocompletar)obj;
pta._NombreFamiliaTexto =
this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString();
break;
#endregion

151
#region nombre familia texto CAJATEXTOAUTOCORREGIR
case "CAJATEXTOAUTOCORREGIR":
PanelTextoAutocorregir ptac = (PanelTextoAutocorregir)obj;
ptac._NombreFamiliaTexto =
this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString();
break;
#endregion
#region nombre familia texto TEXTOAUTOCOMPLETAR_
case "TEXTOAUTOCOMPLETAR_":
PanelAutoCompletar paut = (PanelAutoCompletar)obj;
paut._NombreFamiliaTexto =
this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString();
break;
#endregion
#region nombre familia texto CHECKBOX
case "CHECKBOX":
PanelCheckBox pchb = (PanelCheckBox)obj;
pchb._NombreFamiliaTexto =
this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString();

pchb.cambiaFamiliaTexto(this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString());
break;
#endregion
#region nombre familia texto COMBOBOX
case "COMBOBOX":
PanelComboBox pcb = (PanelComboBox)obj;
pcb._NombreFamiliaTexto =
this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString();
break;
#endregion
#region nombre familia COMBOBOXNUMERICO
case "COMBOBOXNUMERICO":
PanelComboBoxNumerico pcbn = (PanelComboBoxNumerico)obj;
pcbn._NombreFamiliaTexto =
this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString();
break;
#endregion
#region nombre familia CAMPOFECHA
case "CAMPOFECHA":
PanelCampoFecha pf = (PanelCampoFecha)obj;
pf._NombreFamiliaTexto =
this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString();
break;
#endregion
#region nombre familia OPCION
case "OPCION":
PanelCampoOpcion po = (PanelCampoOpcion)obj;
po._NombreFamiliaTexto =
this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString();
po.cambiaFamiliaTexto(this.comboBox1.Items[this.comboBox1.SelectedIndex].ToString());
break;
#endregion

}
}
}

152
#endregion
#region modifica estilo textos
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
if (cambiaTexto)
{
ObjetoBase obj = (ObjetoBase)arreglo[indiceSeleccionado];
switch (obj._TipoControl)
{
#region nombre estilo ETIQUETA
case "ETIQUETA":
PanelEtiqueta pe = (PanelEtiqueta)obj;
pe._NombreEstiloTexto =
this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString();
pe.cambiarEstiloTexto(pe._NombreEstiloTexto);
break;
#endregion
#region nombre estilo RICHTEXTBOX
case "RICHTEXTBOX":
PanelRichTextBox prtb = (PanelRichTextBox)obj;
prtb._NombreEstiloTexto =
this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString();
prtb.cambiarEstiloTexto(prtb._NombreEstiloTexto);
break;
#endregion
#region nombre estilo CAJATEXTO
case "CAJATEXTO":
PanelCajatexto pct = (PanelCajatexto)obj;
pct._NombreEstiloTexto =
this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString();
break;
#endregion
#region nombre estilo texto PASSWORD
case "PASSWORD":
PanelPassword pp = (PanelPassword)obj;
pp._NombreEstiloTexto =
this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString();
break;
#endregion
#region nombre estilo texto EMAIL
case "EMAIL":
PanelEmail pem = (PanelEmail)obj;
pem._NombreEstiloTexto =
this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString();
break;
#endregion
#region nombre estilo texto TEXTOAUTOCOMPLETAR
case "TEXTOAUTOCOMPLETAR":
PanelTextoAutocompletar pta = (PanelTextoAutocompletar)obj;
pta._NombreEstiloTexto =
this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString();
break;
#endregion
#region nombre estilo texto CAJATEXTOAUTOCORREGIR
case "CAJATEXTOAUTOCORREGIR":
PanelTextoAutocorregir ptac = (PanelTextoAutocorregir)obj;

153
ptac._NombreEstiloTexto =
this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString();
break;
#endregion
#region nombre estilo texto TEXTOAUTOCOMPLETAR_
case "TEXTOAUTOCOMPLETAR_":
PanelAutoCompletar paut = (PanelAutoCompletar)obj;
paut._NombreEstiloTexto =
this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString();
break;
#endregion
#region nombre estilo texto CHECKBOX
case "CHECKBOX":
PanelCheckBox pchb = (PanelCheckBox)obj;
pchb._NombreEstiloTexto =
this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString();

pchb.cambiarEstiloTexto(this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString());
break;
#endregion
#region nombre estilo texto COMBOBOX
case "COMBOBOX":
PanelComboBox pcb = (PanelComboBox)obj;
pcb._NombreEstiloTexto =
this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString();
break;
#endregion
#region nombre estilo COMBOBOXNUMERICO
case "COMBOBOXNUMERICO":
PanelComboBoxNumerico pcbn = (PanelComboBoxNumerico)obj;
pcbn._NombreEstiloTexto =
this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString();
break;
#endregion
#region nombre estilo CAMPOFECHA
case "CAMPOFECHA":
PanelCampoFecha pf = (PanelCampoFecha)obj;
pf._NombreEstiloTexto =
this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString();
break;
#endregion
#region nombre estilo OPCION
case "OPCION":
PanelCampoOpcion po = (PanelCampoOpcion)obj;
po._NombreEstiloTexto =
this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString();
po.cambiarEstiloTexto(this.comboBox2.Items[this.comboBox2.SelectedIndex].ToString());
break;
#endregion
}
}
}
#endregion
#region modifica tamaño controles
private void cmbTamanioFuenteBB_SelectedIndexChanged(object sender, EventArgs e)
{
if (cambiaTexto)

154
{
ObjetoBase obj = (ObjetoBase)arreglo[indiceSeleccionado];
switch (obj._TipoControl)
{
#region tamaño texto ETIQUETA
case "ETIQUETA":
PanelEtiqueta pe = (PanelEtiqueta)obj;
pe._TamanioTexto =
this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].ToString();
pe.modificaTamanioTexto(pe._TamanioTexto);
break;
#endregion
#region tamaño textoRICHTEXTBOX
case "RICHTEXTBOX":
PanelRichTextBox prtb = (PanelRichTextBox)obj;
prtb._TamanioTexto =
this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].ToString();
prtb.modificaTamanioTexto(prtb._TamanioTexto);
break;
#endregion
#region tamaño texto CAJATEXTO
case "CAJATEXTO":
PanelCajatexto pct = (PanelCajatexto)obj;
pct._TamanioTexto =
this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].ToString();
break;
#endregion
#region tamaño texto PASSWORD
case "PASSWORD":
PanelPassword pp = (PanelPassword)obj;
pp._TamanioTexto =
this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].ToString();
break;
#endregion
#region tamaño texto EMAIL
case "EMAIL":
PanelEmail pem = (PanelEmail)obj;
pem._TamanioTexto =
this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].ToString();
break;
#endregion
#region tamaño texto TEXTOAUTOCOMPLETAR
case "TEXTOAUTOCOMPLETAR":
PanelTextoAutocompletar pta = (PanelTextoAutocompletar)obj;
pta._TamanioTexto =
this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].ToString();
break;
#endregion
#region tamaño texto CAJATEXTOAUTOCORREGIR
case "CAJATEXTOAUTOCORREGIR":
PanelTextoAutocorregir ptac = (PanelTextoAutocorregir)obj;
ptac._TamanioTexto =
this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].ToString();
break;
#endregion
#region tamaño texto TEXTOAUTOCOMPLETAR_
case "TEXTOAUTOCOMPLETAR_":

155
PanelAutoCompletar paut = (PanelAutoCompletar)obj;
paut._TamanioTexto =
this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].ToString();
break;
#endregion
#region tamaño texto CHECKBOX
case "CHECKBOX":
PanelCheckBox pchb = (PanelCheckBox)obj;
pchb._TamanioTexto =
this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].ToString();

pchb.modificaTamanioTexto(this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].
ToString());
break;
#endregion
#region tamaño texto COMBOBOX
case "COMBOBOX":
PanelComboBox pcb = (PanelComboBox)obj;
pcb._TamanioTexto =
this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].ToString();
break;
#endregion
#region tamaño COMBOBOXNUMERICO
case "COMBOBOXNUMERICO":
PanelComboBoxNumerico pcbn = (PanelComboBoxNumerico)obj;
pcbn._TamanioTexto =
this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].ToString();
break;
#endregion
#region tamaño CAMPOFECHA
case "CAMPOFECHA":
PanelCampoFecha pf = (PanelCampoFecha)obj;
pf._TamanioTexto =
this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].ToString();
break;
#endregion
#region tamaño texto OPCION
case "OPCION":
PanelCampoOpcion po = (PanelCampoOpcion)obj;
po._TamanioTexto =
this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].ToString();

po.modificaTamanioTexto(this.cmbTamanioFuenteBB.Items[this.cmbTamanioFuenteBB.SelectedIndex].To
String());
break;
#endregion
}
}
}
#endregion
#region agrega control etiqueta
private void AgregaEtiqueta_Click(object sender, EventArgs e)
{
PanelEtiqueta pnl = new PanelEtiqueta("Texto etiqueta");
aumentaPanel(pnl, pnl._ancho,pnl._alto);
AsignaNombre();
}

156
#endregion
#region agrega control caja texto solo lectura
private void button12_Click(object sender, EventArgs e)
{
PanelRichTextBox pnl = new PanelRichTextBox("Texto Caja");
aumentaPanel(pnl, pnl._ancho, pnl._alto);
AsignaNombre();
}
#endregion
private void txtColorFuenteEtiquetaBB_TextChanged(object sender, EventArgs e)
{

}
#region agrega control caja texto
private void button2_Click(object sender, EventArgs e)
{
PanelCajatexto pnl = new PanelCajatexto(true);
aumentaPanel(pnl,pnl._ancho,pnl._alto);
AsignaNombre();
}
#endregion
#region agrega control password
private void button13_Click(object sender, EventArgs e)
{
PanelPassword pnl = new PanelPassword(true);
aumentaPanel(pnl,pnl._ancho,pnl._alto);
AsignaNombre();
}
#endregion
#region elimina contorl seleccionado
private void toolStripMenuItem1_Click_1(object sender, EventArgs e)
{
try
{
arreglo.RemoveAt(indiceSeleccionado);
pnlSeleccionado.Visible = false;
indiceSeleccionado = -1;
}
catch (Exception ex)
{
MessageBox.Show("No Existen Elementos Para Eliminar", "No Items", MessageBoxButtons.OK,
MessageBoxIcon.Asterisk);
}
}
#endregion
#region agrega control email
private void button14_Click(object sender, EventArgs e)
{
PanelEmail pnl = new PanelEmail(true);
aumentaPanel(pnl,pnl._ancho,pnl._alto);
AsignaNombre();
}
#endregion
#region agrega control texto autocompletar
private void button15_Click(object sender, EventArgs e)
{
PanelTextoAutocompletar ptac = new PanelTextoAutocompletar(true);

157
aumentaPanel(ptac,ptac._ancho,ptac._alto);
AsignaNombre();
}
#endregion
#region cambia texto de combos box
private void button16_Click(object sender, EventArgs e)
{
DialogoAccionBoton vnt = new DialogoAccionBoton();
vnt.Text = "Contenido ";
vnt.ShowDialog();
this.txtContenidoCombo.Text = vnt.contenidoT;
string conteidoIngresado = vnt.contenidoT;
string[] miArregloIngresado = conteidoIngresado.Replace(Encoding.ASCII.GetString(new byte[] {
(byte)13 }).ToString() + Encoding.ASCII.GetString(new byte[] { (byte)10 }).ToString(),"*").Split('*');
Array n = miArregloIngresado.ToArray();
ObjetoBase obj1 = (ObjetoBase)arreglo[indiceSeleccionado];
if (obj1._TipoControl == "TEXTOAUTOCOMPLETAR")
{
PanelTextoAutocompletar ptac = (PanelTextoAutocompletar)arreglo[indiceSeleccionado];
ptac.Contenido = n;
}
if (obj1._TipoControl == "COMBOBOX")
{
PanelComboBox ptac = (PanelComboBox)arreglo[indiceSeleccionado];
ptac.Contenido = n;
}
}
#endregion
#region agrega control autocorregir
private void button18_Click(object sender, EventArgs e)
{
PanelTextoAutocorregir ptac = new PanelTextoAutocorregir(true);
aumentaPanel(ptac,ptac._ancho,ptac._alto);
AsignaNombre();
}
#endregion
#region agrega region autocompletar
private void button19_Click(object sender, EventArgs e)
{
PanelAutoCompletar ptac = new PanelAutoCompletar(true);
aumentaPanel(ptac,ptac._ancho,ptac._alto);
AsignaNombre();
}
#endregion
private void ovalShape1_Click(object sender, EventArgs e)
{

}
#region agrega control check box
private void button4_Click(object sender, EventArgs e)
{
PanelCheckBox ptac = new PanelCheckBox();
aumentaPanel(ptac,ptac._ancho,ptac._alto);
AsignaNombre();
}
#endregion
#region agrega control combo box

158
private void button20_Click(object sender, EventArgs e)
{
PanelComboBox ptac = new PanelComboBox(true);
aumentaPanel(ptac,ptac._ancho,ptac._alto);
AsignaNombre();
}
#endregion
#region agrega contorl combo box numerico
private void button21_Click(object sender, EventArgs e)
{
PanelComboBoxNumerico pcbn = new PanelComboBoxNumerico(true);
pcbn.indiceInicio = 0;
pcbn.indiceFinal = 100;
pcbn.incremento = 1;
pcbn.comienzo = 0;
aumentaPanel(pcbn,pcbn._ancho,pcbn._alto);
AsignaNombre();
}
#endregion
#region agrega control fecha
private void button22_Click(object sender, EventArgs e)
{
PanelCampoFecha ptac = new PanelCampoFecha(true);
aumentaPanel(ptac,ptac._ancho,ptac._alto);
AsignaNombre();
}
#endregion
#region agrega control opcion
private void button23_Click(object sender, EventArgs e)
{
PanelCampoOpcion pco = new PanelCampoOpcion();
aumentaPanel(pco, pco._ancho,pco._alto);
AsignaNombre();
}
#endregion
#region agrega control boton
private void button24_Click(object sender, EventArgs e)
{
PanelBoton pnl = new PanelBoton(true);
aumentaPanel(pnl,pnl._ancho,pnl._alto);//,pnl._ancho);
AsignaNombre();
}
#endregion
#region agrega campo imagen
private void button6_Click(object sender, EventArgs e)
{
PanelCampoImagen pci = new PanelCampoImagen();
aumentaPanel(pci, pci._ancho,pci._alto);
AsignaNombre();
}
#endregion
#region cambia imagen de control imagen
private void button25_Click(object sender, EventArgs e)
{
ObjetoBase obj = (ObjetoBase)arreglo[indiceSeleccionado];
if (obj._TipoControl == "IMAGEN")
{

159
PanelCampoImagen pci = (PanelCampoImagen)arreglo[indiceSeleccionado];
opfdImagen.Filter = "Imagenes Ligeras (*.jpg)|*.jpg|Mapas de Bits(*.bmp)|*.bmp|Imagenes
Web(*.gif)|*.gif";
opfdImagen.ShowDialog();
string pathImagen = opfdImagen.FileName;
string nombreArchivo = "";
string nombreDirectorio = "";
separaDirArchivo(pathImagen, ref nombreDirectorio, ref nombreArchivo);
nombreImagenFondo = nombreArchivo;
this.txtImagenSeleccionada.Text = nombreImagenFondo;
/*if(File.Exists("C:\\FuentesDesarrolladosTHWPR\\Proyecto\\res\\" + nombreArchivo)){
File.Delete("C:\\FuentesDesarrolladosTHWPR\\Proyecto\\res\\" + nombreArchivo);
}
File.Copy(pathImagen, "C:\\FuentesDesarrolladosTHWPR\\Proyecto\\res\\" + nombreArchivo);
Image img1 = Image.FromFile("C:\\FuentesDesarrolladosTHWPR\\Proyecto\\res\\" +
nombreArchivo);*/
if (File.Exists(_DirectorioJava.Replace("\\src", "\\res\\") + nombreArchivo))
{
File.Delete(_DirectorioJava.Replace("\\src", "\\res\\") + nombreArchivo);
}
File.Copy(pathImagen, _DirectorioJava.Replace("\\src", "\\res\\") + nombreArchivo);
Image img1 = Image.FromFile(_DirectorioJava.Replace("\\src", "\\res\\") + nombreArchivo);

pci.BackgroundImage = CambiarTamanoImagen(img1, pci._ancho, pci._alto);


pci.NombreImagenVer = nombreArchivo;
pci.rutaImagentemporal = pathImagen;
}
}
#endregion
#region agrega campo navegador
private void button26_Click(object sender, EventArgs e)
{
PanelBrowserField pci = new PanelBrowserField();
aumentaPanel(pci, pci._ancho, pci._alto);
AsignaNombre();
}
#endregion
#region agrega campo mapa
private void button27_Click(object sender, EventArgs e)
{
PanelCamposMapa pci = new PanelCamposMapa();
aumentaPanel(pci, pci._ancho, pci._alto);
AsignaNombre();
}
#endregion
#region cambia icono de barra de ventana
private void btnBotonImagenIcono_Click(object sender, EventArgs e)
{
opfdImagen.Filter = "Imagenes Ligeras de Iconos(*.png)|*.png|Mapas de
Bits(*.bmp)|*.bmp|Imagenes Web(*.gif)|*.gif";
opfdImagen.ShowDialog();
string pathImagen = opfdImagen.FileName;
System.IO.FileInfo finfo = new System.IO.FileInfo(pathImagen);
if (finfo.Length > 18037)
{

160
MessageBox.Show("El Tamaño de la imagen es Superior al permitido...favor de seleccionar
imagenes de maximo 18kb", "Archivo incorrecto", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
return;
}

string nombreArchivo = "";


string nombreDirectorio = "";
separaDirArchivo(pathImagen, ref nombreDirectorio, ref nombreArchivo);
this.txtImagenSeleccionada.Text = nombreImagenFondo;
/*if(File.Exists("C:\\FuentesDesarrolladosTHWPR\\Proyecto\\res\\" + nombreArchivo)){
File.Delete("C:\\FuentesDesarrolladosTHWPR\\Proyecto\\res\\" + nombreArchivo);
}
File.Copy(pathImagen, "C:\\FuentesDesarrolladosTHWPR\\Proyecto\\res\\" + nombreArchivo);
Image img1 = Image.FromFile("C:\\FuentesDesarrolladosTHWPR\\Proyecto\\res\\" +
nombreArchivo);*/
if (File.Exists(_DirectorioJava.Replace("\\src", "\\res\\") + nombreArchivo))
{
File.Delete(_DirectorioJava.Replace("\\src", "\\res\\") + nombreArchivo);
}
try
{

File.Copy(pathImagen, _DirectorioJava.Replace("\\src", "\\res\\") + nombreArchivo);


}
catch (Exception ex)
{
MessageBox.Show("La Imagen se encuentra en el Proyecto Actual","Imagen
Existente",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}
this.txtImagenIcono.Text = nombreArchivo;
}
#endregion
#region genera solucion
private void button28_Click(object sender, EventArgs e)
{
string pathInput = _DirectorioJava.Substring(0,_DirectorioJava.Length-4);
string pathOutput = _DirectorioJava.Substring(0, _DirectorioJava.Length - 4) + "\\Solucion";
string nombreApp = this.txtNombreSolucion.Text;
generasolucion(pathInput, pathOutput, nombreApp);
}
#endregion

private void pnlPropiedadesEtiqueta_Paint(object sender, PaintEventArgs e)


{

private void textBox9_TextChanged(object sender, EventArgs e)


{
PanelComboBoxNumerico pbk = (PanelComboBoxNumerico)arreglo[indiceSeleccionado];
pbk.indiceInicio = int.Parse((this.txtMinimo.Text == "") ? "0" : this.txtMinimo.Text);
}

private void textBox8_TextChanged(object sender, EventArgs e)


{
PanelComboBoxNumerico pbk = (PanelComboBoxNumerico)arreglo[indiceSeleccionado];

161
pbk.comienzo = int.Parse((this.txtComienzo.Text == "") ? "0" : this.txtComienzo.Text);
}

private void textBox4_TextChanged(object sender, EventArgs e)


{

private void textBox7_TextChanged(object sender, EventArgs e)


{
PanelComboBoxNumerico pbk = (PanelComboBoxNumerico)arreglo[indiceSeleccionado];
pbk.incremento = int.Parse((this.txtIncremento.Text == "") ? "0" : this.txtIncremento.Text);
}

private void label17_Click(object sender, EventArgs e)


{

private void imgChoice_TextChanged(object sender, EventArgs e)


{

private void txtMaximo_TextChanged(object sender, EventArgs e)


{
PanelComboBoxNumerico pbk = (PanelComboBoxNumerico)arreglo[indiceSeleccionado];
pbk.indiceFinal = int.Parse((this.txtMaximo.Text == "") ? "0" : this.txtMaximo.Text);
}

private void txtAncho_TextChanged(object sender, EventArgs e)


{
PanelCampoImagen pci = (PanelCampoImagen)arreglo[indiceSeleccionado];
pci._ancho = int.Parse((this.txtAncho.Text=="")?"0":this.txtAncho.Text);
pci.Width = pci._ancho;
}

private void txtAlto_TextChanged(object sender, EventArgs e)


{
PanelCampoImagen pci = (PanelCampoImagen)arreglo[indiceSeleccionado];
pci._alto = int.Parse((this.txtAlto.Text == "") ? "0" : this.txtAlto.Text);
pci.Height = pci._alto;
}

private void timer1_Tick(object sender, EventArgs e)


{
if(mostrar>=5){
this.Opacity = 100;
this.Visible=true;
this.Show();
this.timer1.Enabled = false;
}
else
{
this.Visible = false;
this.Hide();
}

162
mostrar++;
}

private void toolTip1_Popup(object sender, PopupEventArgs e)


{

private void menuStrip1_ItemClicked_2(object sender, ToolStripItemClickedEventArgs e)


{

private void mostrarCodigoToolStripMenuItem_Click(object sender, EventArgs e)


{

private void compilarToolStripMenuItem_Click(object sender, EventArgs e)


{

private void generarSoluciónToolStripMenuItem_Click(object sender, EventArgs e)


{

private void generarCodigoToolStripMenuItem_Click(object sender, EventArgs e)


{
//if (button5.Text == "Mostrar Código")
if(generarCodigoToolStripMenuItem.Text == "Mostrar Código")
{
generarCodigoToolStripMenuItem.Text = "Mostrar Diseño";
pnlImagenBlackBerry.Visible = false;
pnlCodigoGenerado.Visible = true;
pnlCodigoGenerado.Left = 605;
pnlCodigoGenerado.Top = 35;
pnlCodigoGenerado.Width = 505;
pnlCodigoGenerado.Height = 697;
generaCodigoJava();
}
else
{
generarCodigoToolStripMenuItem.Text = "Mostrar Código";
pnlCodigoGenerado.Visible = false;
pnlImagenBlackBerry.Visible = true;
pnlImagenBlackBerry.Left = 605;
pnlImagenBlackBerry.Top = 35;
}
}

private void generarSolucionToolStripMenuItem_Click(object sender, EventArgs e)


{
string pathInput = _DirectorioJava.Substring(0, _DirectorioJava.Length - 4);
string pathOutput = _DirectorioJava.Substring(0, _DirectorioJava.Length - 4) + "\\Solucion";
string nombreApp = this.txtNombreSolucion.Text;

163
generasolucion(pathInput, pathOutput, nombreApp);
}

private void compilarToolStripMenuItem1_Click(object sender, EventArgs e)


{
creaArchivoJava();
string res = "Archivo compilado exitosamente";
string dirJava = "", dirJarRIM = "";
extraerFicherBinJava(ref dirJava, ref dirJarRIM);
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = "\"" + dirJava + "\\bin\\javac\"";
proc.StartInfo.Arguments = " -Xlint:unchecked -classpath \".\\;" + dirJarRIM + "net_rim_api.jar\" \""
+ _DirectorioJava + "\\" + _NombreJava + "\"";
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
//System.IO.StreamReader myOutput = proc.StandardOutput;
proc.BeginOutputReadLine();
res = proc.StandardError.ReadToEnd();
proc.WaitForExit();
if (res.Length <= 0)
{
this.txtResultadoMovimiento.Text = "Archivo compilado exitosamente";
}
else
{
int posError = -1;
posError = res.ToUpper().IndexOf("ERROR");
if (posError > -1)
{
this.txtResultadoMovimiento.Text = "Archivo compilado con Errores \n" + res;
}
else
{
this.txtResultadoMovimiento.Text = "Archivo compilado con Advertencias \n" + res;
}
}
}

private void button1_Click(object sender, EventArgs e)


{
try
{
opfdImagen.Filter = "Imagenes Ligeras de Iconos (*.png)|*.png|Mapas de
Bits(*.bmp)|*.bmp|Imagenes Web(*.gif)|*.gif";
opfdImagen.ShowDialog();
string pathImagen = opfdImagen.FileName;
System.IO.FileInfo infoImg = new System.IO.FileInfo(pathImagen);
if(infoImg.Length>18037){
MessageBox.Show("La Imagen es Demaciado Grande...favor de Seleccionar una Imagen
menor a 17kb", "Imagen Grande", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}

164
string nombreArchivo = "";
string nombreDirectorio = "";
separaDirArchivo(pathImagen, ref nombreDirectorio, ref nombreArchivo);
this.txtIconoSolucionApp.Text = nombreArchivo;
if (File.Exists(_DirectorioJava.Replace("\\src", "\\res\\img\\") + nombreArchivo))
{
File.Delete(_DirectorioJava.Replace("\\src", "\\res\\img\\") + nombreArchivo);
}
try
{
File.Copy(pathImagen, _DirectorioJava.Replace("\\src", "\\res\\img\\") + nombreArchivo);
}
catch (Exception ex)
{
MessageBox.Show("La Imagen ya esta siendo utilizada en el Proyecto Actual", "Imagen
Repetida", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
catch (Exception ex)
{

}
}

private void nuevoToolStripMenuItem_Click(object sender, EventArgs e)


{
this.Controls.Clear();
InitializeComponent();
arreglo = new ArrayList();
crearDirectorios();
this.cmbTipoFondo.SelectedIndex = 0;
}
}
}

Codificación AppConfig

<?xml version="1.0" encoding="utf-8" ?>


<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

165
MANUAL DE USUARIO

1
Índice General
INTRODUCCIÓN 5
OBJETIVOS DE ESTE MANUAL 5
A QUIEN VA DIRIGIDO ESTE MANUAL 5
CONOCIMIENTOS PREVIOS 5
ACERCA DE ESTE MANUAL 6
CARACTERÍSTICAS DEL APLICATIVO 6
BENEFICIOS 7
PANTALLA DE PRESENTACION 7
PANTALLA DE CREACION SELECCIÓN DE SOLICITUD 8
PANTALLA PRINCIPAL 9
Área De Propiedades de controles de Formularios 11

2
Índice de Gráficos
GRÁFICO 1 Verificación Framework 6 6
GRAFICO 2 Verificación de JDK 7
GRÁFICO 3 PRESENTACION AGBB 8
GRÁFICO 4 Pantalla de Creación , Selección de Solución 8
GRÁFICO 5 Selección de Solución existente 9
GRÁFICO 6 Selección de Clase Creada 9
GRAFICO 7 Pantalla de Diseño 10
GRÁFICO 8 Detalle de Pantalla de Desarrollo - Detalle 10
GRÁFICO 9 Área de Desarrollo 11
GRÁFICO 10 Área de propiedades de Formulario y propiedades 11
de solución
GRAFICO 11 Selección de Tipo de Fondo de Pantalla 12
GRAFICO 12 Selección Color 12
GRAFICO 13 Selección Imagen 12
GRÁFICO 14 Área De Cuadro de Herramientas 13
GRÁFICO 15 Propiedades de control Label 16
GRAFICO 16 Propiedades de Caja de Selección 16
GRÁFICO 17 Propiedades Control de Opción 17
GRÁFICO 18 Propiedades de Botón 17
GRÁFICO 19 Propiedades de Lista de Selección de Texto 18
GRAFICO 20 Propiedades Lista de Selección numérica 18
GRÁFICO 21 Propiedades de Control Texto 19
GRAFICO 12 Propiedades de Texto de Solo Lectura 20
GRAFICO 13 Propiedades de Texto Auto búsqueda 20
GRÁFICO 14 Propiedades de texto Autocorregir 21
GRAFICO 15 Propiedades Texto Autocompletar 21
GRÁFICO 16 Propiedades de control Correo Electrónico 22
GRÁFICO 17 Propiedades de Password 22

3
GRAFICO 18 Propiedades de control fecha 23
GRÁFICO 19 Propiedades de Control Web 23
GRÁFICO 20 Propiedades de control imagen 24
GRÁFICO 21 Propiedades de control mapa 24
GRÁFICO 22 Menú de Control 25 25
GRAFICO 23 Código Generado 26
GRÁFICO 24 Diseño 27
GRÁFICO 25 Menú Acción Compilar 28
GRÁFICO 26 Ventana de Diseño Para compilación 28
GRÁFICO 27 Importación de Solución a Eclipse 29
GRÁFICO 28 Paso 2 de importación de solución a eclipse 30
GRÁFICO 29 Importación de solución a Eclipse Paso 3 30
GRAFICO 30 Selección de Carpeta Solución 31
GRÁFICO 31 Verificación de Archivo Solución 31
GRÁFICO 32 Visualización de solución en Eclipse 32
GRAFICO 33 Ejecución del Proyecto en Eclipse – Selección de 32
Emulador
GRAFICO 34 Ejecución de Proyecto, Verificación de 33
compilación en Eclipse
GRÁFICO 35 Visualización e Solución 33

4
GENERALIDADES
INTRODUCCIÓN
Este manual contiene información respecto a cómo operar con el Aplicativo AGBB

(Aplicaciones Grafica BlackBerry), además indicaciones de cómo funciona y los

conocimientos mínimos que debe tener el usuario para transmitir y comprender la

idea del desarrollo de aplicaciones móviles.

OBJETIVOS DE ESTE MANUAL


Ayudar al usuario en general al correcto desenvolvimiento en nuestro aplicativo y

que conozca las facilidades que este brinda al momento de crear aplicaciones para

dispositivos BlackBerry.

El mismo que comprende:

Conocer el alcance de todo el aplicativo por medio de una explicación

detallada e ilustrada de cada una de las opciones que lo forman.

Funciones no previstas o inesperadas.

A QUIEN VA DIRIGIDO ESTE MANUAL


Está dirigido, a todos los desarrolladores de aplicaciones orientado a dispositivos

móviles.

Está dirigido a desarrolladores que buscan hacer aplicaciones amigables para los

usuarios finales.

Está dirigido a todos los desarrolladores que estan familiarizados con desarrollos de

aplicaciones con una interfaz gráfica.

Está dirigido a los desarrolladores que tienen conocimientos básico de lenguaje

java.

Está dirigido a desarrolladores que tiene un conocimiento del IDE Eclipse para la

creación de los ejecutables y publicaciones.

5
Está dirigido a desarrolladores que tiene conocimiento de proyectos J2ME.

CONOCIMIENTOS PREVIOS
Se recomienda, que el usuario tenga conocimiento de desarrollo de aplicaciones

utilizando J2ME (Java 2 Micro Edition).

El usuario deber estar familiarizado con las funcionalidades que brindan los

dispositivos BlackBerry. Se recomienda que el usuario tenga conocimiento de

programación Orientada a objetos.

El usuario debe tener conocimiento del uso del aplicativo Eclipse para Java, debido

a la interacción del aplicativo desarrollado con el IDE en mención. El desarrollador

debe tener conocimiento del sistema operativo Windows

ACERCA DE ESTE MANUAL


Este manual, contiene las instrucciones necesarias, para indicar cuáles son las

mejores opciones a seguir para el desempeño de una funcionalidad en especial.

CARACTERÍSTICAS DEL APLICATIVO

El usuario debe confirmar que tenga instalado el componente net Framework 3.5 o

superior, para ello se debe dirigir a

panel de control Programas y características  revisar el componente instalado.

GRÁFICO 1
Verificación Framework

Para versiones anteriores a Windows vista se verifica el paquete de instalación en

6
panel de control  programas instalados.

El aplicativo trabaja con el jdk versión 7, para lo cual se verificara el paquete de

desarrollo y el paquete de ejecución en la dirección C:/Program File/Java

GRAFICO 2
Verificación de JDK

BENEFICIOS
 Se buscar optimizar el desarrollo de aplicaciones para dispositivos móviles

BlackBerry.

 Se brindara una interfaz amigable e intuitiva para el desarrollo de las

interfaces de usuarios.

 Permitir la interacción de los controles y las propiedades de los objetos

pertenecientes a una aplicación java de dispositivos BlackBerry.

 Se permitirá la revisión del código generado y modificación del mismo,

brindando la posibilidad de modificar este código e incluir lógica de

programación para los diferentes aplicativos a realizarse.

 Permitir la compilación del código para descartar posibles errores de

compilación.

 Permitir la generación de un proyecto compatible con el entorno de Eclipse

7
AGBB de Contenido
PANTALLA DE PRESENTACION
GRÁFICO 3
PRESENTACION AGBB

PANTALLA DE CREACION SELECCIÓN DE SOLICITUD


En esta pantalla se le permite al usuario las opciones de crear una nueva solución o

seleccionar una solución existente.

GRÁFICO 4
Pantalla de Creación , Selección de Solucion

En la opción de crear solución se le permitirá al usuario crear el sistema de archivos,

asi como los diferentes objetos iniciales para que la solución pueda ser compilada,

una vez creada la solución se creara el archivo <nombreSoluicion>.xmlSolucion

8
Este contiene la información necesaria para ser abierto y retomar el diseño, en la

opción abrir solución existente se buscara un archivo xmlSolucion

GRÁFICO 5
Selección de Solución existente

Y una vez abierto este archivo se cargaran las clases creadas en esta solución.
GRÁFICO 6
Selección de Clase Creada

PANTALLA PRINCIPAL

9
Pantalla Desarrollador
Esta pantalla contiene todo lo concerniente a los controles de las aplicaciones para
los dispositivos BlackBerry.
GRAFICO 7
Pantalla de Diseño

GRÁFICO 8
Detalle de Pantalla de Desarrollo - Detalle

A: Área de Desarrollo
B: Área De Propiedades de Formulario y Propiedades de Solución
C: Área De Cuadro de herramientas
D: Área De Propiedades de Controles de Formulario
E: Menú de Control.

10
GRÁFICO 9
Área de Desarrollo

En esta pantalla se colocara los diferentes objetos que vayan a utilizaran en el


aplicativo, la ubicación es a comodidad del desarrollador.

GRÁFICO 10
Área de propiedades de Formulario y propiedades de solución

NOMBRE SOLUCIÓN: Nombre de la solución o proyecto que se exportara a


Eclipse
ICONO SOLUCIÓN: Icono que se displayara en el dispositivo BlackBerry
TITULO: Titulo de la pantalla o formulario
ICONO: Icono que se mostrara en la barra de tareas.
Reloj: Indica si se mostrara el reloj en la barra de título de la aplicación

11
Notificaciones: Indica si se mostraran las notificaciones en la barra de tarea de la
aplicación
Señal: Indica si se muestra el identificador de señalen la barra de titulo
GRAFICO 11
Selección de Tipo de Fondo de Pantalla

Fondo: Indica que tipo de fondo se va a utilizar. Se tienen los siguientes


Ninguno: no se usara ningún fondo.
Color: indica que tendrá color de fondo

GRAFICO 12
Selección Color

Imagen: indica que se usara una imagen, aquí se solicita una imagen

GRAFICO 13
Selección Imagen

12
GRÁFICO 14
Área De Cuadro de Herramientas.

Muestra todos los controles a ser usados en una aplicación para el dispositivo
Blackberry

Etiqueta:

Permite mostrar un texto con el formato que se desee, este texto no es editable en el
momento de ejecución.

Caja de Selección

Es una caja de selección, si este objeto se agregan más de 1 no hay restricción se

13
pueden elegir más de 2 a la vez, es una caja de selección múltiple

Caja de Opción

Este control es de opción única, es decir si hay más de un control solo se permite
coger una sola opción.

Botón

Es un Control de acción para el formulario que se creo

Lista de Selección Txt

Es un control de opción con lista desplegable para selección única

Lista de selección Núm.

Es un control de lista de selección que muestra como contenido de lista solo


números.

Texto

Es un control que permite ingresar texto, este control es de mixtilíneas

Texto Solo Lectura

Es un control que permite ingresar texto en varia líneas, este control en tiempo
de ejecución no permite la edición.

Texto auto búsqueda

14
Es un control que permite la edición y se guarda en memoria lo escrito para que
en un futuro se permita el ingreso del mismo y se busque entre las diferentes
opciones ingresadas.

Texto Autocorregir

Es un control que permite el ingreso del texto y permite con el diccionario


activo la corrección de las palabras ingresadas así como indicar que palabra
está mal escrita

Texto Autocompletar

Es un control que permite el ingreso del texto y dependiendo del diccionario


completa la palabra

Correo Electrónico

Es un control que permite el ingreso de correos electrónico

Password

Es un control de ingreso de texto, este texto en modo de ejecución es


escondido.

Campo Fecha

Es un campo de ingreso de Fecha

Campo Web
15
Es un campo donde se puede ingresar código HTML o en su defecto una uro
para que se muestre una página en el aplicativo de dispositivo BlackBerry

Campo Imagen

Este campo es un campo que permite visualizar una imagen en el aplicativo


para el dispositivo BlackBerry
Campo MAPA

Este campo permite visualiza el mapa en la aplicación para el dispositivo


BlackBerry.

Área De Propiedades de controles de Formularios.


Indica las propiedades de cada control a usarse en las aplicaciones para dispositivos
BlackBerry
GRÁFICO 15
Propiedades de control Label

Nombre: Nombre del control


Texto: texto de la etiqueta
Color Fondo: Color de fondo de la etiqueta
Familia Fuente: Nombre de la familia de texto del control
Estilo Fuente: Nombre del estilo del texto en el control
Tamaño Fuente: Tamaño de fuente del control
Color Fuente: el color de la fuente del texto del control

16
GRAFICO 16
Propiedades de Caja de Selección

Nombre: Nombre del control


Texto: texto de la etiqueta
Color Fondo: Color de fondo de la etiqueta
Familia Fuente: Nombre de la familia de texto del control
Estilo Fuente: Nombre del estilo del texto en el control
Tamaño Fuente: Tamaño de fuente del control
Color Fuente: el color de la fuente del texto del control

GRÁFICO 17
Propiedades Control de Opción

Nombre: Nombre del control


Texto: texto de la etiqueta

17
Color Fondo: Color de fondo de la etiqueta
Familia Fuente: Nombre de la familia de texto del control
Estilo Fuente: Nombre del estilo del texto en el control
Tamaño Fuente: Tamaño de fuente del control
Color Fuente: el color de la fuente del texto del control

GRÁFICO 18
Propiedades de Botón

Nombre: Nombre del control


Texto: texto o etiqueta del control
Color Fondo: Color del fondo del control
Acción Botón: Acción dedicada al control incluido

GRÁFICO 19
Propiedades de Lista de Selección de Texto

Nombre: Nombre del control


Texto: texto de la etiqueta
Color Fondo: Color de fondo de la etiqueta
Familia Fuente: Nombre de la familia de texto del control
Estilo Fuente: Nombre del estilo del texto en el control
Tamaño Fuente: Tamaño de fuente del control

18
Color Fuente: el color de la fuente del texto del control
Elementos: listado de elementos a utilizarse.
GRAFICO 20
Propiedades Lista de Selección numérica

Nombre: Nombre del control


Texto: texto de la etiqueta
Color Fondo: Color de fondo de la etiqueta
Familia Fuente: Nombre de la familia de texto del control
Estilo Fuente: Nombre del estilo del texto en el control
Tamaño Fuente: Tamaño de fuente del control
Color Fuente: el color de la fuente del texto del control
Mínimo: Mínimo en la lista de selección.
Comienzo: valor de inicio de la lista de selección.
Incremento: valor en que se incrementa la lista numérica en el control
Máximo: valor máximo de la lista de selección.

GRÁFICO 21
Propiedades de Control Texto

19
Nombre: Nombre del control
Texto: texto de la etiqueta
Color Fondo: Color de fondo de la etiqueta
Familia Fuente: Nombre de la familia de texto del control
Estilo Fuente: Nombre del estilo del texto en el control
Tamaño Fuente: Tamaño de fuente del control
Color Fuente: el color de la fuente del texto del control
Elementos: listado de elementos a utilizarse.

GRAFICO 12
Propiedades de Texto de Solo Lectura.

Nombre: Nombre del control


Texto: texto de la etiqueta
Color Fondo: Color de fondo de la etiqueta

20
Familia Fuente: Nombre de la familia de texto del control
Estilo Fuente: Nombre del estilo del texto en el control
Tamaño Fuente: Tamaño de fuente del control
Color Fuente: el color de la fuente del texto del control
Elementos: listado de elementos a utilizarse.

GRAFICO 13
Propiedades de Texto Auto búsqueda

Nombre: Nombre del control


Texto: texto de la etiqueta
Color Fondo: Color de fondo de la etiqueta
Familia Fuente: Nombre de la familia de texto del control
Estilo Fuente: Nombre del estilo del texto en el control
Tamaño Fuente: Tamaño de fuente del control
Color Fuente: el color de la fuente del texto del control
Elementos: listado de elementos a utilizarse para la búsqueda.

GRÁFICO 14
Propiedades de texto Autocorregir

21
Nombre: Nombre del control
Texto: texto de la etiqueta
Color Fondo: Color de fondo de la etiqueta
Familia Fuente: Nombre de la familia de texto del control
Estilo Fuente: Nombre del estilo del texto en el control
Tamaño Fuente: Tamaño de fuente del control
Color Fuente: el color de la fuente del texto del control
GRAFICO 15
Propiedades Texto Autocompletar

Nombre: Nombre del control


Texto: texto de la etiqueta
Color Fondo: Color de fondo de la etiqueta
Familia Fuente: Nombre de la familia de texto del control
Estilo Fuente: Nombre del estilo del texto en el control
Tamaño Fuente: Tamaño de fuente del control
Color Fuente: el color de la fuente del texto del control

GRÁFICO 16
22
Propiedades de control Correo Electrónico

Nombre: Nombre del control


Texto: texto de la etiqueta
Color Fondo: Color de fondo de la etiqueta
Familia Fuente: Nombre de la familia de texto del control
Estilo Fuente: Nombre del estilo del texto en el control
Tamaño Fuente: Tamaño de fuente del control
Color Fuente: el color de la fuente del texto del control

GRÁFICO 17
Propiedades de Password

Nombre: Nombre del control


Texto: texto de la etiqueta
Color Fondo: Color de fondo de la etiqueta

GRAFICO 18
Propiedades de control fecha

23
Nombre: Nombre del control
Texto: texto de la etiqueta
Color Fondo: Color de fondo de la etiqueta

GRÁFICO 19
Propiedades de Control Web

Nombre: Nombre del control


Texto: dirección uro de la página a cargar
Color Fondo: Color de fondo de la etiqueta

GRÁFICO 20
Propiedades de control imagen

24
Nombre: Nombre del control
Texto: no aplica
Ancho del control imagen
Alto alto del control imagen
Imagen imagen a cargar en el control

GRÁFICO 21
Propiedades de control mapa

Muestra el control que visualiza el mapa.

Para eliminar un control se hace click derecho en el control y aparece l opción de eliminar.

25
GRAFICO 22
Menú de Control

Permite ver las acciones que se realizaran, las cuales son las siguientes.
Nuevo. Permite crear un nuevo proyecto desde cero
Mostrar Codigo. Muestra el codigo que se genero con el formulario
Compilar Pewmrite compilar el codigo generado o modificado
Generar Solucion. Permite geenerar la solucion para ser importada en Eclipse

Menú Opción Nuevo


Permite limpiar el formulario y crear una nueva solución.

Menú Mostrar Código


Este menú cambia el t3exzto dependiendo de la acción que se va a realizar
Teniendo lo siguiente para este control

Al hacer clic en este control se mostrara el siguiente texto


En la acción mostrar código se mostrara el código generado y se permitirá la edición del
mismo

GRAFICO 23

26
Código Generado

27
El código generado es el resultado de la interacción con los diferentes controles que se
utilizaron para la aplicación

GRÁFICO 24
Diseño

Con la acción de mostrar diseño se muestra el diseñador

28
GRÁFICO 25
Menú Acción Compilar

La acción compilar analiza el código autogenerado y el código modificado por el usuario


en búsqueda de posibles errores

Menú Acción Generar Solución

Se muestra un mensaje indicando que la solución se ha generado en la ruta que se indica


en el mensaje
Esta ruta se cambia dependiendo de la solución generada

GRÁFICO 26
Ventana de Diseño Para compilación

El siguiente diseño se lo exportara a eclipse


29
Para lo cual se utilizara el ide de eclipse de la siguiente manera se genera la solución y se
muestra la dirección donde se genera

GRÁFICO 27
Importación de Solución a Eclipse

30
GRÁFICO 28
Paso 2 de importación de solución a eclipse

GRÁFICO 29
Importación de solución a Eclipse Paso 3

31
GRAFICO 30
Selección de Carpeta Solución

GRÁFICO 31
Verificación de Archivo Solución

32
GRÁFICO 32
Visualización de solución en Eclipse

ejecución de proyecto
Para ejecutar se hace click al botón play y seleccionar el emulador

GRAFICO 33
Ejecucion del Proyecto en Eclipse – Selección de Emulador

33
GRAFICO 34
Ejecución de Proyecto, Verificación de compilación en Eclipse

GRÁFICO 35
Visualización e Solución

34

También podría gustarte