Page 1 of 1
Borde plano en custom control
Posted: Sat Dec 18, 2021 4:49 pm
by José Luis Sánchez
Hola a todos,
en mis programas utilizo la clase TTagEver -
https://github.com/JoseluisSanchez/TTagEver - que incorporo en los díalogos como un custom control de esta manera:
CONTROL "", 110, "TTagEver", 0x50A10000, 8, 8, 245, 90
Es decir, en el apartado Style del control indico 0x50A10000 - que confieso que ni se lo que significa ni de donde lo saqué
![Smile :)](./images/smilies/icon_smile.gif)
y el control se ve de esta manera:
![Image](https://www.alanit.com/wp-content/uploads/2021/12/TTagever.png)
Como podeis ver, el campo donde van las etiquetas tiene efecto 3D y me gustaría que el borde fuera plano como el resto de los controles. ¿ Sabéis cómo lo puedo hacer ? Creo que es algo del estilo del control, pero ni idea de qué valor utilizar.
Saludos,
Re: Borde plano en custom control
Posted: Sat Dec 18, 2021 5:39 pm
by Antonio Linares
José Luis,
La primera idea:
usar Spy++ que viene con Visual Studio Community para comparar los estilos de esos controles
Re: Borde plano en custom control
Posted: Sat Dec 18, 2021 5:41 pm
by Antonio Linares
Otra opción:
Usar el editor de recursos de Visual Studio Community para revisar los estilos del recurso
También podrias hacerlo usando ResEdit ó PellesC editor de recursos
Re: Borde plano en custom control
Posted: Sat Dec 18, 2021 5:43 pm
by Antonio Linares
En estos foros buscar por 0x50A10000 y tienes algunos mensajes pero no creo que aclaren lo que buscas
Re: Borde plano en custom control
Posted: Sat Dec 18, 2021 9:47 pm
by karinha
Re: Borde plano en custom control
Posted: Sun Dec 19, 2021 3:27 pm
by José Luis Sánchez
Gracias por la contestación.
En la clase original de Paco García el estilo es:
::nStyle = nOR( WS_CHILD, WS_VISIBLE, WS_CLIPSIBLINGS, WS_CLIPCHILDREN, WS_TABSTOP, WS_VSCROLL, WS_BORDER )
Probando a quitar el WS_BORDER me queda el control ... sin el borde. De esta manera:
![Image](https://www.alanit.com/wp-content/uploads/2021/12/TTagever2.png)
y en cuanto meto el WS_BORDER el borde me lo pinta en 3D que es lo que no quiero.
Estoy viendo que si abro el .rc con VSCode puedo indicar el estilo con
CONTROL "", 106, "TTagEver", WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_TABSTOP, 50, 85, 256, 33
y luego con ResEdit lo transforma en la cadena hexadecimal apropiada. Muy cómodo para hacer probaturas.
Saludos,
Re: Borde plano en custom control
Posted: Sun Dec 19, 2021 3:28 pm
by José Luis Sánchez
¿ No irán los tiros por el .manifest ?
Lo digo porque los controles normales sí cogen borde plano con el manifest pero sin él salen como en 3D.
Saludos,
Re: Borde plano en custom control
Posted: Sun Dec 19, 2021 5:55 pm
by Antonio Linares
Posiblemente
de todas formas con el Spy++ puedes comparar los estilos y ver que falta, si es que falta algo
Otra opción es que tu pintes el recuadro gris que falta, pero eso es un tanto "chapu", lo suyo es que se pinte por el manifest
Re: Borde plano en custom control
Posted: Mon Dec 20, 2021 10:04 am
by hmpaquito
José Luis,
Sospecho que necesitas poner un
en ese control. No sé como se incorpora por recursos, nunca utilicé recursos, pero muy probablemente van por ahí los tiros
Tambien chapuceando un poco, en el on init del dialogo podrias poner
Salu2
Re: Borde plano en custom control
Posted: Mon Dec 20, 2021 1:09 pm
by karinha
Paquito, que hace esto?
Code: Select all | Expand
SET 3DLOOK ON
SET MULTIPLE OFF
SetWin95Look(.T.) // -> ???
Regards, saludos.
Re: Borde plano en custom control
Posted: Mon Dec 20, 2021 5:20 pm
by hmpaquito
Perhaps, look like Windows 95
Look at win95lok.c
Re: Borde plano en custom control
Posted: Mon Dec 20, 2021 5:44 pm
by José Luis Sánchez
He conseguido el efecto que quería dejando el control sin borde en los recursos y luego pintando el borde en la propia clase que tiene una data para ello y no lo sabía. Queda de esta manera:
![Image](https://www.alanit.com/wp-content/uploads/2021/12/TTagever3.png)
Muchas gracias a todos por vuestra ayuda !!
Saludos,