DLL
Criei uma DLL com várias funções e com um formulário.
Nesse formulário tem o evento OnShow ficando assim
procedure TForm.OnShow(Sender: TObject);
begin
Funcao();
end;
Funcao() é uma função da dll que o form se encontra como faço para executar essa função??
Nesse formulário tem o evento OnShow ficando assim
procedure TForm.OnShow(Sender: TObject);
begin
Funcao();
end;
Funcao() é uma função da dll que o form se encontra como faço para executar essa função??
Rudá
Curtidas 0
Respostas
Paulocesar1301
28/03/2006
Em código rápido, você pode usar a declaração estática de DLL:
Obs.: No final de sua DLL utilize a opção NAME para ´dar nomes aos bois´ na sua dll
No seu projeto, o nome que você declarará é o nome indicado na DLL;
... function [b]LoginRede[/b]: WideString; stdcall; external ´<nome da dll>.dll´; implementation
Obs.: No final de sua DLL utilize a opção NAME para ´dar nomes aos bois´ na sua dll
Exports AjAcent NAME ´[b]AjustaAcento[/b]´; begin end.
No seu projeto, o nome que você declarará é o nome indicado na DLL;
GOSTEI 0
Rudá
28/03/2006
Acho que não expliquei direito.
Existe um form dentro da DLL que tem um evento OnShow e nesse evento quero que ele execute uma função da propria dll ex:
DLL
Então quando o Form1 for dado Show ele execute aquele a função Showw
Ai da erro no [b:853cd07867]Form1.OnShow:= Showw[/b:853cd07867] = [b:853cd07867]Undeclared identifier: ´Showw´[/b:853cd07867]
Pode me ajudar
Existe um form dentro da DLL que tem um evento OnShow e nesse evento quero que ele execute uma função da propria dll ex:
DLL
procedure CriarForm(); stdcall; begin Form1.OnShow:= Showw; end; procedure Showw(Sender: TObject); stdcall; begin //algo end;
Então quando o Form1 for dado Show ele execute aquele a função Showw
Ai da erro no [b:853cd07867]Form1.OnShow:= Showw[/b:853cd07867] = [b:853cd07867]Undeclared identifier: ´Showw´[/b:853cd07867]
Pode me ajudar
GOSTEI 0
Paulocesar1301
28/03/2006
Você tem certeza que ´precisa´ utilizar uma função da dll em um form que está dentro da mesma dll ?
Se sim... nunca usei isso e estou sem delphi aki... tente declarar a função estaticamente dentro da unit do seu form
Mas... acho que esse tipo de recursividade não é usual.
Se sim... nunca usei isso e estou sem delphi aki... tente declarar a função estaticamente dentro da unit do seu form
procedure Showw(Sender: TObject); stdcall; external ´<nome da dll>.dll´;
Mas... acho que esse tipo de recursividade não é usual.
GOSTEI 0
Rudá
28/03/2006
Eu tenho uma variavel na dll que ira contar quantos form tem abertos.
E como faria isso??
Na dll ele cria o form mas como vou fazer para contar se não tenho como resgatar a variavel para somar quando der show e para diminuir quando der close??
E como faria isso??
Na dll ele cria o form mas como vou fazer para contar se não tenho como resgatar a variavel para somar quando der show e para diminuir quando der close??
GOSTEI 0
Paulocesar1301
28/03/2006
Se no caption do seu form você alterar de acordo com o número total fica fácil...
o ideal seria listar as janelas abertas (Tô sem delphi aki e, sinceramente, não tenho o código de cor), salvar em TStrings qualquer e verificar se já existe alguma janela e quantas com seu caption... se sim ele apenas incrementa o caption
Ex.: <seu caption> (1) - estilo office
o ideal seria listar as janelas abertas (Tô sem delphi aki e, sinceramente, não tenho o código de cor), salvar em TStrings qualquer e verificar se já existe alguma janela e quantas com seu caption... se sim ele apenas incrementa o caption
Ex.: <seu caption> (1) - estilo office
GOSTEI 0
Rudá
28/03/2006
Vou tentar fazer isso, muito obrigado!
Poderia tb me tirar outra dúvida de dll?
Quando crio um form na dll assim:
Ele aparece na barra de tarefas aparece um novo aplicativo.
Como faço para tirar da barra??
Poderia tb me tirar outra dúvida de dll?
Quando crio um form na dll assim:
procedure CriarForm(); stdcall; var Form: TForm; begin Form:= TForm.Create(Application); Form.Show; end;
Ele aparece na barra de tarefas aparece um novo aplicativo.
Como faço para tirar da barra??
GOSTEI 0
Paulocesar1301
28/03/2006
Dá uma olhada:
[url]
http://forum.clubedelphi.net/viewtopic.php?t=72802&highlight=form+dll
[/url]
[url]
http://forum.clubedelphi.net/viewtopic.php?t=72802&highlight=form+dll
[/url]
GOSTEI 0
Rudá
28/03/2006
Obrigado de novo!
Tenho mais uma dúvida:
Eu crio 3 forms para cima em tempo de execução, ai quando vou fecha o form sempre da erro no terceiro form, mas se eu crio 2 forms não da erro.
Ai pensei que era algo de errado no meu código e então fiz uma nova dll e um novo projeto simples só com o form com uma TImage ai tudo blz, criei 3 forms e fechei todos não deu erro, ai fui criando uns 5 e nada de erro ai criei uns 10 ai deu erro em uns 3 forms.
Eu não consigo entender, acho que pode ser memória algo do tipo pq eu fiz um form simples com uma imagem e pode criar mais form.
No form quando da close ele da em sim mesmo free.
Ai vi que poderia ser isso ai removi o free e não da mais erro! o que pode ser?? eu tenho qie tirar ele da memória!
Da vários tipos de erro como:
[b:677e792aea]Access violation at address 00453356 in module ´projeto.exe´. Read of address 000002F4
Acesse violation at address F28B5653. Read of address F28B5653
Access violation at address 00350A21 in module ´formdll.dll´. Read of address 009E1255 [/b:677e792aea]
Alguem pode me ajudar???
Tenho mais uma dúvida:
Eu crio 3 forms para cima em tempo de execução, ai quando vou fecha o form sempre da erro no terceiro form, mas se eu crio 2 forms não da erro.
Ai pensei que era algo de errado no meu código e então fiz uma nova dll e um novo projeto simples só com o form com uma TImage ai tudo blz, criei 3 forms e fechei todos não deu erro, ai fui criando uns 5 e nada de erro ai criei uns 10 ai deu erro em uns 3 forms.
Eu não consigo entender, acho que pode ser memória algo do tipo pq eu fiz um form simples com uma imagem e pode criar mais form.
No form quando da close ele da em sim mesmo free.
Ai vi que poderia ser isso ai removi o free e não da mais erro! o que pode ser?? eu tenho qie tirar ele da memória!
Da vários tipos de erro como:
[b:677e792aea]Access violation at address 00453356 in module ´projeto.exe´. Read of address 000002F4
Acesse violation at address F28B5653. Read of address F28B5653
Access violation at address 00350A21 in module ´formdll.dll´. Read of address 009E1255 [/b:677e792aea]
Alguem pode me ajudar???
GOSTEI 0
Rudá
28/03/2006
Pode deixar consegui resolver!
Era só o metodo de como eu limpava ele, estava usando [b:16f5b328fa]Free[/b:16f5b328fa] ai mudei para [b:16f5b328fa]Action:= caFree;[/b:16f5b328fa] e não deu mais erro!
Agora só tenho mais uma dúvida!
Como faço para quando o form da dll abrir ou fechar ou algo do tipo quando acontecer um TNotifyEvent ele fazer algo no meu form do meu aplicativo???
Exemplo quando o botao do form da dll for clicado o meu form do aplicativo az algo como desaparecer ou aparecer???
Era só o metodo de como eu limpava ele, estava usando [b:16f5b328fa]Free[/b:16f5b328fa] ai mudei para [b:16f5b328fa]Action:= caFree;[/b:16f5b328fa] e não deu mais erro!
Agora só tenho mais uma dúvida!
Como faço para quando o form da dll abrir ou fechar ou algo do tipo quando acontecer um TNotifyEvent ele fazer algo no meu form do meu aplicativo???
Exemplo quando o botao do form da dll for clicado o meu form do aplicativo az algo como desaparecer ou aparecer???
GOSTEI 0