Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Reposicionar componentes al redimensionar formulario (https://www.clubdelphi.com/foros/showthread.php?t=69712)

mcs 03-09-2010 08:29:22

Reposicionar componentes al redimensionar formulario
 
Hola,

Antes de trabajar con Delphi, usaba Java con Swing. En general me gusta más el Delphi, pero hay algo que hecho de menos del Java: los layouts.

La gracia de los layouts (GridBagLayout, TableLayout, etc), es que no se colocan los componentes especificando los píxels, sinó en una posición más bien relativa. Ejemplo del TableLayout: si tenemos 5 componentes horizontales y 3 verticales, el primer componente estaría en la posición (0,0), el componente de la línea superior a la derecha sería el (5,0), etc.

Usando este sistema, tiene la gran ventaja que es el layout el que calcula la posición final (en píxels) del componente. Por tanto, si hacemos más grande un formulario, siempre se mantiene la estructura de los componentes, sin aparecer espacio en blanco en la nueva zona, etc. En otras palabras: que automáticamente se reposicionan y, dependiendo de la configuración de cada componente, se redimensionan.

Y mi pregunta es: hay algun componente (imago que heredado de un TForm o un TPanel) que haga exactamente esto? Más o menos se puede hacer jugando con los "anchor", pero es mucho más complicado y tampoco se consigue lo mismo...

Saludos,

Marc

ecfisa 03-09-2010 11:44:53

Hola mcs.

No conocía ningún componente que hiciera lo que pedias...
Pero me interesó la posibilidad e hice unas pruebas.
Este es el código que me quedó, cuyo mayor mérito no es ser inédito (seguro miles ya lo hayan echo) sino que me llevó muchas pruebas de ensayo error... :)

Tira algunos componentes en un form y agregá esto en el evento OnCanResize.
Código Delphi [-]
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
var
  i:Integer;
begin
  for i:= 0 to ComponentCount - 1 do
  begin
    TControl(Components[i]).Left:= Round(NewWidth * TControl(Components[i]).Left / Width);
    TControl(Components[i]).Top:=  Round(NewHeight * TControl(Components[i]).Top / Height);
  end;
end;

Por favor probalo bién... :rolleyes:

Espero te sirva, a mi me entretuvo un buen rato...:)

Saludos.

FaKWeb 06-09-2010 15:33:50

Buenas a todos, tengo una duda, veo que dieron una solucion al tema, yo solo queria saber si existe algun componente para insertar en el Form, que redimensione y reubique los botones y componentes del formulario. No se si esto es posible, ya que soy nuevo en Delphi. Solo programo en pascal, pero nunca con objetos. Antes, utilizaba Visual BAsic 6 y existia este tipo de componente. Desde ya gracias...

FGarcia 06-09-2010 17:25:35

Si existe!

ResizeKit 2 y algunos mas!

AndyLupa 09-09-2010 19:14:02

Delphi5
 
ResizeKit 2 y algunos mas![/quote]


COMOCES ALGUNO PARA DELPHI5 QUE FUNCIONE BIEN NO SOLO CON COMPONENTES NATIVOS SINO CON COMPONENTES DE TERCEROS?

rrf 09-09-2010 21:52:57

Ecfisa, muchas gracias por tu aportación.

Muy sencillo y práctico y, además, sin componentes externos.

Salu2.

FaKWeb 10-09-2010 04:47:52

Gracias por las respuestas... En la web de Torry, encontre algunos que podrian haberme servido.. Igual, por plena curiosidad proble el ide Delphi 10, y quede totalmente conforme.. Tiene todas esas opciones, de forma nativa, con solo controlar un par de parametros.. Para tenerlo en cuenta a la hora de cambiar el IDE.. Gracias a todos...

edy_aca 12-09-2016 23:35:32

cual es
 
hola cual es el componente que encontraste gracias


La franja horaria es GMT +2. Ahora son las 03:15:36.

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