Показать сообщение отдельно
  #7  
Старый 06.11.2009, 18:54
s0manmbula s0manmbula вне форума
Прохожий
 
Регистрация: 06.11.2009
Сообщения: 16
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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;

Я без понятия, где тут может быть ошибка...
Ответить с цитированием