PDA

Ver la Versión Completa : Color en las pestañas de un PageControl


miguel555666777
24-10-2006, 22:41:26
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
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):

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.