| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
edwinhp2 Lt JG

Registrado: 19 Nov 2005Mensajes: 67
|
Publicado: Vie 14 Ago, 2009 4:45 pm Asunto: Color del borde del TPanel |
|
|
Hola compañeros,
¿ Alguien sabe si hay forma de ponerle color del borde de un TPanel ?
Saludos |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Sab 15 Ago, 2009 12:46 pm Asunto: |
|
|
Tendrías que crear un nuevo componente que descienda de TPanel y reescribir su método Paint.. o bien puedes interceptar el WM_PAINT del panel del siguiente modo:
- Añade la siguiente clase antes de la clase del Form donde tengas el panel:
| Código: | class InterceptaPaint
{
TWndMethod oldWindowProc;
TForm* form_;
TControl* control_;
void __fastcall leoWindowProc(TMessage& msg)
{
switch (msg.Msg)
{
case WM_PAINT:
oldWindowProc(msg);
form_->OnPaint(control_);
return;
case WM_DESTROY:
control_->WindowProc = oldWindowProc;
}
oldWindowProc(msg);
}
public:
InterceptaPaint(TForm* form, TControl* control)
: form_(form), control_(control)
{
oldWindowProc = control->WindowProc;
control->WindowProc = leoWindowProc;
}
~InterceptaPaint()
{
control_->WindowProc = oldWindowProc;
}
}; |
- En la parte privada del Form declara lo siguiente por ejemplo:
| Código: | InterceptaPaint ipt; |
- En el constructor de ese Form:
| Código: | _fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
/* Añade la siguiente línea -->> */ , ipt(this, Panel1)
{
//...
} |
- Y finalmente en el evento "OnPaint" del Form:
| Código: | if (Sender == Panel1)
{
TControlCanvas* canvas = new TControlCanvas;
canvas->Control = Panel1;
// Ahora podemos usar 'canvas' para pintar dentro del panel
canvas->Brush->Color = clRed;
canvas->FrameRect(Panel1->ClientRect);
// ...
delete canvas;
} |
Espero que se haya entendido el ejemplo...
(Este mismo método para interceptar WM_PAINT lo puedes usar con cualquier componente) |
|
| Volver arriba |
|
 |
edwinhp2 Lt JG

Registrado: 19 Nov 2005Mensajes: 67
|
Publicado: Dom 16 Ago, 2009 1:55 pm Asunto: |
|
|
_Leo:
Si entendí perfectamente el código, voy a irme por crear mejor un nuevo componente para tenerlo para futuras aplicaciones.
Si tengo dudas te estaré molestando, jejeje, mil gracias como siempre.
Saludos
Edwin |
|
| Volver arriba |
|
 |
|