Цитата:
Сообщение от lmikle
Не надо в DLL создавать Application.
И присваивать его не надо.
Я, как понял, у тебя простая формочка. Создавай ее с родителем Nil, а упоминания Application вообще убери.
|
Мне нужно создать модальную форму. а если ее создавать с родителем nil, то при ее создании создается значек на панели задач, вообщем ведет она себя не как диалог!!!
Цитата:
Сообщение от lmikle
Если очень хочется пообщаться с Application, то делается это подругому.
Код:
{ DLL }
function ShowAboutForm(AHandle : THandle;...) : Boolean;
begin
Application.Handle := AHandle;
...
end;
{ Program }
...
ShowAboutform(Application.Handle,...);
|
Теперь ошибка access violation выскакивает при показе формы...
вот мой код программы:
Код:
procedure TForm1.N27Click(Sender: TObject);
type
TShowAboutForm = function(AHandle : THandle; xPos,yPos:Integer; vrs:PChar):Boolean; stdcall;
var
H:Cardinal;
begin
try
H:=LoadLibrary('nms_rss.dll');
@ShowAboutForm:=GetProcAddress(H,'ShowAboutForm');
ShowAboutForm(Application.Handle, xPos,yPos,PChar(Value));
Finally
FreeLibrary(H);
end;
end;
Код DLL:
Код:
function ShowAboutForm(AHandle : THandle; xPos,yPos:Integer; vrs:PChar):Boolean; stdcall;
begin
try
Application.Handle := AHandle;
TAboutDlgForm.Create(Application);
AboutDlgForm.ShowModal;
if AboutDlgForm.ModalResult= 1 then
Result:=True
finally
AboutDlgForm.Free;
end;
end;
exports
ShowAboutForm;
Я без понятия, где тут может быть ошибка...