Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Funcion cambia comportamiento al estar en una dll (https://www.clubdelphi.com/foros/showthread.php?t=83421)

Fita 16-06-2013 18:09:17

Funcion cambia comportamiento al estar en una dll
 
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 Noteví 16-06-2013 18:18:33

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

egostar 17-06-2013 08:50:50

Cita:

Empezado por Fita (Mensaje 462321)
Hola a todos.

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


Código Delphi [-]
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:

Código Delphi [-]
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:

Código Delphi [-]
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é:
Código Delphi [-]
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


La franja horaria es GMT +2. Ahora son las 03:40:47.

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