Tema: Eventos
Ver Mensaje Individual
  #5  
Antiguo 24-03-2009
Nove bb net Nove bb net is offline
Registrado
 
Registrado: mar 2009
Posts: 8
Reputación: 0
Nove bb net Va por buen camino
Gracias a todos.

Realmente estaba empeñado, en que el ordn de construccion era distinto, pero.

Realmente solo pense en el formulario inicial, y no en otros secundarios, pero

Creo que esto funciona en todos los casos, por lo menos en los que he probado.

Código Delphi [-]
  Tcustompanelcentrado=class(tcustompanel)
  private
    foncanresizedelform:controls.tcanresizeevent;
    finiciado:boolean;
    procedure centrar;
  protected
  public
    constructor create(aowner:tcomponent); override;
    procedure paint; override;
    procedure canresizecompo(Sender: TObject; var NewWidth,
                             NewHeight: Integer; var Resize: Boolean);
  end;

  tpanelcentrado=class(tcustompanelcentrado);

implementation

constructor tcustompanelcentrado.create(aowner:tcomponent);
begin
  inherited create(aowner);
  finiciado:=false;
end;

procedure tcustompanelcentrado.paint;
var misterx:tcontrol;
begin
  if not finiciado then
    begin
      if not (csDesigning in ComponentState) then
        begin
          misterx:=self.Parent;
          while not(misterx is tform) do
            misterx:=misterx.Parent;

          if assigned(tform(misterx).OncanResize) then
            begin
              foncanresizedelform:=tform(misterx).oncanresize;
            end;
          tform(misterx).OnCanResize:=canresizecompo;

          centrar;

          finiciado:=true;
        end;
    end;
    inherited;
end;

procedure tcustompanelcentrado.centrar;
begin
  top:=(self.Parent.ClientHeight-height) div 2;
  left:=(self.Parent.ClientWidth-width) div 2;
end;

procedure tcustompanelcentrado.CanResizecompo(Sender: TObject; var NewWidth,
          NewHeight: Integer; var Resize: Boolean);
begin
  if assigned(foncanresizedelform) then
    foncanresizedelform(sender,newwidth,newheight,resize);
  centrar;
end;

perdon por no tenerlo puesto en una undiad independiente, es que hay otros compos.

Saludos.
Nove
Responder Con Cita