Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.24;
Скачать: CL | DM;

Вниз

Снова о 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.031 c
2-1157636144
webpauk
2006-09-07 17:35
2006.09.24
есть ли Scroll


4-1147948198
serguar
2006-05-18 14:29
2006.09.24
как изменить свойства объектов на форме VFP приложения


3-1153501003
Konnik
2006-07-21 20:56
2006.09.24
Разграничение транзакций стандартными компонентами IB


15-1156938754
term1t
2006-08-30 15:52
2006.09.24
Компоненты...


2-1157101444
nikv
2006-09-01 13:04
2006.09.24
GetFileSize