Форум: "Начинающим";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
ВнизСнова о DLL Найти похожие ветки
← →
NGPOL © (2006-08-30 20:26) [0]В DLL есть форма, процедура, в которой она Create и Show. Форма несет на себе кнопки, тулбары и т.д., она должна быть внутри Application.MainForm. Когда я вызываю процедуру из проекта, т.е. из MainForm, она где-то создается(проверял), но Show не происходит... Помогите, плз!!!
← →
Desdechado © (2006-08-30 21:02) [1]> она должна быть внутри Application.MainForm
Это как?
> я вызываю процедуру из проекта
Код.
> она где-то создается(проверял)
Я торчу!!!
← →
medved_68 © (2006-08-30 21:26) [2]
> В DLL есть форма, процедура, в которой она Create и Show.
> Форма несет на себе кнопки, тулбары и т.д., она должна
> быть внутри Application.MainForm.
Не ну ты в натуре определись где она у тебя конкретно в ДЛЛ или в Application.MainForm. А то братва прям кипятком писает споря....Так нельзя, братан, телепаторы нынче дороги, а ты прикинь у скольких он погорел....Кто башлять будет, в натурЕ?????
← →
NGPOL © (2006-08-31 11:45) [3]Да ладно вам! Ну не сумел с первого раза проблему рассказать - торопился очень! Форма, назовем ее ControlPanel, несущая на себе всякие компоненты, описана в ДЛЛ. При загрузке проги, она(прога) находит ДЛЛ-ку, и, как мне хотелось бы, создает и показывает ControlPanel. Вот этого-то и не происходит - не показывает. Я в тоске. А телепатам я могу забашлять медицинскими услугами :)), т.к. я врач. Но лучше - я к Вам!!! Помогите, плз...
← →
Yegorchic © (2006-08-31 11:48) [4]А код создания формы?
← →
Desdechado © (2006-08-31 11:50) [5]Ну, пройдись отладчиком и увидь, где и что не происходит. Берешь проект с DLL, прописываешь для него host application и запускаешь. И шагаешь в отладчике по своим функциям.
PS а код так и зажал, партизан
← →
medved_68 © (2006-08-31 14:11) [6]
> При загрузке проги, она(прога) находит ДЛЛ-ку, и, как мне
> хотелось бы, создает и показывает ControlPanel.
А точно создает и показывает??? Или это тебе бы так хотелось. Ведь для того чтобы форма показалась на экране одного Create мало!!! Нужен еще и Show для вновь созданной формы. Чудеса бывают только у вас - медиков :)))
← →
Сергей М. © (2006-08-31 14:21) [7]
> NGPOL © (31.08.06 11:45) [3]
> Ну не сумел
Слово-то - не воробей)..
> забашлять медицинскими услугами
Бред сивой кобылы)
← →
NGPOL © (2006-08-31 17:13) [8]Это код в DLL"ке
procedure InitControl(MainForm : TForm); stdcall;
begin
if not Assigned(frControls) then frControls:= TfrControls.Create(AOwner);
frControls.Parent:= Application.MainForm;
frControls.Show;
end;
это код в вызывающей проге:
procedure TfrMain.FormCreate(Sender: TObject);
begin
InitDB(Application);
InitControl(frMain);
frMain.Caption:= frMain.Caption + " - " + GetCaption;
end;
вот. А чудес на самом деле не бывает :))
← →
NGPOL © (2006-08-31 17:31) [9]Причем InitDB - процедура создания модуля данных срабатывает. Работает и процедура создания и показа модальной формы - для заполнения таблицы. А вот показать frControls - нехочет...
← →
medved_68 © (2006-08-31 19:28) [10]
> frControls.Parent:= Application.MainForm;
NGPOL Понятно почему не хочет :))) Как ты думаешь, а кто родитель формы??? Я даже предполагаю, что ты скажешь!!! А я скажу нет, не он!!! Удивляйся сколько хочешь
if not Assigned(frControls) then frControls:= TfrControls.Create(AOwner);
frControls.Parent:= Application.MainForm;
frControls.Show;
А теперь исправь вот так:
frControls:= TfrControls.Create(nil);
frControls.Show
Все остальное выкини и удивляйся на здоровье. :))))
> вот. А чудес на самом деле не бывает :))
В самую точку ты в медицине тоже наобум действуешь??? :)))
← →
NGPOL © (2006-08-31 19:40) [11]Пасиба! Щас проверю!
А насчет медицины - хочешь пообсуждать - пиши на мыло! За 20-ть лет работы у меня есть всякие мнения. Еще раз спасибо!!!
← →
Германн © (2006-09-01 02:11) [12]
> medved_68 © (31.08.06 19:28) [10]
>
>
> > frControls.Parent:= Application.MainForm;
>
> NGPOL Понятно почему не хочет :))) Как ты думаешь, а кто
> родитель формы??? Я даже предполагаю, что ты скажешь!!!
> А я скажу нет, не он!!! Удивляйся сколько хочешь
> if not Assigned(frControls) then frControls:= TfrControls.
> Create(AOwner);
> frControls.Parent:= Application.MainForm;
> frControls.Show;
> А теперь исправь вот так:
> frControls:= TfrControls.Create(nil);
> frControls.Show
> Все остальное выкини и удивляйся на здоровье. :))))
Имхо, он очень удивится! :-) Вот только кому он пойдёт морду бить?
← →
NGPOL © (2006-09-01 09:25) [13]Хм! Не работает... :( Морду, конечно, никому не собираюсь бить. Мы же сюда по взаимному согласию заходим... Модальная форма таким образом создается и работает. Я проверил в Evaluete/Modify -
Assigned(frControls) = True;
frControls.Parent.Name = "frMain";
даже frControls.Visible = True !
Код же работает, если его перенести в вызывающую программу(но только не в обработчик frMain.OnCreate). Спасибо всем! Буду пытаться создать компоненты динамически, что-ли?
← →
ANB © (2006-09-01 09:37) [14]
> frControls.Parent:= Application.MainForm;
Интересно, откуда DLL узнала Application приложения ?
И что собой представляет TfrControls ? От чего унаследована ? Если от фрейма, то показать ее саму по себе будет затруднительно.
Совет - перенеси код из DLL в основную программу. Проверь работу там. Потом вынеси обратно в DLL (лучше в BPL). Собери приложение с флажком "собирать с рантайм пакетами". И попробуй еще раз.
Так же прочитай статью http://www.softwarer.ru/packages.html
← →
medved_68 © (2006-09-01 10:32) [15]
> Имхо, он очень удивится! :-) Вот только кому он пойдёт морду
> бить?
Как кому??? Мне конечно!!! Только сначала пусть проверит свой код frControls
> Код же работает, если его перенести в вызывающую программу(но
> только не в обработчик frMain.OnCreate).
Мало ли куда он что запихивает наобум, так и комп может куда подальше послать и удивляться тут нечему!!! Кода то он не выложил, а гадать??? Не телепатор ремонтировать я точно к нему не пойду :)))
З.Ы.
>Буду пытаться создать компоненты динамически, что-ли?
if not Assigned(frControls) then frControls:= TfrControls.Create(AOwner); ???????? Да уж.....
Может лучше все таки сначала почитать что нибудь??? :(((
Вариант то я тебе дал рабочий, у меня то работает и без проблем. :)))
← →
Barloggg (2006-09-01 13:17) [16]ну вы все намеками да намеками.
как можно найти что-нибудь если не знать где искать?
форма должна создаваться на чем-то.
У обычного приложение это что-то есть. и называется application.
у DLL этого чего-то нет.
вот и весь смысл последних нескольких топиков.
а решение простое. надо всего навего передать в DLL прямую ссылку на application приложения.и уже на этой ссылке создать форму. и будет счастье.
← →
ANB © (2006-09-01 13:23) [17]
> надо всего навего передать в DLL прямую ссылку на application
> приложения.
угу. и кроме этого прочитать статью по ссылке. В противном случае могут быть проблемы.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.05 c