Ir para conteúdo

POWERED BY:

Arquivado

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

lote

DLL Main menu

Recommended Posts

Caros amigos,

 

Tenho um mainmenu1 no form principal, com alguns itens e subitens,

quero por meio de um dll acrescentar um novo item com subitens.

 

Não eentendo nada de DLL, comecei a ler sobre o assunto,

se alguém puder me ajudar, ficarei muito grato.

Até breve!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que seria mais ou menos assim o que ele quer: Quando ha uma nova versão do sistema, com mais opções e tals ele enviaria so a dll com as novas funcionalidades.

Também pode ser por licença (a versão "home" tem so tais menus, ja a "professional" tem outros)..

 

Bom "Lote", primeiramente você deve entender como criar uma dll em Delphi e exportar as suas funções. Como uma pesquisa no Google encontrei esses links que vão lhe ajudar:

 

http://www.devmedia.com.br/articles/viewcomp.asp?comp=7902

http://dicasdedelphi.blogspot.com/2008/07/criar-uma-dll-com-funes.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que seria mais ou menos assim o que ele quer: Quando ha uma nova versão do sistema, com mais opções e tals ele enviaria so a dll com as novas funcionalidades.

Também pode ser por licença (a versão "home" tem so tais menus, ja a "professional" tem outros)..

 

Bom "Lote", primeiramente você deve entender como criar uma dll em Delphi e exportar as suas funções. Como uma pesquisa no Google encontrei esses links que vão lhe ajudar:

 

http://www.devmedia.com.br/articles/viewcomp.asp?comp=7902

http://dicasdedelphi.blogspot.com/2008/07/criar-uma-dll-com-funes.html

 

 

A necessidade é essa mesmo Raficha, vou dá uma olhada nestes links. se mais alguém puder contribuir ficarei muito agradecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma dica: Não esqueça de exportar as funções.

 

Dll's são legais por que você pode desenvolver um unico programa em varias linguagens. Ex.: Você pode fazer uma Dll em C\C++ e importar no delphi. Ou até mesmo desenvolver todo o seu programa em C\C++ e utilizar o Delphi apenas para a interface.. e por ai vai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

implamentei assim:

 

NA DLL

 

{HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH}
procedure pModificaMainMenu(vMainMenu:TMainMenu);stdcall;
var
  I: Integer;
  vItem,vSubItem: TMenuItem;
begin
  TRY
  TRY

    vItem := TMenuItem.Create(vMainMenu);
    vItem.Caption := PChar('xxx');
    vMainMenu.Items.Add(vItem);

    vSubItem:= TMenuItem.Create(vMainMenu);
    vSubItem.Caption := PChar('yyy');
    vMainMenu.Items[4].Insert(0,vSubItem);



  EXCEPT
  vJcMensagem.FuAvisoGeralString('MENU-OCORREU UMA EXCESSÃO SDRSIS01 Nº001');
  END;
  FINALLY
  END;
end;
//obs.: o menu já possui três itens.
{HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH}

chamei no form assim

{HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH}
procedure pModificaMainMenu;
type
TCallMeDll = procedure(vMainMenu:TMainMenu); stdcall;
CONST DLLNAME='SDRSIS01.DLL';
var
CallMeDll: TCallMeDll;
FuncPtr: TFarProc;
hDll: THandle;
result: string;
vMainMenu:TMainMenu;
begin
  hDll:=LoadLibrary(DLLNAME);
  IF hDll>0 THEN
  TRY
  FuncPtr:=GetProcAddress(hDLL,PChar('pModificaMainMenu'));
  if FuncPtr<> nil then
  begin
  CallMeDll:=TCallMeDll(FuncPtr);
  CallMeDll(Form1.MainMenu1);
  END
  ELSE
  ShowMessage('FUNÇÃO NÃO ENCONTRADA');
  FINALLY
  FreeResource(hDll);
  END
  ELSE
  ShowMessage('DLL NÃO ENCONTRADA');
end;
{HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH}

funcionou mas deu um problema.

na hora que fecho o programa, o program continua na memoria

e dá erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na sua ddl tem um sessão chamada "exports", tem que declarar as funções lá:

 

Exports
	procedure pModificaMainMenu;

Esta sessão vai logo depois dos protópicos das funções. Você pode tentar colocar no final do arquivo também.

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.