Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.043 c
3-1153728761
Opilki_Inside
2006-07-24 12:12
2006.09.24
Вопрос о использовании TZUpdateSQL из пакета ZeosDBO


9-1135949556
Ford
2005-12-30 16:32
2006.09.24
Освещенния в Direct3D


4-1148128120
Name
2006-05-20 16:28
2006.09.24
Как поменять ExStyle и Style окна?


2-1156642642
Juri
2006-08-27 05:37
2006.09.24
Помогите профильтровать базу данных по дате


15-1157093631
ArtemESC
2006-09-01 10:53
2006.09.24
Андрес Сеговия





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский