Fórum Como carregar o form que esta numa dll. #178607

30/08/2003

0

Consegui criar um Form dentro de uma DLL, so que nao sei como faço para criar o formulario da DLL, aguém por favor pode me ajudar?

Desde Ja agradeço.


Ltsilva

Ltsilva

Responder

Posts

31/08/2003

Alysson

usa isso.

Application.CreateForm(TForm1, Form1);


Onde:
*TForm1 = O classe do form, seus botoões, suas procedures, etc....
*Form1 = Nome do Form......


Responder

Gostei + 0

31/08/2003

Bacalhau

A DLL tem de exportar um procedure de criação do form. Por exemplo

Procedure MostraForm(...);

var X : TMeuForm

begin
X := TMeuForm.create(MeuForm);
X.showmodal;
end;

no fim da DLL leva a linha

exports MostraForm index 1;

Na aplicação que chama o DLL escreves depois dos types

PROCEDURE MOSTRAFORM EXTERNAL ´NOME.DLL´;

Quando quiseres chamar o form digitas

MOSTRAFORM

Táfeito


Responder

Gostei + 0

03/09/2003

Ltsilva

Tudo bem, deu certo, mas porque que o form aparece em um novo botão da barra de tarefas?

Tem como o form ficar no mesmo botão da Aplicação?

Att


Responder

Gostei + 0

04/09/2003

Bacalhau

Realmente esse é um problema difícil.

O natural é fazer form com o formstyle = MDIChild. O problema é colocar numa DLL e a aplicação ´mãe´ estabelecer uma ligação. Normalmente dá bronca. Eu já li um artigo sobre isso; tenta ir ao google e pesquisar ´MDIChild in DLL´. Se eu achar digo


Responder

Gostei + 0

05/09/2003

Ltsilva

Finalmente consegui, e não precisei usar o Form como MDIChild, usei o seguinte código:

Na DLL...
library LibForm1;

uses
SysUtils,
Classes,forms, windows,
UForm1 in ´UForm1.pas´ ;

{$R *.res}
var
oApp : TApplication;
oScr : TScreen;

procedure MyDLLProc(Reason: Integer);
begin
if Reason = DLL_PROCESS_DETACH then
begin
Application := oApp;
Screen := oScr;
end;
end;

procedure ShowFrm(App:TApplication; Scr : TScreen); stdcall;
begin
Application := App;
Screen := Scr;
App.CreateForm(TForm1, Form1);
Form1.Show;
end;

exports
ShowFrm;

begin
oApp := Application;
oScr := Screen;
DLLProc := @MyDLLProc;
end.

E na Aplicação...
unit UPrinc;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

procedure ShowFrm(App: TApplication;Scr: TScreen); stdcall;
type
TPrinc = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Princ: TPrinc;

implementation

procedure ShowFrm(App: TApplication;Scr: TScreen); external ´LibForm1.dll´ name ´ShowFrm´;

{$R *.DFM}

procedure TPrinc.Button1Click(Sender: TObject);
begin
ShowFrm(Application, Screen);
end;

end.

O que seria de mim se não fosse esse Forum, Valeu Bacalhau, este exemplo eu peguei no Google, só tive o trabalho de mudar o form de MDIChild para Normal.


Responder

Gostei + 0

06/09/2003

Bacalhau

Obrigado :oops:

Também já aprendi mais uma...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar