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é :) y el control se ve de esta manera:

Image

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
Esto? No creo sea la misma cosa,

http://forums.fivetechsupport.com/viewtopic.php?f=3&t=40923

Saludos.

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

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

Code: Select all | Expand

::l3D:= .t.
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

Code: Select all | Expand

oTag:Set3DLook(.t.)

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

Muchas gracias a todos por vuestra ayuda !!

Saludos,