PDA

Ver la Versión Completa : Funcion cambia comportamiento al estar en una dll


Fita
16-06-2013, 18:09:17
Hola a todos.

Mi aplicacion utiliza esta funcion para saber si una ventana esta activa o no y abrirla sólo una vez:


function Formexiste(form: TForm): boolean; stdcall; export;
begin
if assigned( form ) then
begin
form.WindowState := wsNormal;
form.Show;
result := true;
end
else
begin
result := false;
end;
end;

Esta función está incluida en un .pas del proyecto y funciona a la perfección.
Ahora al pasarla a una .dll (estoy incursionando en el uso de éstas) siempre abre una nueva ventana aunque ésta este abierta...
Qué es lo que está mal?

Gracias por adelantado
Saludos

Casimiro Notevi
16-06-2013, 18:18:33
Recuerda poner los tags al código fuente, ejemplo:

http://www.clubdelphi.com/images/UtilizarTAGs.png

Gracias :)

egostar
17-06-2013, 08:50:50
Hola a todos.

Mi aplicacion utiliza esta funcion para saber si una ventana esta activa o no y abrirla sólo una vez:


function Formexiste(form: TForm): boolean; stdcall; export;
begin
if assigned( form ) then
begin
form.WindowState := wsNormal;
form.Show;
result := true;
end
else
begin
result := false;
end;
end;


Esta función está incluida en un .pas del proyecto y funciona a la perfección.
Ahora al pasarla a una .dll (estoy incursionando en el uso de éstas) siempre abre una nueva ventana aunque ésta este abierta...
Qué es lo que está mal?

Gracias por adelantado
Saludos

Yo haría lo siguiente:


function formExiste(Asignada: Boolean): Boolean; stdcall; export;
begin
if Asignada then
begin
form.WindowState := wsNormal;
form.Show;
result := true;
end
else begin
result := false;
end;
end;


Y la llamada a la función sería algo como ésto:


if formExiste( Assigned( form1 ) ) then
begin
//Lo que sea
end;


Saludos

Fita
17-06-2013, 14:13:06
Gracias por la idea!

Así lo solucioné:
function formExiste(Asignada: Boolean; form: Tform): Boolean; stdcall; export;
begin
if Asignada then
begin
form.WindowState := wsNormal;
form.Show;
result := true;
end
else begin
result := false;
end;
end;

Saludos