Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cambiar la pestaña del PageControl (https://www.clubdelphi.com/foros/showthread.php?t=40795)

Frank 27-02-2007 11:24:04

Cambiar la pestaña del PageControl
 
Hola !!
He estado mirando por el foro, pero no he encontrado , lo que necesito. Quisiera saber, como puedo cambiar, el color del fondo y de la fuente, de las pestañas de un pagecontrol, sin que sea una de las pestañas activas.
Alguien tiene una idea ? gracias

Bicho 27-02-2007 11:47:04

Hola,

yo uso lo siguiente:

Código Delphi [-]
procedure Tform1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
  with PageControl1.canvas do begin
    fillrect(rect);
    brush.style := bsClear;
    font.Color := clWhite;
    textout(rect.left+3,rect.top+3,PageControl1.Pages[TabIndex].Caption);
    font.Color := clBlack;
    textout(rect.left+2,rect.top+2,PageControl1.Pages[TabIndex].Caption);
  end;
end;

Saludos

Frank 27-02-2007 12:43:25

Es eso mas o menos
 
Es eso mas o menos lo que estoy buscando, pero lo que me gustaria, es poder cambiar, la apaciencia de la pestaña, en tiempo de ejecucion, de una de todas las pestañas, por ejemplo, que una de todas tenga el fondo en rojo y la fuente en blanco, tienes alguna idea de como puede hacerse ?

Gracias, por todo.

dec 27-02-2007 12:53:18

Hola,

Cuestión de condiciones, ¿no? Puedes jugar con el "Caption" de la pestaña, o su "Index".

El caso es que al cabo quedaría en el evento "OnDrawTab" algo similar a lo siguiente:

Código Delphi [-]
begin
  if TabIndex = 0 then
  begin
    // Aquí pintamos la pestaña "0" de una forma...
  end;
  // Y aquí podríamos pintar el resto de otra forma...
end;

Bicho 27-02-2007 12:54:16

Hola,

procedure Tform1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);

El último parámetro del procedimiento te indica si la pestaña a dibujar es la activa.

Probando con algo así me funciona (el efecto no es muy bueno a la vista pero sirve, habría que retocarlo)

Código Delphi [-]
procedure Tform1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
  with PageControl1.canvas do begin
    fillrect(rect);
    brush.style := bsClear;
    if Active then font.Color := clRed
    else font.Color := clwhite;
    textout(rect.left+3,rect.top+3,PageControl1.Pages[TabIndex].Caption);
    if Active then font.Color := clGreen
    else font.Color := clBlack;
    textout(rect.left+2,rect.top+2,PageControl1.Pages[TabIndex].Caption);
  end;
end;

Saludos

P.d: y se me olvidaba, gracias por el apunte dec. tambien puedes usar el TabIndex para usar la pestaña que quieras

gaunmanuel 29-09-2015 20:57:09

Hola que tal,
Por mas que hago este ejemplo no me funciona, el evento onDrawTab nunca se dispara y nunca cambia el color ni nada.
alguna idea?

ecfisa 29-09-2015 21:05:46

Hola gaunmanuel.

Para que se dispare el evento OnDrawTabt la propiedad OwnerDraw del TPageControl debe tener el valor True.

Saludos :)

gaunmanuel 29-09-2015 21:09:06

hola ecfisa.
Si, esa propiedad ya se la especifique en TRUE, pero nada, lo único que hace al ponerla en TRUE simplemente desaparece el caption y nunca mas se visualiza.

ecfisa 29-09-2015 21:19:59

Hola gaunmanuel.

Probé el código publicado por Bicho y funciona correctamente en Windows 32 bits.

Si estas usando Windows 64 bits, revisa este enlace: TPageControl OnDrawTab and Win64.

Saludos :)

gaunmanuel 29-09-2015 21:28:14

muy bien, voy a realizar lo que dice el link, ya que si estoy usando windows 8.1 de 64 bits

gracias.

dec 29-09-2015 22:35:32

Hola,

También podría interesarte usar algún componente de terceros, por ejemplo, los componentes Cindy incluyen, entre otros, un componente "PageControl" con muchas posibilidades estéticas.


La franja horaria es GMT +2. Ahora son las 20:27:02.

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