Текущий архив: 2004.07.04;
Скачать: CL | DM;
Вниз
Ошибка при модальном вызове формы из DLL. Я в отчаянии! Найти похожие ветки
← →
Knapweed © (2004-06-16 01:24) [0]Уважаемые мастера! Прошу помощи!!! Я в глубоком отчаянии.. Код:
(в основной программе)
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 в библиотеку(нужно было передавать строку). Тут-то всё и посыпалось :( Потом я всё вернул на место, НО ОШИБКА ОСТАЛАСЬ! ПОЧЕМУ???
← →
Knapweed © (2004-06-16 01:30) [1]Забыл сказать, что ошибка выглядит примерно так: не могу сделать модальным уже видимое окно...
Примечание: свойство FormExport.VISIBLE=FALSE.
← →
GuAV © (2004-06-16 01:34) [2]
> TFormExport.Create(Application);
TFormExport.Create(nil); ?
← →
Knapweed © (2004-06-16 01:36) [3]2GuAV
То-же самое :(
← →
GuAV © (2004-06-16 01:41) [4]А если переименовать форму в библиотеке?
← →
Knapweed © (2004-06-16 01:42) [5]Эта мысль тоже приходила мне в голову... Пробовал переименовать в MyFormExport - та же самая фигня :(
← →
GuAV © (2004-06-16 01:51) [6]
> Потом я всё вернул на место, НО ОШИБКА ОСТАЛАСЬ! ПОЧЕМУ???
по меньшей мере странно. такого не бывает. убрал sharemem и в проге и в либе? build сделал?
← →
Knapweed © (2004-06-16 01:56) [7]2GuAV
В том то и чертовщина... Даже сделал поиск ShareMem по всем файлам проекта - нигде нету.
← →
GuAV © (2004-06-16 02:01) [8]А оно точно работает если форму в приложение вставить, а не в библиотеку?
Не тот ли это случай, что (Program) Application <> (library) Application?
← →
zuk (2004-06-16 02:03) [9]У меня подобная проблема, правда не в DLL а в BPL
В проекте вдруг ни с того ни с сего перестали поджигаться модально окна, выводится такая же ошибка (не могу сделать модальным уже видимое окно).
Временно победил тем что передShowModal
пишуVisible := False
, помогает, но не приятное мигание окна. Но это уже из разряда шаманство, хотелось бы знать что это :-(
ЗЫ: у меня D7.
← →
GuAV © (2004-06-16 02:05) [10]да, в либе Application.ShowMainForm:=False помогает?
← →
Knapweed © (2004-06-16 02:06) [11]В приложение всё перетаскивать я не пробовал. Разрабатывал сразу в DLL. Но даже если заработает, то каким образом мне это поможет? Необходимо сделать всё в библиотеке.
← →
Knapweed © (2004-06-16 02:10) [12]2zuk
> Visible := False
Я и так тоже пробовал... Мне не помогло :(
← →
GuAV © (2004-06-16 02:11) [13][10] - ?
← →
zuk (2004-06-16 02:13) [14][9] - ?
← →
Knapweed © (2004-06-16 02:14) [15]2GuAV
>[10] - ?
[9] - не то же самое?
← →
zuk (2004-06-16 02:14) [16]Думаем, а если в дизайнере поставить сразу Visible - False?
← →
GuAV © (2004-06-16 02:15) [17]
> [9] - ?
Ну да, на [9] может быть поможет [10]
← →
Knapweed © (2004-06-16 02:17) [18]2zuk
>в дизайнере поставить сразу Visible - False?
Дык это у меня с самого начала так и стояло. Периодически проверяю - так и стоит.
← →
GuAV © (2004-06-16 02:20) [19]
> [9] - не то же самое?
нет. создай новый пустой проэкт и посмотри visible у главной формы. да? а ведь она видна.
← →
Knapweed © (2004-06-16 02:29) [20]2GuAV
>[19]
Думаю, я тебя понял.
У меня в библиотеке только одна форма - FormExport, и она и есть главная.
← →
GuAV © (2004-06-16 02:35) [21]если она главная, то она в списке auto-create, а это имхо не нужно
← →
Knapweed © (2004-06-16 02:46) [22]2GuAV
Она главная настолько, насколько может быть главной форма в DLL-ке. Но даже если она стоит в auto-create, раньше же всё работало(перед вознёй с ShareMem)? Какая тут связь с ShareMem?
← →
Knapweed © (2004-06-16 04:17) [23]Может ещё кто-нибудь мысли хорошие подкинет, а?
Я ещё буду заглядывать сюда...
Последняя надежда - этот форум... :(
← →
_alex_ (2004-06-17 14:31) [24]> Knapweed
Чем закончилась твоя история с отображением формы?
Дело в том, что я сейчас начинаю переносить некоторые формы из своего приложения в dll.
Единственное отличие - я делаю статический вызов dll.
А прочитав эту ветку даже не знаю - может не стоит этим заниматься, что бы когда-нибудь не наткнуться на тоже самое.
Страницы: 1 вся ветка
Текущий архив: 2004.07.04;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.026 c