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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-01-2013
cd.rafael cd.rafael is offline
Miembro
 
Registrado: abr 2012
Posts: 59
Poder: 13
cd.rafael Va por buen camino
error en dll con una form

Cordial saludo,

He revisado muchos temas respecto al manejo de forms dentro de una dll y hasta ahora no he podido resolver mi problema, que a continuación expongo:

Tengo un ejecutable normal el cual invoca a una dll que a su vez lanza una form. Si dicha form la muestro con "ShowModal" todo funciona bien, pero si la dejo solo como "Show", el ejecutable deja de responder.

Este es el código que uso en el ejecutable:

Código:

procedure TForm1.Button1Click(Sender: TObject);
type
    TDLLFunc = procedure(pStUsuario: String; pStPassword: String; pStDB: String; pStEsquema: String; pStTabla: String);
const
    DLLFunc: TDLLFunc = nil;
var
    DLLHandle: THandle;
begin
    DLLHandle := LoadLibrary('forma.dll');
    if (DLLHandle < HINSTANCE_ERROR) then
        raise Exception.Create('Librería no encontrada.' + SysErrorMessage(GetLastError));

    try
        @DLLFunc := GetProcAddress(DLLHandle, 'pFormaMaestro');
        if Assigned(DLLFunc) then
            DLLFunc(txtUsuario.Text, txtContra.Text, txtBD.Text, txtEsquema.Text, txtTabla.Text);

    finally
        FreeLibrary(DLLHandle);
    end;
end;
Y el código de la dll es:

Código:
library forma;

uses
    ShareMem,
    SysUtils,
    Dialogs,
    Windows,
    Classes,
    DConexion in 'DConexion.pas' {dtmConexion: TDataModule} ,
    FPrincipal in 'FPrincipal.pas' {frmPrincipal} ,
    FAcerca in 'FAcerca.pas' {frmAcerca} ,
    FBusqueda in 'FBusqueda.pas' {frmBusqueda} ,
    FSplash in 'FSplash.pas' {frmSplash} ,
    FRegistro in 'FRegistro.pas' {frmRegistro};

procedure pFormaMaestro(pStUsuario: String; pStPassword: String; pStDB: String; pStEsquema: String; pStTabla: String);
begin
    //Pantalla Inicial
    frmSplash := TfrmSplash.Create(nil);
    frmSplash.Show;
    frmSplash.Update;

    //Crear el DataModulo
    dtmConexion := TdtmConexion.Create(nil);
    dtmConexion.gStTabla := pStTabla;
    dtmConexion.gStUsuario := pStUsuario;
    dtmConexion.gStPassword := pStPassword;
    dtmConexion.gStDB := pStDB;
    dtmConexion.gStEsquema := pStEsquema;
    dtmConexion.pInicioDatos;
    frmSplash.Hide;
    frmSplash.Free;

    //Crear la Forma
    if (dtmConexion.gBlSelect) then
    begin
        try
            frmPrincipal := TfrmPrincipal.Create(nil);
            frmPrincipal.ShowModal;
            dtmConexion.cdsPrincipal.Close;
            dtmConexion.qryPrincipal.Close;
            frmPrincipal.Hide;
            frmPrincipal.Free;
        except
            on E: Exception do
            begin
                ShowMessage(E.Message);
            end;
        end;
    end;
end;

exports pFormaMaestro;

begin

end.
Como comenté anteriormente, el código que acabé de exponer funciona bien, pero si cambio el "ShowModal" por el "Show" la aplicación falla.

Cabe anotar que estas líneas de código:

Código:
dtmConexion.cdsPrincipal.Close;
dtmConexion.qryPrincipal.Close;
frmPrincipal.Hide;
frmPrincipal.Free;
Las manejo dentro de los eventos de cierre del form cuando lo muestro con "Show".

Agradezco de antemano cualquier colaboración.
Responder Con Cita
 



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
Error al crear un MDI Form jafera OOP 6 19-07-2011 14:10:13
Error con AdoQuery y 2 Form Cecilio Conexión con bases de datos 2 23-10-2008 17:37:04
Error al crear MDI Form Faust Varios 8 23-04-2008 05:12:01
Error en form de login FGarcia Varios 2 05-02-2006 05:00:27
Error Creating Form RolphyReyes Varios 4 02-09-2005 19:56:42


La franja horaria es GMT +2. Ahora son las 16:05:11.


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