| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
napo Cdt

Registrado: 09 Mar 2007Mensajes: 24
|
Publicado: Lun 15 Jun, 2009 3:11 pm Asunto: Color y texto en las pestañas de un PageControl |
|
|
Buenos días,
en el foro de Delphi he encontrado la manera de hacer algon que quiero hacer yo en C++ Builder.
Copio el tema a ver si alguien sabe como hacer esto en C++. Lo he intentado pero no lo consigo.
Gracias
Escrito por "Bicho" en clubdelphi.com
_________________________________________________________________________
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;
___________________________________________________________________________ |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 15 Jun, 2009 4:00 pm Asunto: |
|
|
Hola, en el evento OnDrawTab:
| Código: | TCanvas* canvas = Control->Canvas;
canvas->FillRect(Rect);
canvas->Font->Color = clBlack; //con éste color ya se verá, ves
//jugando con el que te guste más
canvas->TextOut(Rect.Left+2,Rect.Top+2, PageControl1->Pages[TabIndex]->Caption);
|
|
|
| Volver arriba |
|
 |
napo Cdt

Registrado: 09 Mar 2007Mensajes: 24
|
Publicado: Lun 15 Jun, 2009 5:05 pm Asunto: |
|
|
Muchas gracias,
funciona perfectamente.
Un saludo |
|
| Volver arriba |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Sab 31 Oct, 2009 10:29 pm Asunto: que extraño |
|
|
estimados.
he puesto codigo en mi pagecontro en el metodo que indican y su codigo, lo tengo en modo tabbutton y no me cambia la fuente del page activo. el pagecontrol debe tener alguna propiedad activa para que pueda tomar el cambio de font al momento de estar en una hoja activa?.
puse un punto de seguimiento en evento de pintado y nunca se mete. que extraño.... alguien podria ayudarme al respecto?. |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Dom 01 Nov, 2009 2:51 am Asunto: |
|
|
Tienes que tener la propiedad OwnerDraw = true
Pruebalo así:
| Código: | void __fastcall TForm1::PageControl1DrawTab(TCustomTabControl *Control,
int TabIndex, const TRect &Rect, bool Active)
{
TCanvas* canvas = Control->Canvas;
canvas->Brush->Color = clLime;
canvas->FillRect(Rect);
canvas->Font->Color = clRed; //con éste color ya se verá, ves
//jugando con el que te guste más
canvas->TextOut(Rect.Left+2,Rect.Top+2, PageControl1->Pages[TabIndex]->Caption);
}
|
Saludos. |
|
| Volver arriba |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Lun 02 Nov, 2009 5:50 pm Asunto: muchas gracias |
|
|
muchas gracias, un pequeño detalle hace grandes diferencias  |
|
| Volver arriba |
|
 |
|