lote 0 Denunciar post Postado Abril 15, 2010 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
fernando.fxsoft 0 Denunciar post Postado Abril 15, 2010 Não entendi o que você quer fazer. Qual é o propósito em adicionar itens através de uma dll? Compartilhar este post Link para o post Compartilhar em outros sites
Raficcha 1 Denunciar post Postado Abril 16, 2010 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
lote 0 Denunciar post Postado Abril 16, 2010 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
Raficcha 1 Denunciar post Postado Abril 16, 2010 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
lote 0 Denunciar post Postado Abril 16, 2010 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
lote 0 Denunciar post Postado Abril 17, 2010 Está dando um erro também de ponteiro Compartilhar este post Link para o post Compartilhar em outros sites
Raficcha 1 Denunciar post Postado Abril 19, 2010 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