Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Color en las pestañas de un PageControl (https://www.clubdelphi.com/foros/showthread.php?t=36800)

miguel555666777 24-10-2006 22:41:26

Color en las pestañas de un PageControl
 
Buenas, amigos y amigas.

Lo primero deciros que soy nuevo en el foro y tb keria felicitaros por tan buen foro.

Me ha ocurrido una complicación y estoy loco dando vueltas.
No puedo cambiar el color de las pestañas de un PageControl. Si he conseguido camibiar el contenido, pero las pequeñas pesañas es imposible, por favor ayudaa..

ah ya de paso, ¿sabeis insertar una imagen en un TButton?.

Saludos

kuan-yiu 25-10-2006 10:51:49

Olvídate, el PageControl da problemas con el color, tiene un fallo en el borde y en las pestañas. Yo opté por ocultar las pestañas (se accede a cada sección usando botones) y cubrir los bordes con minipaneles (chapucero pero eficaz).

Los TButton no admiten imágenes, debes usar TBitBtn para poder usarlas.

Bicho 25-10-2006 11:17:05

Cita:

Empezado por kuan-yiu
Olvídate, el PageControl da problemas con el color, tiene un fallo en el borde y en las pestañas. Yo opté por ocultar las pestañas (se accede a cada sección usando botones) y cubrir los bordes con minipaneles (chapucero pero eficaz).

Hola, el PageControl, coge el color de su objeto parent de forma automática. Así pues, si le cambias el color al form o el Panel donde esté metido el PageControl, éste coge su mismo color. Lo que pasa, es que, de primera, las pestañas no cogerán ese color. Debes poner la propiedad OwnerDraw del PageControl a True y ya todo tendrá el mismo color.
Que ocurre ahora, que no se ven los captions de las pestañas, no? Muy fácil, dibujamos ese texto sobre el canvas del panel, de esta manera (sobre el evento DrawTab del PageCotrol):

Código Delphi [-]
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
  with PageControl1.canvas do begin
    fillrect(rect);
    font.Color := clBlack; //con éste color ya se verá, ves jugando con el que te guste más
    textout(rect.left+2,rect.top+2,PageControl1.Pages[TabIndex].Caption);
  end;
end;

Espero te sirva.

Saludos

miguel555666777 25-10-2006 18:59:50

Gracias por el trozo de código.

Lo implementé y parecia que funcionariaba totalmente, pero para mi programa que pasa de la pestaña 1 a la pestaña 2 a través de un TButton, no se puede usar ya que me modifica el nombre de la pestaña 1 y la pestaña 2 a la vez.

En fin, para otra gente que quiera hacer esto seguro que le sirve

Muchas graciassss

dec 25-10-2006 19:27:28

Hola,

No sé a qué te refieres conque "modifica el nombre de la pestaña 1 y la pestaña 2 a la vez"... yo he probado como dice el compañero y puedo cambiar la pestaña "activa" mediante "un botón" sin que ocurra nada extraño... que yo vea, vamos. ;)

kuan-yiu 26-10-2006 13:50:39

Bicho, yo en su momento hice casi todas las cosas que comentas y me ocurría que el borde del componente tenía un problema de refresto: se cambiaba todo salvo ese borde que da el efecto 3D.
Cuando obligaba al componente a redibujarse por completo (al minimizar y maximizar o al aparecer algo que lo cubría temporalmente) entonces sí que se coloreaba correctamente el borde :(

Aún hoy creo que fue un bug del componente o una interacción indeseable entre algo de lo que tenía instalado en ese proyecto (que era mucho).

Bicho 26-10-2006 13:59:27

Yo la verdad es que con éste código no he tenido nunca ningún problema, y lo estoy usando en bastantes programas, ya que en mi trabajo, suelen ser bastante parecidos y para diferenciarles pues "los pinto de colores".

Aquí uso Delphi 6 y no tengo componentes de terceros.

Saludos

kuan-yiu 21-01-2020 15:30:25

Ya ha pasado tiempo desde este hilo.
De nuevo a vueltas con el mismo problema me ha aparecido en una búsqueda este tema y no quiero dejar de comentar aquí, para quien pueda interesar, que todos los problemas de aspecto que en su día me dio PageControl, los he solucionado con JvPageControl (JEDI VCL).
ClientBorderWidth y HideAllTabs son las propiedades que me hacen la vida más fácil :)

Al González 31-01-2020 17:08:23

¡Kuan-yiu! Un verdadero gusto leerte de nuevo. :):):)

kuan-yiu 19-02-2020 12:29:28

Gracias, gracias. Aunque no sea de las que más aporta sino de las que más consulta.


La franja horaria es GMT +2. Ahora son las 02:08:30.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi