Hola a todos, que tengan un buen dia.
Tengo el siguiente procedimiento
Código Delphi
[-]procedure TForm2.CentrarMarco(Marco: TFrame);
var
aux: double;
s: string;
begin
aux := panelcontenido.Width - marco.Width;
aux := aux / 2;
s := floattostr(aux);
Delete(s, pos(decimalseparator, s), MaxInt);
marco.Left := strtoint(s);
aux := panelcontenido.Height - marco.Height;
aux := aux / 2;
s := floattostr(aux);
Delete(s, pos(decimalseparator, s), MaxInt);
marco.Top := strtoint(s) - 20;
end;
en un proyecto, lo que hace es que centra un marco (frame) en un panel, lo uso cada vez que creo un marco o cada vez que ajusto el tamaño de mi forma. Quiero usar este procedimiento en otros proyectos, entonces lo que hice fue ponerlo en una DLL, para estar reutilizando el código. En la DLL lo puse de la siguiente manera:
Código Delphi
[-]library frames;
uses
SysUtils, Classes, Forms, ExtCtrls;
{$R *.res}
procedure centrarmarco(marco: tframe; base: tpanel);
var
aux: double;
s: string;
begin
aux := base.Width - marco.Width;
aux := aux / 2;
s := floattostr(aux);
Delete(s, pos(decimalseparator, s), MaxInt);
marco.Left := strtoint(s);
aux := base.Height - marco.Height;
aux := aux / 2;
s := floattostr(aux);
Delete(s, pos(decimalseparator, s), MaxInt);
marco.Top := strtoint(s) - 20;
end;
exports centrarmarco;
begin
end.
En mi aplicación tengo declarado el procedimiento de la siguiente manera:
Código Delphi
[-]procedure centrarmarco(marco: tframe; base: tpanel); stdcall; external 'frames.dll'
Lo mando llamar de la siguiente manera:
Código Delphi
[-]CentrarMarco(FrameCamAlt, panelcontenido);
Y no hace nada, no mueve las propiedades de mi frame... pensé en hacer dos funciones que me regresen un número entero, una para el left y otra para el top del marco que quiero centrar, pero quisiera hacerlo de la manera en que lo muestro aqui... Es esto posible?
Gracias de antemano, Dios los bendiga.