lote 0 Denunciar post Postado Fevereiro 26, 2007 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
marcio.theis 3 Denunciar post Postado Fevereiro 26, 2007 Teria como colocar um exemplo do funcionamento ? Como a forma de chamar e criar que foi utilizado. Compartilhar este post Link para o post Compartilhar em outros sites
lote 0 Denunciar post Postado Fevereiro 26, 2007 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
marcio.theis 3 Denunciar post Postado Fevereiro 26, 2007 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
lote 0 Denunciar post Postado Fevereiro 26, 2007 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
lote 0 Denunciar post Postado Fevereiro 27, 2007 Marcio,Eu tentei usar um TSpeedButton e umTImage não funcionou. Por que? Compartilhar este post Link para o post Compartilhar em outros sites
Senda 0 Denunciar post Postado Junho 28, 2007 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
marcio.theis 3 Denunciar post Postado Junho 28, 2007 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
Senda 0 Denunciar post Postado Junho 28, 2007 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