[Cramel] Componentes para Ventanas | 5 de Julio del 2017

Iniciado por BlackBlex, Abril 10, 2017, 04:25:47 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Abril 10, 2017, 04:25:47 PM Ultima modificación: Julio 05, 2017, 09:22:50 PM por BlackBlex
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

    • Radio
    • CheckBox
    • GroupBox
  • 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.




Código: text
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:
Código: text
<?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



No tienes permitido ver los links. Registrarse o Entrar a mi cuenta -> 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.