![]() |
|
|
#1
|
|||
|
|||
![]() Подскажите пожалуйста новичку!!!
Есть форма с кнопкой, по нажатию вызывается другая форма (как библиотека), но нужно в библиотеке добавить еще форму (она добавляется, но при попытке к ней обратится при выполнение программы выскакивает ошибка). Можно ли как-то ее победить)??? |
#2
|
|||
|
|||
![]() Код в студию.
Что значит "библиотека"? Как вызывается первая форма из нее? Как сделана вторая форма - так же, как первая или есть различия? |
#3
|
|||
|
|||
![]() первая форма
Код:
procedure TFMain.Button1Click(Sender: TObject); var hDll : THandle; begin hDll := LoadLibrary(PChar(extractFileDir(ParamSTR(0)) + '\' + 'passport.drs')); @OpenPassport1 := GetProcAddress(hDll,'OpenPassport'); OpenPassport1(Handle); FreeLibrary(hDll); end; Код:
library passport; { 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 SysUtils, Classes, Unit1 in 'Unit1.pas' {FPass}; {$E drs.res} {$R *.res} exports OpenPassport; begin end. *************** код из самой формы procedure OpenPassport(aHandle: THandle); Export; StdCall; implementation {$R *.dfm} procedure OpenPassport(aHandle: THandle); var OldHandle : THandle; begin CoInitialize(Nil); OldHandle := Application.Handle; Application.Handle := aHandle; FPass:= TFPass.Create(Application); try FPass.ShowModal; finally Application.Handle := OldHandle; FPass.Free; end; end; Последний раз редактировалось crazyman, 09.05.2017 в 18:28. |
#4
|
|||
|
|||
![]() ну дык, ёкарный бабай!!!
У тебя же тут спец. процедура для открытия формы. Соответственно, для второй формы надо написать такую же. Или эту поменять так, что бы она могла по параметру открывать любую из форм. |
#5
|
|||
|
|||
![]() Цитата:
|
#6
|
||||
|
||||
![]() Цитата:
![]() Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
crazyman (12.05.2017)
|