Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка при модальном вызове формы из DLL. Я в отчаянии! [D6, Win95/98, Win2k]


Страницы:   1 2

Knapweed ©   (2004-06-16 01:24:00) 

Уважаемые мастера! Прошу помощи!!! Я в глубоком отчаянии.. Код:

(в основной программе)
procedure TMainForm.LabExportClick(Sender: TObject);
begin
ExportDLLHandle := LoadLibrary('KExport');
if ExportDLLHandle = 0 then begin
 MessageDlg('Ошибка загрузки библиотеки KExport.dll.', mtError, [mbOk], 0);
 exit;
                            end;
try
 @DLLShowExport := GetProcAddress(ExportDLLHandle, PCHar('ShowExport'));
 DLLShowExport(Config.CurrentArea);
finally
 if FreeLibrary(ExportDLLHandle)=False then
  MessageDlg('Ошибка выгрузки библиотеки.',mtError, [mbOk], 0);
end;
end;


(в KExport.DLL)
function ShowExport(CurArea : byte) : TModalResult;
begin
BCurArea := CurArea;
try
 FormExport := TFormExport.Create(Application);
  try
   result := FormExport.ShowModal;
  except
    ShowMessage('Здесь как раз и выходит эта Ё..я ошибка!!!');
   result := mrAbort;
  end;
finally
 FormExport.Free;
end;
end;


Причём всё работало, пока мне не приспичило включить модуль ShareMem в библиотеку(нужно было передавать строку). Тут-то всё и посыпалось :( Потом я всё вернул на место, НО ОШИБКА ОСТАЛАСЬ! ПОЧЕМУ???


_alex_   (2004-06-17 14:31:00) [1]

> Knapweed
Чем закончилась твоя история с отображением формы?

Дело в том, что я сейчас начинаю переносить некоторые формы из своего приложения в dll.
Единственное отличие - я делаю статический вызов dll.
А прочитав эту ветку даже не знаю - может не стоит этим заниматься, что бы когда-нибудь не наткнуться на тоже самое.


Knapweed   (2004-06-16 04:17:00) [2]

Может ещё кто-нибудь мысли хорошие подкинет, а?
Я ещё буду заглядывать сюда...
Последняя надежда - этот форум... :(


Knapweed   (2004-06-16 02:46:00) [3]

2GuAV
Она главная настолько, насколько может быть главной форма в DLL-ке. Но даже если она стоит в auto-create, раньше же всё работало(перед вознёй с ShareMem)? Какая тут связь с ShareMem?


GuAV   (2004-06-16 02:35:00) [4]

если она главная, то она в списке auto-create, а это имхо не нужно


Knapweed   (2004-06-16 02:29:00) [5]

2GuAV
>[19]
Думаю, я тебя понял.
У меня в библиотеке только одна форма - FormExport, и она и есть главная.


GuAV   (2004-06-16 02:20:00) [6]


> [9] - не то же самое?

нет. создай новый пустой проэкт и посмотри visible у главной формы. да? а ведь она видна.


Knapweed   (2004-06-16 02:17:00) [7]

2zuk
>в дизайнере поставить сразу Visible - False?
Дык это у меня с самого начала так и стояло. Периодически проверяю - так и стоит.


GuAV   (2004-06-16 02:15:00) [8]


> [9] - ?

Ну да, на [9] может быть поможет [10]


zuk   (2004-06-16 02:14:00) [9]

Думаем, а если в дизайнере поставить сразу Visible - False?


Knapweed   (2004-06-16 02:14:00) [10]

2GuAV
>[10] - ?
[9] - не то же самое?


zuk   (2004-06-16 02:13:00) [11]

[9] - ?


GuAV   (2004-06-16 02:11:00) [12]

[10] - ?


Knapweed   (2004-06-16 02:10:00) [13]

2zuk
> Visible := False
Я и так тоже пробовал... Мне не помогло :(


Knapweed   (2004-06-16 02:06:00) [14]

В приложение всё перетаскивать я не пробовал. Разрабатывал сразу в DLL. Но даже если заработает, то каким образом мне это поможет? Необходимо сделать всё в библиотеке.


GuAV   (2004-06-16 02:05:00) [15]

да, в либе Application.ShowMainForm:=False помогает?


zuk   (2004-06-16 02:03:00) [16]

У меня подобная проблема, правда не в DLL а в BPL
В проекте вдруг ни с того ни с сего перестали поджигаться модально окна, выводится такая же ошибка ( не могу сделать модальным уже видимое окно).
Временно победил тем что перед ShowModalпишу Visible := False, помогает, но не приятное мигание окна. Но это уже из разряда шаманство, хотелось бы знать что это :-(
ЗЫ: у меня D7.


GuAV   (2004-06-16 02:01:00) [17]

А оно точно работает если форму в приложение вставить, а не в библиотеку?

Не тот ли это случай, что (Program) Application <> (library) Application?


Knapweed   (2004-06-16 01:56:00) [18]

2GuAV
В том то и чертовщина... Даже сделал поиск ShareMem по всем файлам проекта - нигде нету.


GuAV   (2004-06-16 01:51:00) [19]


>  Потом я всё вернул на место, НО ОШИБКА ОСТАЛАСЬ! ПОЧЕМУ???

по меньшей мере странно. такого не бывает. убрал sharemem и в проге и в либе? build сделал?


Knapweed   (2004-06-16 01:42:00) [20]

Эта мысль тоже приходила мне в голову... Пробовал переименовать в MyFormExport - та же самая фигня :(


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо