Buenas tardes.
Ando un poco confundido con algo y quizás estoy errando las cosas básicas y no me estoy arreglando bien con lo que quiero hacer.
Resulta que quiero calcular el porcentaje de el tamaño de ocupación de un control en mi form y el porcentaje de posición en X y en Y del mismo objeto.
Según como se me ocurre a mi y voy a tomar como ejemplo un ListBox, debería hacer para el largo
(Listbox.Heigh * Form.Width) / 100
Para el alto
(Listbox.Heigh * Form.Heigh) / 100
Para la posición X
(Listbox.Position.X * Form.Heigh) / 100
Para la posición Y
(Listbox.Position.Y * Form.Width) / 100
Y esto me debería dar los porcentajes que ocupan en mi Form los objetos que pase por esas funciones.
Pero a la hora de querer dar vuelta esos porcentajes y pasarlos a los valores de tamaño y posicion no me dan los mismo numeros.
Alguien puede darme una mano para hacerlo tanto al derecho como al revés?
La idea de sacar los porcentajes para poder hacer que mi form sea usable en cualquier resolución y mantenga el tamaño de los objetos siempre iguales a la vista de diseño.
Les dejo el código que hice a ver si me pueden dar una mano.
Muchas gracias!!!!!
Código Delphi
[-]unit PosicionYPorcentaje;
interface
uses System.Types;
function calcularPorcentajeAlto(ctrlAlto,frmAlto: single) : single;
function calcularPorcentajeLargo(ctrlLargo,frmLargo: single) : single;
function calcularPorcentajeX(ctrlX,frmX: single) : single;
function calcularPorcentajeY(ctrlY,frmY: single) : single;
function posicionarControl(porcentajeX, porcentajeY, frmX, frmY : single) : Tpoint;
implementation
function calcularPorcentajeAlto(ctrlAlto,frmAlto: single) : single;
begin
result := Round((ctrlAlto / frmAlto) * 100);
end;
function calcularPorcentajeLargo(ctrlLargo,frmLargo: single) : single;
begin
result := Round((ctrlLargo / frmLargo) * 100);
end;
function calcularPorcentajeX(ctrlX,frmX: single) : single;
begin
result := Round((ctrlX / frmX) * 100);
end;
function calcularPorcentajeY(ctrlY,frmY: single) : single;
begin
result := Round((ctrlY / frmY) * 100);
end;
function posicionarControl(porcentajeX, porcentajeY, frmX, frmY : single) : Tpoint;
begin
result.X := Round((porcentajeX * 100) / frmX);
result.Y := Round((porcentajeY * 100) / frmY);
end;
end.