Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Вниз

Как узнать, что MDI форма активна, если она вызывается из DLL.   Найти похожие ветки 

 
46_55_41_44 ©   (2004-09-13 17:31) [0]

Как узнать, что MDI форма  активна, если она вызывается из DLL.
Как понимаете Метод ActiveMDIChild не подходит!!!


 
46_55_41_44 ©   (2004-09-14 08:50) [1]

ааааааааууууууу...
кто-нибудь :)


 
Digitman ©   (2004-09-14 08:53) [2]


> Как понимаете Метод ActiveMDIChild не подходит


это почему же ?


 
46_55_41_44 ©   (2004-09-14 13:49) [3]

Потому, что МейнФорм не воспринимает формы созданные в ДЛЛ как Чайлд формыыыы... :)


 
Digitman ©   (2004-09-14 13:54) [4]


> МейнФорм не воспринимает формы созданные в ДЛЛ как Чайлд
> формы


как это "не воспринимает" ?
ГДЕ это написано, в какой документации ?


 
Юрий Зотов ©   (2004-09-14 14:48) [5]

Попробуйте в DLL переопределить Screen и Application на то же самое, но из Exe.


 
Digitman ©   (2004-09-14 14:52) [6]


> Юрий Зотов


Развращаешь ведь, Юрий !)

Ломаешь путь головы автора к логике, размышлениям ..


 
46_55_41_44 ©   (2004-09-15 08:54) [7]

Я делаю в самом ДЛЛ
İnitialization
 Old_Screen := Screen;
 Old_Application := Application;
Finalization
 Screen := Old_Screen;
 Application := Old_Application;

вы предлагаете сделать это из ЕХЕ???


 
Digitman ©   (2004-09-15 09:07) [8]


> 46_55_41_44 ©   (15.09.04 08:54) [7]



> Я делаю в самом ДЛЛ
> İnitialization
>  Old_Screen := Screen;
>  Old_Application := Application;
> Finalization
>  Screen := Old_Screen;
>  Application := Old_Application;


при инициализации ДЛЛ делать это совершенно бестолково

самый простой вариант (без доп.выкрутасов) - собрать проекты хост-приложения и ДЛЛ с опцией использования ран-тайм пакетов

если же хочется повыкрутасничать, то здесь масса вариантов

вот один из них :

var
Old_Screen: TScreen;
Old_Application: TApplication;
..
//после загрузки DLL, но перед первым обращением к прочим ее ф-циям в хост-приложении следует однократно вызвать эту ф-цию, передав ей параметрами ссылки на объекты Screen и Application

function InitDLL(App: TApplication; Scr: TScreen): Boolean;
begin
Result := not Assigned(Old_Application) and not Assigned(Old_Screen);
if not Result then
 begin
  Old_Application := App;
  Old_Screen := Scr;
  Result := True;
 end;
end;
..

Finalization
if Assigned(Old_Screen) then
 Screen := Old_Screen;
if Assigned(Old_Application) then
 Application := Old_Application;


 
46_55_41_44 ©   (2004-09-15 14:35) [9]

Отходим от темы....
на вопрос по существу можешь ответить???


 
Юрий Зотов ©   (2004-09-15 16:55) [10]

> 46_55_41_44 ©   (15.09.04 14:35) [9]

А разве этот ответ не по теме, или не по существу?

Ну, запоминаете Вы при инициализации Screen и Application, а при финализации их восстанавливаете - а что изменилось-то? Ничего абсолютно. Где же изменение Application и Screen? Нет его.

var
 Old_Application: TApplication;
 Old_Screen: TScreen;

procedure InitDLL(App: TApplication; Scr: TScreen);
begin
 if Old_Application = nil then
 begin
   Old_Application := Application;
   Old_Screen := Screen;
   Application := App;
   Screen := Scr
 end
end;

procedure RestoreDLL;
begin
 if Old_Application <> nil then
 begin
   Application := Old_Application;
   Screen := Old_Screen;
 end
end;

Поместите этот код в DLL и экспортируйте обе функции. В EXE перед работой с DLL вызовите InitDLL(Application, Screen), а после - RestoreDLL.


 
46_55_41_44 ©   (2004-09-16 11:04) [11]

Если я задаю вопрос о том, как можно узнать, что созданная из ДЛЛ форма активна, то это по крайней мере должно означать, что я вызвал эту саму форму из ДЛЛ... Что в своб очередь означает, что я делаю все описанное [10]... по своему...

Ответьте мне на вопрос... Как можно узнать, что форма активна???? МДИЧайлд форма!!! Прежде чем предланать ActiveMDiChild попробуйте сами сначала... Увидите, что ничего это не дает!!!

Очень прошу ответить по существу вопроса!!!!!!!!!1
А не о том, правильно ли я присваиваю Application и Screen. Если бы делал не правильно, то ничего бы не работало... Все нормально работает!!! Просто главная форма не восепринимает созданную из ДЛЛ форму как МДИЧайлд!!! Вотттт


 
Mim1 ©   (2004-09-16 15:44) [12]


> Если бы делал не правильно, то ничего бы не работало...


LMD !!!!

Уже ответили, и не раз.


 
Digitman ©   (2004-09-16 15:59) [13]


> 46_55_41_44 ©   (16.09.04 11:04) [11]


видимо ты, братец, изрядно туп ..

тебе чуть ли не открытым текстом намекают, что проблемы с якобы "неработоспособностью" метода ActiveMDIChild, вызываемого в данном контексте, вызваны именно неверным твоим алгоритмом назначения переменных Screen и Application при "инициализации" твоей ДЛЛ ! Ты же, даже не вникунув в суть проблемы, продолжаешь гнуть палку в ту же сторону ..


 
KSergey ©   (2004-09-16 16:21) [14]

2 46_55_41_44 ©

"Я все делаю правильно, но программа работает не правильно."

> [4] Digitman ©   (14.09.04 13:54)

Если здесь говорилось о том же, о чем позже растолковал Юрий - я бы никогда не допер... Ну нельзя же такие совсем уж туманные намеки давать ;)


 
Digitman ©   (2004-09-16 16:48) [15]


> KSergey ©   (16.09.04 16:21) [14]


> нельзя же такие совсем уж туманные намеки давать


намек существует для человека живого ума ... ищущего, творческого ума ...

грош цена намеку, сделанного в адрес "батонокидателя" ...

получив сей намек заглянуть в исх.тексты VCL для него - это выше предела человеческих возможностей ... здесь я бессилен(


 
46_55_51_44   (2004-09-17 16:18) [16]

Slushay yesli perexodit" na oskorbleniya, to ya toje mogu napisat"s shto o tebe dumayu... I uveryayu tebe malo ne pokajetsa...
*************
Prishli mne primer programmki, shtobi ona vosprinimala formu sozdannuyu iz DLL kak svoy MDIChild. To yest" rabotala ActiveMDIChild i vse takoye... I tak: V exe-shnike tol"ko odna MDIForm, a v DLL MDIChild-i... i Napisav skajem MainForm.ActiveMDIChild.BringtoFront libo shto-to yeshe mi poluchim ojidayemiy rezul"tat!!!
***********
I daje yesli vse shto ti govorish pro moye znaniye VCL pravda eto yeshye ne dayet tebe pravo perexodit" na oskorbleniya!!
Eto vsego-lish pokazivayet shto u tebya net samouvajeniya. Chelovek ne uvajayushiy drugix sam togo ne zaslujivayet!!! Pomoemu odna iz tseley etogo sayta v tom, shtobi pomogat" lyudam,a ne xait" ix.


 
46_55_51_44   (2004-09-17 16:21) [17]

Yesli prishlesh.. Ya tebe zdes skaju spasibo...
Shto ya absolutno ne znayu VCL...
i vse takoye.. uveryayu tebya moye samolubiye ot etogo ne postradayet!!!

da kstati pardon za latinisu.. Prosto eto komp inostra, a u nego net Ru... Vobshem pomoyemu vse ponyatno!!!


 
46_55_51_44   (2004-09-17 16:22) [18]

f_aslanov@hotmail.com prisilay...


 
Digitman ©   (2004-09-17 16:31) [19]


> 46_55_51_44


свое "самолюбие" тешь сам

а примеры кода, устраняющие ситуацию с якобы неработоспособностью ActiveMDIChild в твоем случае, тебе уже даны в [7] и [9] .. равно как дана и альтернативная рекомендация - просто собрать оба проекта с опцией использования ран-тайм-пакетов


 
46_55_51_44   (2004-09-17 17:00) [20]

Vse shto mne nado bilo sdelat" ya uje sdelal...
Chestnoye slovo!!!
I ne takim sposobom kakim ti govoril.. Build with Run-Time packages ya delat" ne xotel potomu shto ne oxota potom s soboy bpl taskat".

i vse je... Prosto radi interesa... sdelay, yesli ne trudno, i prishli... Tam je raboti minut na 15 maksimum...
Jdu...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.043 c
1-1095181528
Новичок!!!
2004-09-14 21:05
2004.10.03
Рисование на Image


3-1094228637
Сергей Ю.
2004-09-03 20:23
2004.10.03
Вопрос про запрос


9-1086474625
RyDmi
2004-06-06 02:30
2004.10.03
Работа с видеокартой


14-1092922063
Sergey Kaminski
2004-08-19 17:27
2004.10.03
Nikon 3700


4-1093446638
noname
2004-08-25 19:10
2004.10.03
Драйвер на Delphi!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский