Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lote

dll no delphi

Recommended Posts

Caros amigosEstou com uma dificuldade enorme, não consigo criar objetos dentro do form por meio de DLL.por exemplo:procedure pCriaButton(vForm:TForm);varvButton: Tbutton;beginvButton:Tbutton.Create(vForm);vButton.Parent:=vForm;end;Quando eu chamo o procedure da DLL, não apresenta erromas o buton não aparece.Devo ter que declar algo que não sei, preciso de ajuda.Até breve.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Marcio.A questão é a seguinte:Tenho uma DLL que tem um procedureprocedure pButton(vForm:TForm);varvB:TButton;beginvForm.Color:=clBlack;vB:=TButton.Create(vForm);vB.Parent:=Application.MainForm;vB.Width:=300;vB.Height:=300;end;// exporteiExportspButton;e depois chamei em um aplicativo:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,JcSkin;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;procedure pButton; external 'F:\JeanDocumentos\Delphi\DLL\Ex2\DLLSkin.DLL';implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);beginpButton;end;end.//ela não apresenta erro, mas o button não é criado.Valeu pela disposição em me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz a DLL desta forma:

 

library dll;{ Important note about DLL memory management: ShareMem must be the  first unit in your library's USES clause AND your project's (select  Project-View Source) USES clause if your DLL exports any procedures or  functions that pass strings as parameters or function results. This  applies to all strings passed to and from your DLL--even those that  are nested in records and classes. ShareMem is the interface unit to  the BORLNDMM.DLL shared memory manager, which must be deployed along  with your DLL. To avoid using BORLNDMM.DLL, pass string information  using PChar or ShortString parameters. }uses  windows,  SysUtils,  Classes,  Forms,  StdCtrls,  Graphics;{$R *.res}procedure pButton(vForm: TForm; vFormHandle: THandle);var	vB: TButton;beginvForm.Color:=clBlack;vB:=TButton.CreateParented(vFormHandle);vB.Width:=30;vB.Height:=30;vB.Top:=10;vB.Left:=10;vB.Caption:='Teste';ShowWindow(vB.Handle, SW_SHOW);end;ExportspButton;beginend.

E no form do projeto assim:

 

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, Buttons;type  TForm1 = class(TForm)	BitBtn1: TBitBtn;	procedure BitBtn1Click(Sender: TObject);  private	{ Private declarations }  public	{ Public declarations }  end;procedure pButton(vForm: TForm; vFormHandle: THandle); external 'dll.DLL';var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);beginpButton(Form1,Form1.Handle);end;end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio Funcionou;O que eu acho legal nas tuas ajudas é que elas são sempre didáticas e precisas. Você me faz lembrar um professor que sempre dizia em tom profético: o conhecimento de um homem mede-se pela sua humildade.Valeu amigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal,Gostaria de perguntar a vocês se alguem sabe se existe alguma forma de no delphi eu declarar o uso de uma dll e ter acesso aos seus métodos e atributos sem ter que declarar no form que vou utilizar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei o que é acesso dinamico.O problema é o seguinte :Quero fazer uma dll pois vou utilizar na minha aplicação delphi e na aplicação web.No Delphi os exemplos que eu achei na internet funciona eu declarando a dll e redeclarando o conteúdo da sessão Exports da DLL que vou utilizar.Quero saber se tem como fazer isto mas acessando objeto da dll e não tendo que redeclarar os métoodos.

Bom... Ficou meio confuso sua questão, mas poderia fazer acesso dinâmico a DLL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.