Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Capturando cambios de altura en un Panel (https://www.clubdelphi.com/foros/showthread.php?t=34569)

chrids506 14-08-2006 17:44:53

Capturando cambios de altura en un Panel
 
Saludos a todos, a ver si me pueden ayudar, lo que quiero hacer es que cuando el componente, en este caso un decendiente de TPanel, cambie su tamaño este llame a un procedimiento, por ejemplo: que al cambiar la altura, los componentes adentro del panel tambien la cambien

Gracias de antemano
Chrids

Lepe 14-08-2006 19:13:50

Más o menos esto:

Código Delphi [-]
TMiPanel = class (TPanel)
  private
    FHeight :integer;
    procedure SetHeight(value:integer);
  protected
    procedure DoResizeControls;
  published
    property Height: integer read FHeight write SetHeight;
end;

procedure TMiPanel.SetHeight(value:integer);
begin
  if FHeight <> Value then // si la altura es distinta de la que tiene ahora mismo.
  begin
     FHeight:= Value;
     DoResizeControls;
     Invalidate; //hacemos que se repinte el panel.
  end;
end;

Cada vez que el usuario modifique la altura, bien por el inspector de objetos, o bien por código en ejecución, se ejecutará el procedimiento SetHeight, que a su vez llama al encargado de redimiensionar los controles que tiene dentro.


Saludos

chrids506 14-08-2006 19:17:37

Muchas gracias eso era lo que ocupaba, solo una pregunta que es este procedimiento?
Código Delphi [-]
procedure DoResizeControls;

Lepe 15-08-2006 11:57:06

En principio, sería el procedimiento que se encarga de redimensionar los controles que haya dentro de "TMiPanel".

Normalmente, cuando se hace un componente, se hace de esa forma, es decir, se crea un procedimiento protegido que realiza la acción principal. Si alguien tiene que derivar de TMiPanel para añadir una nueva funcionalidad, solamente debe sobreescribir ese método y listo.

En realidad, debería estar declarado como:
Código Delphi [-]
procedure DoResizeControls;virtual;
Para que pueda ser sobreescrito (override en delphi) por los programadores que deriven de TMiPanel. En realidad es algo más complejo, por eso no añadí información. Dale una visual a las directivas virtual, dynamic, override de la ayuda.

Tratándose de un panel, quizás te sirva el evento OnCanResize, OnResize, etc.

Saludos

chrids506 15-08-2006 14:46:27

Muchisimas gracias por tu tiempo, la verdad es que me has respondido mi duda

Saludos,
Chrids


La franja horaria es GMT +2. Ahora son las 09:27:49.

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