Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2013
Fita Fita is offline
Miembro
 
Registrado: jul 2003
Ubicación: Pilar - Argentina
Posts: 216
Poder: 21
Fita Va por buen camino
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
__________________
No te vayas sin irte
Responder Con Cita
  #2  
Antiguo 16-06-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #3  
Antiguo 17-06-2013
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Fita Ver Mensaje
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
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 17-06-2013
Fita Fita is offline
Miembro
 
Registrado: jul 2003
Ubicación: Pilar - Argentina
Posts: 216
Poder: 21
Fita Va por buen camino
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
__________________
No te vayas sin irte
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Registros que no deberían estar Mental Firebird e Interbase 3 29-12-2010 12:12:50
¡Uf! Podemos estar tranquilos roman La Taberna 7 14-04-2010 11:12:58
¡Volvemos a estar en línea! dec Humor 12 19-12-2008 22:31:03
¿Por qué estar encontra de Ubuntu? ArdiIIa Linux 59 11-07-2007 14:31:25
La mania de estar borrando aeff OOP 4 18-11-2006 10:25:00


La franja horaria es GMT +2. Ahora son las 03:39:30.


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
Copyright 1996-2007 Club Delphi