Requisitos : Desde que recebemos um projeto desse tipo recentemente, o Partido A e outros nos pediram para adicionar as funções que desenvolvemos a um aplicativo desenvolvido pelo PB que eles já possuem. O único objetivo não é ter dois aplicativos EXE.
Solução : Pacote Aplicação da Delphi na forma de uma DLL e depois chamá -lo no PB.
projeto :
1. PB PART
1. Crie uma nova classe não visual n_cst_demo e colocamos todas as chamadas do mesmo módulo nessa classe.
2. Defina chamadas de API. Definição em declarar --- Funções externas locais
// identificador: é o identificador da janela atual;
Sub -rotina show_demo (alça ULONG, String param) Library "Project1.dll"
3. Crie um novo formulário w_main.
4. Crie um novo menu m_dll.
5. Crie um item de menu chamado DLL de teste. Escreva no evento clicado:
n_cst_demo n_pda n_pda = Criar n_cst_demo n_pda.show_demo (handle (parentwindow), "abcd1234") Destrua N_PDA |
Dessa forma, nossa parte do PB é concluída.
2. Delphi Part
1. Crie um novo projeto DLL.
2. Crie um novo Form1. salvar.3. Escreva o código no projeto:
Projeto da biblioteca1; usos Sysutils, Formas, Windows, Aulas, Controles, Diálogos, Unidade1 em 'unidade1.pas' {form1}, Dm em 'dm.pas' {datamodule1: tdatamodule}; {$ R *.res} Procedimento Dllmain (Motivo: Inteiro); Começar Razão do caso de Dll_process_attach: Começar Application.creatEform (tdatamodule1, datamodule1); fim; Dll_process_detach: Começar fim; Dll_thread_attach: comece final; DLL_THREAD_DETACH: BEGIN END; fim fim; // Lembre -se, em Delphi, os parâmetros de string precisam ser definidos com o tipo de PChar Procedimento show_demo (alça: THANDLE; const param: pchar); var Oldhandle: Thandle; Começar // Salve a alça da DLL OldHandle: = Application.Handle; // Altere a alça do aplicativo DLL para a alça da janela em PB // O objetivo é alcançar que os arquivos executáveis de DLL e PB pertencem a um aplicativo // Efeito: Depois de abrir a janela na DLL, não haverá mais ícone na barra de tarefas Application.Handle: = Handle; Application.CreatEform (TForm1, Form1); tentar Form1.s_param: = strpas (param); Form1.showmodal; Finalmente Form1.free; Application.Handle: = OldHandle; fim; fim; exportações show_demo; Começar DllProc: = @dllmain; Dllmain (dll_process_attach) fim. |