Les traigo este código el cual agrega un set de componentes que complementará a su ventana.
Información
- Compatible con Cramel: 2.0.0.362
- Librerías requeridas: MSVBVM60.cml
Ese set contiene:
- Botones
- Etiquetas
- Caja de texto
- Barra de progreso
- ComboBox
- ListView
Todos los componentes tienen los siguientes métodos:
- cambiarColorFondo(color:Entero) - Cambiamos el color del fondo del componente
- cambiarColorLetra(color:Entero) - Cambiamos el color de la letra del componente
- cambiarTexto(nuevo:Cadena) - Cambiamos el texto del componente
- cambiarTamaño(ancho, alto:Entero) - Cambiamos el tamaño del componente
- cambiarPosicion(x, y:Entero) - Cambiamos la posición del componente
Todos los componentes tienen las siguientes propiedades:
- Tipo - Establece o devuelve el tipo de componente | Por lo general su uso es para devolver el tipo, ya que, ya está establecido el tipo de componente, a no ser que se cree uno nuevo.
- Texto - Establece o devuelve el texto que contiene el componente
- ColorLetra - Devuelve el color de letra que tiene el componente
- ColorFondo - Devuelve el color de fondo que tiene el componente
- hWnd - Establece o devuelve el puntero del componente
- Padre - Establece o devuelve el puntero padre del componente | Su uso se aplica cuando quieres relacionar o agregar componentes a tu ventana
- DC - Establece o devuelve el contexto de dispositivo del componente
- Enfocar - Establece o devuelve si el componente gana Focus
- Centrar - Establece o devuelve si la ventana debe estar centrada en la pantalla
- Deshabilitado - Establece o devuelve si el componente estará deshabilidado
- Visible - Establece o devuelve si el componente estará visible
- Alto - Establece o devuelve el alto del componente
- Ancho - Establece o devuelve el ancho del componente
- PosX - Establece o devuelve la posición X del componente
- PosY - Establece o devuelve la posición Y del componente
- Se puede poner un icono, solo basta con poner el archivo "icon.ico" en el directorio de tu proyecto.
Aquí un ejemplo de una ventana con todos los componentes, y una segunda ventana.
(http://i.imgur.com/Jd0dgDD.png)
(http://i.imgur.com/kOpwCuS.png)
Importar "Cramel.cml"
Importar "MSVBVM60\MSVBVM60.cml"
Importar "Interfaz\Interfaz.cml"
Var frame, frameNuevo:CMLframe
Var botonExaminar, botonNuevo:CMLBotón
Var checkboxReemplazar:CMLCheckbox
Var grupoReemplazar:CMLGroupbox
Var radioReemplazar, radioNoReemplazar:CMLRadiobotón
Var etiquetaElección, etiquetaProgreso, etiquetaNuevo:CMLEtiqueta
Var comboboxOpciones:CMLCombobox
Var barraProgresoTest, barraProgresoMarquee, barraProgresoVertical:CMLBarraprogreso
Var cajaTextoPrueba, cajaTextoContra:CMLCajatexto
Var listViewTest:CMLListview
Proc alertaMensaje(hWnd:Entero)
Mensaje("Holaa " + EntCad(hWnd))
FinProc
Proc alertaBotonExaminar(hWnd:Entero,Botón:Byte,Presionado:Booleano,X,Y:Entero)
Seleccionar Botón
Caso BOTON_IZQUIERDO
Seleccionar Presionado
Caso Falso
Mensaje("Botón izquierdo presionado")
Mensaje("El checkbox esta: " + EntCad(checkboxReemplazar.estaSeleccionado) )
FinSeleccionar
Caso BOTON_DERECHO
Seleccionar Presionado
Caso Falso
Mensaje("Botón derecho presionado")
Mensaje(cajaTextoPrueba.cTexto)
cajaTextoPrueba.Limite = 20
cajaTextoPrueba.agrTexto = " agregado"
FinSeleccionar
Caso BOTON_CENTRAL
Seleccionar Presionado
Caso Falso
Mensaje("Botón central presionado")
Mensaje("Carácter: " + Carácter(cajaTextoContra.ContraseñaCaracter))
FinSeleccionar
FinSeleccionar
FinProc
Proc alertaComboBox(hWnd:Entero, Referencia Item:GUI_COMBOBOX_ITEM_INFO)
Mensaje("Item #" + EntCad(Item.Posición) + " seleccionado: " + Item.Item)
FinProc
Proc listViewTestEventClic(hWnd:Entero,Botón:Byte,Presionado:Booleano,X,Y:Entero,Referencia ItemInfo:GUI_LISTVIEW_ITEM_INFO)
Seleccionar Botón
Caso BOTON_DERECHO, BOTON_IZQUIERDO
Seleccionar Presionado
Caso Verdad
Mensaje("Posición: " + EntCad(ItemInfo.Columna) + CRLF + "Item: " + EntCad(ItemInfo.Item))
FinSeleccionar
FinSeleccionar
FinProc
Crear frame
Crear frameNuevo
Crear botonExaminar
Crear botonNuevo
Crear grupoReemplazar
Crear checkboxReemplazar
Crear radioReemplazar
Crear radioNoReemplazar
Crear etiquetaElección
Crear etiquetaProgreso
Crear etiquetaNuevo
Crear comboboxOpciones
Crear barraProgresoTest
Crear barraProgresoMarquee
Crear barraProgresoVertical
Crear cajaTextoPrueba
Crear cajaTextoContra
Crear listViewTest
frame.Texto = "CMLFrame clase"
frame.Ancho = 400
frame.Alto = 400
frame.Padre = 0
frame.Centrar = 1
'frame.eventos.Cargar@ = alertaMensaje@
frame.construir(WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU)
frameNuevo.Texto = "2do Frame"
frameNuevo.Ancho = 550
frameNuevo.Alto = 400
frameNuevo.Padre = 0
frameNuevo.Centrar = Verdad
frameNuevo.construir(WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU)
etiquetaElección.Texto = "\x191Qué quieres hacer?"
etiquetaElección.PosX = 10
etiquetaElección.PosY = 10
etiquetaElección.Ancho = 150
etiquetaElección.Alto = 30
etiquetaElección.Padre = frame.hWnd
etiquetaElección.construir()
etiquetaNuevo.Texto = "Hola :D"
etiquetaNuevo.PosX = 10
etiquetaNuevo.PosY = 10
etiquetaNuevo.Ancho = frameNuevo.Ancho - 30
etiquetaNuevo.Alto = 20
etiquetaNuevo.Padre = frameNuevo.hWnd
etiquetaNuevo.fuente.Nombre = "Roboto light"
etiquetaNuevo.fuente.Tamaño = 14
etiquetaNuevo.fuente.Bold = Verdad
etiquetaNuevo.construir(ES_CENTER)
listViewTest.PosX = 10
listViewTest.PosY = (etiquetaNuevo.PosY + etiquetaNuevo.Alto) + 5
listViewTest.Ancho = frameNuevo.Ancho - 30
listViewTest.Alto = (frameNuevo.Alto - listViewTest.PosY) - 50
listViewTest.Padre = frameNuevo.hWnd
listViewTest.fuente.Nombre = "Arial"
listViewTest.fuente.Tamaño = 11
listViewTest.eventos.ListView.Clic@ = listViewTestEventClic@
listViewTest.construir()
Var listColumnas[]:INFO_COLUMNA
ReDim listColumnas, 5
listColumnas[0].Indice = 0
listColumnas[0].Ancho = (listViewTest.Ancho/5)
listColumnas[0].Posición = LVCFMT_LEFT
listColumnas[0].Texto = "Nombre"
listColumnas[1].Indice = 1
listColumnas[1].Ancho = (listViewTest.Ancho/5)
listColumnas[1].Posición = LVCFMT_CENTER
listColumnas[1].Texto = "Dirección IP"
listColumnas[2].Indice = 2
listColumnas[2].Ancho = (listViewTest.Ancho/5)
listColumnas[2].Posición = LVCFMT_CENTER
listColumnas[2].Texto = "Usuario@Host"
listColumnas[3].Indice = 3
listColumnas[3].Ancho = (listViewTest.Ancho/5)
listColumnas[3].Posición = LVCFMT_CENTER
listColumnas[3].Texto = "SO"
listColumnas[4].Indice = 4
listColumnas[4].Ancho = (listViewTest.Ancho/5)
listColumnas[4].Posición = LVCFMT_CENTER
listColumnas[4].Texto = "País@Idioma"
listViewTest.insertarColumnas(listColumnas)
Var listItems:INFO_ITEM
ReDim listItems.Texto, 5
listItems.Texto[0] = "Test"
listItems.Texto[1] = "Test1"
listItems.Texto[2] = "Test2"
listItems.Texto[3] = "Test3"
listItems.Texto[4] = "Test4"
listItems.Indice = 0
Var listItems2:INFO_ITEM
ReDim listItems2.Texto, 5
listItems2.Texto[0] = "Test2"
listItems2.Texto[1] = "Test21"
listItems2.Texto[2] = "Test22"
listItems2.Texto[3] = "Test23"
listItems2.Texto[4] = "Test24"
listItems2.Indice = 1
listViewTest.insertarItem(listItems)
listViewTest.insertarItem(listItems2)
comboboxOpciones.PosX = 170
comboboxOpciones.PosY = 10
comboboxOpciones.Ancho = 150
comboboxOpciones.Alto = 20
comboboxOpciones.Padre = frame.hWnd
comboboxOpciones.eventos.ComboBox.Selección@ = alertaComboBox@
comboboxOpciones.construir(CBS_DROPDOWNLIST)
comboboxOpciones.agregarItem("Hola")
comboboxOpciones.agregarItem("\x191Como estas?")
comboboxOpciones.agregarItem("Bien")
comboboxOpciones.agregarItem("Genial")
comboboxOpciones.agregarItem("y tu??")
comboboxOpciones.agregarItem("Bien, igual")
comboboxOpciones.agregarItem("Que padre")
botonExaminar.Texto = "Examinar"
botonExaminar.PosX = 10
botonExaminar.PosY = 30
botonExaminar.Ancho = 100
botonExaminar.Alto = 50
botonExaminar.Padre = frame.hWnd
botonExaminar.eventos.Mouse.Clic@ = alertaBotonExaminar@
botonExaminar.construir()
botonNuevo.Texto = "Nueva ventana"
botonNuevo.PosX = 10
botonNuevo.PosY = 300
botonNuevo.Ancho = 100
botonNuevo.Alto = 50
botonNuevo.Padre = frame.hWnd
botonNuevo.eventos.Mouse.Clic@ = nuevaVentana@
botonNuevo.construir()
checkboxReemplazar.Texto = "Reemplazar archivo"
checkboxReemplazar.PosX = 10
checkboxReemplazar.PosY = 90
checkboxReemplazar.Ancho = 200
checkboxReemplazar.Alto = 30
checkboxReemplazar.Padre = frame.hWnd
checkboxReemplazar.Deshabilitado = Verdad
checkboxReemplazar.construir()
grupoReemplazar.Texto = "Opciones"
grupoReemplazar.PosX = 10
grupoReemplazar.PosY = 130
grupoReemplazar.Ancho = 270
grupoReemplazar.Alto = 50
grupoReemplazar.Padre = frame.hWnd
grupoReemplazar.construir()
radioReemplazar.Texto = "Reemplazar archivo"
radioReemplazar.PosX = 20
radioReemplazar.PosY = 145
radioReemplazar.Ancho = 110
radioReemplazar.Alto = 30
radioReemplazar.Padre = frame.hWnd
radioReemplazar.construir()
radioNoReemplazar.Texto = "No reemplazar archivo"
radioNoReemplazar.PosX = 140
radioNoReemplazar.PosY = 145
radioNoReemplazar.Ancho = 130
radioNoReemplazar.Alto = 30
radioNoReemplazar.Padre = frame.hWnd
radioNoReemplazar.construir()
grupoReemplazar.cerrar()
barraProgresoTest.PosX = 10
barraProgresoTest.PosY = 190
barraProgresoTest.Ancho = 150
barraProgresoTest.Alto = 30
barraProgresoTest.Padre = frame.hWnd
barraProgresoTest.construir()
barraProgresoTest.empezar(ProgresoBarra@)
etiquetaProgreso.Texto = "0 %"
etiquetaProgreso.PosX = 10
etiquetaProgreso.PosY = 230
etiquetaProgreso.Ancho = 150
etiquetaProgreso.Alto = 30
etiquetaProgreso.Padre = frame.hWnd
etiquetaProgreso.construir(SS_CENTER)
barraProgresoMarquee.PosX = 170
barraProgresoMarquee.PosY = 190
barraProgresoMarquee.Ancho = 150
barraProgresoMarquee.Alto = 30
barraProgresoMarquee.Padre = frame.hWnd
barraProgresoMarquee.construir(PBS_MARQUEE)
barraProgresoMarquee.Marquee = 20
barraProgresoVertical.PosX = 330
barraProgresoVertical.PosY = 70
barraProgresoVertical.Ancho = 30
barraProgresoVertical.Alto = 150
barraProgresoVertical.Padre = frame.hWnd
barraProgresoVertical.construir(PBS_VERTICAL)
barraProgresoVertical.empezar(ProgresoBarraVertical@)
cajaTextoPrueba.Texto = "Holaa"
cajaTextoPrueba.PosX = 10
cajaTextoPrueba.PosY = 270
cajaTextoPrueba.Ancho = 150
cajaTextoPrueba.Alto = 20
cajaTextoPrueba.Padre = frame.hWnd
cajaTextoPrueba.construir()
cajaTextoPrueba.Limite = 10
cajaTextoContra.Texto = "Password"
cajaTextoContra.PosX = 170
cajaTextoContra.PosY = 270
cajaTextoContra.Ancho = 150
cajaTextoContra.Alto = 20
cajaTextoContra.Padre = frame.hWnd
cajaTextoContra.construir(ES_PASSWORD)
cajaTextoContra.ContraseñaCaracter = ASCII("+")
frame.mostrar()
'Pausar(2500)
'Mensaje("Cambio")
'etiquetaElección.cambiarTexto("Groo")
frame.correr()
Proc nuevaVentana NoResultado
frameNuevo.mostrar()
frameNuevo.correr()
FinProc
Proc ProgresoBarra():Entero NoResultado
Var rango:PBRANGE
Var i:Entero
rango = barraProgresoTest.Rango
Mientras i <= rango.iHigh
barraProgresoTest.Progreso = i
'etiquetaProgreso.cambiarTexto(EntCad(barraProgresoTest.Progreso) + " %")
Pausar(50)
i = i + 1
FinMientras
barraProgresoMarquee.MarqueeStop
FinProc
Proc ProgresoBarraVertical():Entero NoResultado
Var rango:PBRANGE
Var i:Entero
rango = barraProgresoVertical.Rango
Mientras i <= rango.iHigh
barraProgresoVertical.Progreso = i
Pausar(150)
i = i + 1
FinMientras
FinProc
Destruir listViewTest
Destruir cajaTextoContra
Destruir cajaTextoPrueba
Destruir barraProgresoVertical
Destruir barraProgresoMarquee
Destruir barraProgresoTest
Destruir comboboxOpciones
Destruir etiquetaNuevo
Destruir etiquetaProgreso
Destruir etiquetaElección
Destruir radioNoReemplazar
Destruir radioReemplazar
Destruir checkboxReemplazar
Destruir grupoReemplazar
Destruir botonNuevo
Destruir botonExaminar
Destruir frameNuevo
Destruir frame
OJO:El proyecto debe tener un archivo .manifest para su correcto funcionamiento por ende crean un archivo con: "el nombre de su ejecutable" seguido de ".exe.manifest"
Y ponen esto de contenido:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="CramelFrame"
type="win32"
/>
<description></description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Descarga de los componentes
Descarga (https://mega.nz/#!yFIyhJbY!HaWXgyHRZ9spGEWJ_1cuP8xIysbAUsMro1kYrbBIXUY) -> Descargan el archivo, lo descomprimen y lo pegan en el directorio de las Libs
1 de julio del 2017
- Se paso a crear una clase para cada componente, como para la ventana
- Corregido error en los eventos del botón
- Actualizada para la versión 2.0.362 - No funciona en anteriores
5 de julio del 2017
- Se agregó un nuevo componente, el Listview
- Se corrigió errores en la clase Información
- Errores en el componente CMLFrame arreglado
Cualquier sugerencia, o error, comenten.
Si quieren que haga algún componente personalizado para Cramel comenten.