Iniciar Sesión

Ver la Versión Completa : [PowerCOBOL] Control OCX ucBOX y ejemplo pwc5


fastpho
3 de agosto de 2022, 15:12
Este es un Control de Usuario realizado en VB6 por Leandro Ascierto , lo converti y modifique a ocx para tener compatibilidad con PowerCobol , se pueden lograr hacer muchas y lograr una interfaz mas moderna.

link : http://leandroascierto.com/blog/836-2/
Se pueden crear varios controles button , label , checkbox , toggle botton , radio button , image tc
Eventos : Click , DobleClick , MouseOver , MouseLeave etc
Propiedades:BackColor , Border , ForeColor , FrontColor , Hotline , Picture
Metodos : PictureFromURL PictureFromPath
ocx: ElsisBoxUpgr.ocx registrarla

Soporta fuentes tipo icofonts : como Segoe MDL2 , IconsFont Awsome
Soporta imagenes de tipo png , jpg etc

Saludos....

Fito
3 de agosto de 2022, 16:06
Muchas gracias. muy buen aporte

Saludos

Fito....

Joseg
4 de agosto de 2022, 15:16
Muito bom!

Paulo
4 de agosto de 2022, 16:24
Obrigado.
Bom trabalho

Joseg
4 de agosto de 2022, 16:25
Este es un Control de Usuario realizado en VB6 por Leandro Ascierto , lo converti y modifique a ocx para tener compatibilidad con PowerCobol , se pueden lograr hacer muchas y lograr una interfaz mas moderna.

link : http://leandroascierto.com/blog/836-2/
Se pueden crear varios controles button , label , checkbox , toggle botton , radio button , image tc
Eventos : Click , DobleClick , MouseOver , MouseLeave etc
Propiedades:BackColor , Border , ForeColor , FrontColor , Hotline , Picture
Metodos : PictureFromURL PictureFromPath
ocx: ElsisBoxUpgr.ocx registrarla

Soporta fuentes tipo icofonts : como Segoe MDL2 , IconsFont Awsome
Soporta imagenes de tipo png , jpg etc

Saludos....

Olá,

Como saber este número:
60619


MOVE 60619 TO "IconCharCode" OF BOX-CHECK1(1)


Quais seriam os números para o exemplo:
CheckBox ON/OFF

Gracias
José

fastpho
4 de agosto de 2022, 17:22
Hola @Joseg , los valores son unicode convertidos a decimal
es decir el valor E700(unicode)(hex) su valor dec es 59136 tipo long para la ocx


IF "IconCharCode" OF BOX-CHECK5 = 59193 THEN *>HEX E739
MOVE 59194 TO "IconCharCode" OF BOX-CHECK5 *>HEX E73A
ELSE
MOVE 59193 TO "IconCharCode" OF BOX-CHECK5 *>HEX E739
END-IF.


En este link estan los valores del fuente Segoe MDL2 Assets icons
Segoe MDL2 Assets icons - Windows apps | Microsoft Docs (https://docs.microsoft.com/en-us/windows/apps/design/style/segoe-ui-symbol-font#pua-e700-e900)

Saludos ....

Joseg
4 de agosto de 2022, 18:35
Hola @Joseg , los valores son unicode convertidos a decimal
es decir el valor E700(unicode)(hex) su valor dec es 59136 tipo long para la ocx


IF "IconCharCode" OF BOX-CHECK5 = 59193 THEN *>HEX E739
MOVE 59194 TO "IconCharCode" OF BOX-CHECK5 *>HEX E73A
ELSE
MOVE 59193 TO "IconCharCode" OF BOX-CHECK5 *>HEX E739
END-IF.


En este link estan los valores del fuente Segoe MDL2 Assets icons
Segoe MDL2 Assets icons - Windows apps | Microsoft Docs (https://docs.microsoft.com/en-us/windows/apps/design/style/segoe-ui-symbol-font#pua-e700-e900)

Saludos ....


Existe alguma possibilidade da janela ser Moveable:
Indicates whether the form is moveable when the title bar is dragged or the system menu Move function is selected. This corresponds to the Moveable property.


"Style" sem "TitleBar" penso que não há alternativa, mas se houvesse seria interessante, as janelas ficavam mais "modernas" !!!

Gracias.

fastpho
4 de agosto de 2022, 20:08
@Joseg Se puede mover , arrastrar y soltar el formulario perfectamente desde Box-LBLTITULO = Titulo con la siguientes lineas
Declarar en el WORKING-STORAGE

*-----RUTINAS PARA MOVER LA FORM SIN TITULO
01 GLOBAL-DATA GLOBAL.
02 G-DRAG-START PIC 1(1) BIT.
88 G-IS-DRAG-START VALUE B"1".
01 tempx PIC S9(9) COMP-5 IS GLOBAL.
01 tempy PIC S9(9) COMP-5 IS GLOBAL.
01 new-tempx PIC S9(9) COMP-5 IS GLOBAL.
01 new-tempy PIC S9(9) COMP-5 IS GLOBAL.
01 ScreenLeft PIC S9(9) COMP-5 IS GLOBAL.
01 ScreenTop PIC S9(9) COMP-5 IS GLOBAL.
01 ScreenWidth PIC S9(9) COMP-5 IS GLOBAL.
01 ScreenHeight PIC S9(9) COMP-5 IS GLOBAL.
01 ScreenScale PIC S9(4) COMP-5 IS GLOBAL.
01 W-BUTTON PIC S9(4) COMP-5 IS GLOBAL.
01 W-BOOL REDEFINES W-BUTTON IS GLOBAL.
02 FILLER PIC 1(5) BIT.
02 W-BUTTON-CENTER PIC 1(1) BIT.
02 W-BUTTON-RIGHT PIC 1(1) BIT.
* 88 W-IS-BUTTON-RIGHT VALUE B"0".
02 W-BUTTON-LEFT PIC 1(1) BIT.
88 W-IS-BUTTON-LEFT VALUE B"1".
02 FILLER PIC 1(8) BIT.
*------------------------------------------------------

En el Evento Box-LBLTITULO-MouseUp

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
01 POW-BUTTON PIC S9(4) COMP-5.
01 POW-SHIFT PIC S9(4) COMP-5.
01 POW-X COMP-1.
01 POW-Y COMP-1.
PROCEDURE DIVISION USING POW-BUTTON POW-SHIFT POW-X POW-Y.
IF G-IS-DRAG-START THEN
MOVE B"0" TO G-DRAG-START
move 0 to "MousePointer" OF pow-self
end-if.

En el Evento Box-LBLTITULO-MouseDown

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
01 POW-BUTTON PIC S9(4) COMP-5.
01 POW-SHIFT PIC S9(4) COMP-5.
01 POW-X COMP-1.
01 POW-Y COMP-1.
PROCEDURE DIVISION USING POW-BUTTON POW-SHIFT POW-X POW-Y.

move POW-BUTTON to W-BUTTON.
move pow-x to tempx.
move pow-y to tempy.
IF W-IS-BUTTON-LEFT THEN
MOVE B"1" TO G-DRAG-START
end-if.

En el Evento Box-LBLTITULO-MouseMove

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
01 POW-BUTTON PIC S9(4) COMP-5.
01 POW-SHIFT PIC S9(4) COMP-5.
01 POW-X COMP-1.
01 POW-Y COMP-1.
PROCEDURE DIVISION USING POW-BUTTON POW-SHIFT POW-X POW-Y.

IF G-IS-DRAG-START THEN
compute new-tempy = "Top" OF pow-self + pow-y - tempy
compute new-tempx = "Left" OF pow-self + pow-x - tempx
move new-tempy to "Top" OF pow-self
move new-tempx to "Left" OF pow-self
MOVE 2 TO "MousePointer" OF POW-SELF
END-IF.

Estas rutinas tambien las podes colocar en los eventos MouseDown - MouseUp - MouseMove del formulario para mover y soltar
desde el formulario
Saludos ........

Joseg
5 de agosto de 2022, 13:49
@Joseg Se puede mover , arrastrar y soltar el formulario perfectamente desde Box-LBLTITULO = Titulo con la siguientes lineas
Declarar en el WORKING-STORAGE

*-----RUTINAS PARA MOVER LA FORM SIN TITULO
01 GLOBAL-DATA GLOBAL.
02 G-DRAG-START PIC 1(1) BIT.
88 G-IS-DRAG-START VALUE B"1".
01 tempx PIC S9(9) COMP-5 IS GLOBAL.
01 tempy PIC S9(9) COMP-5 IS GLOBAL.
01 new-tempx PIC S9(9) COMP-5 IS GLOBAL.
01 new-tempy PIC S9(9) COMP-5 IS GLOBAL.
01 ScreenLeft PIC S9(9) COMP-5 IS GLOBAL.
01 ScreenTop PIC S9(9) COMP-5 IS GLOBAL.
01 ScreenWidth PIC S9(9) COMP-5 IS GLOBAL.
01 ScreenHeight PIC S9(9) COMP-5 IS GLOBAL.
01 ScreenScale PIC S9(4) COMP-5 IS GLOBAL.
01 W-BUTTON PIC S9(4) COMP-5 IS GLOBAL.
01 W-BOOL REDEFINES W-BUTTON IS GLOBAL.
02 FILLER PIC 1(5) BIT.
02 W-BUTTON-CENTER PIC 1(1) BIT.
02 W-BUTTON-RIGHT PIC 1(1) BIT.
* 88 W-IS-BUTTON-RIGHT VALUE B"0".
02 W-BUTTON-LEFT PIC 1(1) BIT.
88 W-IS-BUTTON-LEFT VALUE B"1".
02 FILLER PIC 1(8) BIT.
*------------------------------------------------------

En el Evento Box-LBLTITULO-MouseUp

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
01 POW-BUTTON PIC S9(4) COMP-5.
01 POW-SHIFT PIC S9(4) COMP-5.
01 POW-X COMP-1.
01 POW-Y COMP-1.
PROCEDURE DIVISION USING POW-BUTTON POW-SHIFT POW-X POW-Y.
IF G-IS-DRAG-START THEN
MOVE B"0" TO G-DRAG-START
move 0 to "MousePointer" OF pow-self
end-if.

En el Evento Box-LBLTITULO-MouseDown

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
01 POW-BUTTON PIC S9(4) COMP-5.
01 POW-SHIFT PIC S9(4) COMP-5.
01 POW-X COMP-1.
01 POW-Y COMP-1.
PROCEDURE DIVISION USING POW-BUTTON POW-SHIFT POW-X POW-Y.

move POW-BUTTON to W-BUTTON.
move pow-x to tempx.
move pow-y to tempy.
IF W-IS-BUTTON-LEFT THEN
MOVE B"1" TO G-DRAG-START
end-if.

En el Evento Box-LBLTITULO-MouseMove

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
01 POW-BUTTON PIC S9(4) COMP-5.
01 POW-SHIFT PIC S9(4) COMP-5.
01 POW-X COMP-1.
01 POW-Y COMP-1.
PROCEDURE DIVISION USING POW-BUTTON POW-SHIFT POW-X POW-Y.

IF G-IS-DRAG-START THEN
compute new-tempy = "Top" OF pow-self + pow-y - tempy
compute new-tempx = "Left" OF pow-self + pow-x - tempx
move new-tempy to "Top" OF pow-self
move new-tempx to "Left" OF pow-self
MOVE 2 TO "MousePointer" OF POW-SELF
END-IF.

Estas rutinas tambien las podes colocar en los eventos MouseDown - MouseUp - MouseMove del formulario para mover y soltar
desde el formulario
Saludos ........

Perfeito :)

Todos os OCX deste site: http://leandroascierto.com/blog/category/ocx/
são muito interessantes !!!!

Nitzer
8 de agosto de 2022, 10:15
Felicidades por el trabajo, impresionante aporte.

Paulo
8 de agosto de 2022, 18:41
Caro fastpho
Tenho uma duvida:
Tentei modificar o tamanho do icon, vi todas as propriedades, mas não consegui.
Por exemplo o objecto Box-BTNPRINT tem o icon de tamanho maior que o objecto Box-LBLUSUARIO.
Pode ajudar ?
Obrigado

fastpho
8 de agosto de 2022, 19:04
Hola @Paulo para poder cambiar el tamaño de Iconfont tenes que entrar en las propiedades del objeto , tambien podes cambiar los colores , asignar un "caption" , ponerle una imagen
Saludos...

fastpho
9 de agosto de 2022, 13:44
Hola @Paulo para poder cambiar el tamaño de Iconfont tenes que entrar en las propiedades del objeto , tambien podes cambiar los colores , asignar un "caption" , ponerle una imagen
Saludos...

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TAMAÑO-ICONFONT PIC S9(9) COMP-5.
PROCEDURE DIVISION.
MOVE 20 TO TAMAÑO-ICONFONT.
MOVE TAMAÑO-ICONFONT TO "Size" OF "IconFont" OF Box-BTNPRINT.

Paulo
9 de agosto de 2022, 18:25
Gracias fastpho