Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-06-2004
vani vani is offline
Miembro
 
Registrado: may 2004
Posts: 20
Poder: 0
vani Va por buen camino
Hola.

Me sumergiré en la implementación del TFrame para buscar una manera....

Gracias por la sugerencia.

Un saludo.
Responder Con Cita
  #2  
Antiguo 28-06-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Prueba redefinir el método CreateWnd del frame así:

Código Delphi [-]
// Obtiene una región rectangular para el control
function GetControlRgn(Control: TControl): HRgn;
var
  Rect: TRect;

begin
  Rect := Control.BoundsRect;
  Result := CreateRectRgn(Rect.Left, Rect.Top, Rect.Right, Rect.Bottom);
end;

procedure TFrame2.CreateWnd;
var
  ControlsRgn: HRgn;
  I: Integer;

begin
  inherited;

  (* 
    Iterar sobre los controles para crear una región que sea
    la unión de sus rectángulos
  *)
  if ControlCount > 0 then
  begin
    ControlsRgn := GetControlRgn(Controls[0]);
    for I := 1 to ControlCount - 1 do
      CombineRgn(ControlsRgn, ControlsRgn, GetControlRgn(Controls[i]), RGN_OR);

    // Asignar la región al frame para que sólo se ocupe de
    // dibujar sobre los controles
    SetWindowRgn(Handle, ControlsRgn, true);
  end;
end;

El único "problema" que hevisto es con controles tipo etiqueta (TLabel, TRadioButton, TCheckBox, etc.) ya que no son controles que "ocupen" todo el rectángulo que los determina.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:19:34.


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
Copyright 1996-2007 Club Delphi