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

Вниз

MDI из DLL   Найти похожие ветки 

 
Dennis I. Komarov ©   (2008-10-06 14:04) [0]

Гуру!

Есть ли "костыль" (или хорошая статейка) КАК НАДО это делать...
В нете много всякой охинеи, но вопрос в том КАК ПРАВИЛЬНО...


 
Palladin ©   (2008-10-06 14:35) [1]

правильно - bpl


 
Dennis I. Komarov ©   (2008-10-06 14:37) [2]

нет, bpl - это из другой жизни... нуно dll, причем stdcall


 
Palladin ©   (2008-10-06 14:40) [3]

а, собственно, как ты себе это представляешь? что именно должно быть в dll? форма? окно? что?


 
Сергей М. ©   (2008-10-06 14:42) [4]


> причем stdcall


Почему именно stdcall ?


 
Palladin ©   (2008-10-06 14:42) [5]


> нуно dll, причем stdcall

а вообще, ActiveX так и напрашивается...


 
Vlad Oshin ©   (2008-10-06 15:16) [6]


> нет, bpl - это из другой жизни... нуно dll, причем stdcall

ну и пиши dll, но с bpl

http://hghltd.yandex.net/yandbtm?url=http%3A%2F%2Fwww.softwarer.ru%2Fpackages.html&text=%D4%E0%EA%F2%E8%F7%E5%F1%EA%E8%20%E2%20%FD%F2%EE%E9%20%F1%F2%E0%F2%FC%E5%20%FF%20%F3%F2%E2%E5%F0%E6%E4%E0%FE%20%F1%EB%E5%E4%F3%FE%F9%E5%E5%3A%20%E4%EB%FF%20Delphi%20%F1%F3%F9%E5%F1%F2%E2%F3%E5%F2%20%F2%E5%F5%ED%EE%EB%EE%E3%E8%FF


 
Amoeba ©   (2008-10-06 16:14) [7]

Статья: О загрузке дочерней формы (MDIChild) из DLL.
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=276


 
clickmaker ©   (2008-10-06 16:16) [8]

TFrame


 
Dennis I. Komarov ©   (2008-10-06 16:45) [9]


> Сергей М. ©   (06.10.08 14:42) [4]


> Palladin ©   (06.10.08 14:40) [3]

Даже сейчас не готов ответить...
Задача приблизительно: слелать "универсальную" оболочку, к которой после будут создаваться баблиотеки (не обязательно на Delphi), и в результате динамически подгружать интерфейс. Сперва стал искать в районе MDI...


> Amoeba ©   (06.10.08 16:14) [7]

Читал ... многое не понравилось...


> clickmaker ©   (06.10.08 16:16) [8]

*SCRATCH*


 
clickmaker ©   (2008-10-06 16:47) [10]

> > clickmaker ©   (06.10.08 16:16) [8]
>
> *SCRATCH*

*BEER*


 
Dennis I. Komarov ©   (2008-10-06 17:01) [11]

TFrame можно создать, скажем, из MSVC?


 
clickmaker ©   (2008-10-06 17:02) [12]

> TFrame можно создать, скажем, из MSVC?

CreateWindow
возвращаешь hwnd, а что это: фрейм или черт в ступе - не важно


 
Сергей М. ©   (2008-10-06 17:05) [13]


> TFrame можно создать, скажем, из MSVC?


Для общения между модулями, построенными в разных средах разработки, мелкомягкими специально придумана технология OLE/COM.


 
Dennis I. Komarov ©   (2008-10-06 17:57) [14]


> Сергей М. ©   (06.10.08 17:05) [13]

Вот этого для полного счастья тут точно не хватает ;)


 
clickmaker ©   (2008-10-06 18:02) [15]

> [14] Dennis I. Komarov ©   (06.10.08 17:57)

смотри: вся логика MDI находится в экзе. А DLL, так сказать, экспортирует окна, которые ты потом просто кладешь на MDI-чаилды. Поэтому, в принципе неважно на чем DLL написана. Это могут быть и панели и фреймы и мфсишные CWnd


 
Игорь Шевченко ©   (2008-10-06 19:07) [16]

странная идея. ведь эти сторонние библиотеки невесть на чем написанные, должны же в своих окнах что-то отображать ? а откуда они это узнают, если основа на delphi написана ?


 
Dennis I. Komarov ©   (2008-10-07 09:18) [17]


> clickmaker ©   (06.10.08 18:02) [15]

*THUMBS UP*


> Игорь Шевченко ©   (06.10.08 19:07) [16]

Каждое окно пишется под определеные действия (цели) и само "знает" что от него требуется если его вызвали


 
Сергей М. ©   (2008-10-07 09:46) [18]


> Dennis I. Komarov ©   (07.10.08 09:18) [17]


VCL-форма MDIChild-стиля не может существовать без существования основной VCL-формы MDIParent-стиля.

Основная VCL-форма MDIParent-стиля м.б. создана только Делфи/ВСВ-приложением.

Делфи-среда не требует обязательности использования stdcall-соглашения о межмодульных вызовах.

Так зачем же тебе stdcall ?


 
Dennis I. Komarov ©   (2008-10-07 10:32) [19]


> Сергей М. ©   (07.10.08 09:46) [18]

Да забили уже на формы...
востребованность stdcall вырастает из необходимости возможности писать интерфейсы (то что в длл) на различных платформах. Исходя их того что VCL-форму туда можно засутуть только из Delhpi/BCB делаем вывод, что в длл должна быть не форма, отсюда на формы и забили...


 
Сергей М. ©   (2008-10-07 10:35) [20]


> в длл должна быть не форма


Ну почему же не форма ?
Можно и форму, только она д.б. ActiveX-формой


 
Dennis I. Komarov ©   (2008-10-07 11:18) [21]


> Сергей М. ©   (07.10.08 10:35) [20]

1. TDelphi не знает о существовании таковой :(
2. Предмет мне нов и подлежит изучению...
3. [15] чем плохо?


 
Сергей М. ©   (2008-10-07 11:26) [22]


> 1. TDelphi не знает о существовании таковой


TDelphi - это что еще за зверь ?


> 2. Предмет мне нов и подлежит изучению


Что-то мешает этому ?


 
Palladin ©   (2008-10-07 11:27) [23]

Turbo Delphi, наверное. Все он знает.


 
Dennis I. Komarov ©   (2008-10-07 11:46) [24]


> Сергей М. ©   (07.10.08 11:26) [22]
> Что-то мешает этому ?

Да собственно, ничего не мешает.
Ищутся пути решения... Крест на них пока никто не ставил
ЗЫ Собствено, где о них хорошо написано?


> Palladin ©   (07.10.08 11:27) [23]

Конечно.
Но почему тогда от меня это скрывает?
New Items > ActiveX > ActiveX Library и все, в то время как у D7 много еще всего кроме...


 
Palladin ©   (2008-10-07 11:49) [25]

Просто ручками все делать нужно. Ручками. Я так понимаю в TD просто нет Wizard"ов


 
Dennis I. Komarov ©   (2008-10-07 12:34) [26]


> Palladin ©   (07.10.08 11:49) [25]

Да это не проблема... долго ли умеючи...
В D7 создал
Получил библиотеку (library), к ней юнит с кучей всего. Форма (AX). на нее кидаются батоны как обычно. Свойств MDI ес-но нету. Из библиотеки куча экспортируемых функций.

Дальше как ее готовить и в чем принципиальное различие между TForm и TActiveFormX? Как оно (окно) должно вписываться в мою Main форму? и т.д. и т.п.


 
Василий Жогарев ©   (2008-10-07 13:15) [27]


> MDI из DLL


Вот это жвачка.... 8)

Посмотри может это поможет...

http://agpu.net/forum/showthread.php?t=486


 
Dennis I. Komarov ©   (2008-10-07 13:57) [28]


> Василий Жогарев ©   (07.10.08 13:15) [27]

Посмотрел...
При всем уважении, Вы ветку прочитали или так...


 
Palladin ©   (2008-10-07 15:45) [29]


> Dennis I. Komarov ©   (07.10.08 12:34) [26]

а дальше... а что дальше? создаешь шаблонную форму, кидаешь на нее OleContainer... дальше по вкусу


 
Dennis I. Komarov ©   (2008-10-07 15:47) [30]

[dll]

function CreateFrame(App: TApplication): Boolean; stdcall;
begin
 with TAnyFrame.Create(App) do begin
   Parent:=App.MainForm;
   HFrame:=Handle;
 end;
 Result:=true;
end;


у TAnyFrame св-во ParentFont:=false;

Объект создается, но его не видно на MainForm. Где чего не КУ?
TScreen?


 
Palladin ©   (2008-10-07 15:56) [31]

а так ?

Function GetExceptString:String;
Begin
SetLength(Result,500);
SetLength(Result,ExceptionErrorMessage(ExceptObject,ExceptAddr,PChar(Result),500 ));
Result:=Trim("(!!!) "+Result);
end;

function CreateFrame(App: TApplication): Boolean; stdcall;
begin
Try
 with TAnyFrame.Create(App) do begin
   Parent:=App.MainForm;
   HFrame:=Handle;
 end;
 Result:=True;
Except
 MessageBox(0,PChar(GetExceptString),"Exception",mb_ok);
 Result:=False;
End;
end;


 
Dennis I. Komarov ©   (2008-10-07 16:15) [32]

EConvertError...


 
Dennis I. Komarov ©   (2008-10-07 17:02) [33]

Так наврал... надо, наверное, так:

function CreateFrame(hWnd: HWND): Boolean; stdcall;
begin
...
end;

и из приложения hWnd:=MainForm.Handle;

а вот как теперь TFrame создавать на MainForm через hWnd?


 
Сергей М. ©   (2008-10-07 20:32) [34]


> Свойств MDI ес-но нету


Так. ты, похоже, уже опух с формулировкой вопроса)

Опять взялся за МДИ, хотя в [18] черным по-русски написано про MDI и VCL)


 
Leonid Troyanovsky ©   (2008-10-07 22:57) [35]


> Dennis I. Komarov ©   (06.10.08 14:04)  

> Есть ли "костыль" (или хорошая статейка) КАК НАДО это делать.

Надо делать как надо, а как не надо - делать не надо (вост. мудр.)

--
Regards, LVT.


 
Германн ©   (2008-10-08 00:46) [36]


> Сергей М. ©   (07.10.08 20:32) [34]

До автора ещё, имхо, явно не дошло, что MDI в Windows нет.


 
Dennis I. Komarov ©   (2008-10-08 09:43) [37]


> Сергей М. ©   (07.10.08 20:32) [34]


> Германн ©   (08.10.08 00:46) [36]

Нет, мне всетаки интересно, почему Вы читаете столь старые посты но никак не новые?

От MDI я пока вроде и не отказывался, с той разницой, что в библиотеке держать не форму, а окно (TFrame), которое импортировать из библиотеки на Main или MDIChild форму которые создаются в EXE как предложено в [15]

И где написано, что я ожидал увидить в AX MDI св-ва? Я лишь описал чего получилось, т.к. ни разу не работал с AX...


> Leonid Troyanovsky ©   (07.10.08 22:57) [35]
> Надо делать как надо, а как не надо - делать не надо (вост.
>  мудр.)

Но перед тем как делать, надо знать как не надо :)



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

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

Наверх





Память: 0.53 MB
Время: 0.006 c
3-1209464046
Дима
2008-04-29 14:14
2008.11.16
Визуализация Иерархической структуры


15-1221386389
@!!ex
2008-09-14 13:59
2008.11.16
Почувствуй разницу...


2-1223392031
Matveih1
2008-10-07 19:07
2008.11.16
Как передать соединение с БД в подгружаемый модуль?


15-1221485083
stas
2008-09-15 17:24
2008.11.16
Драйвер типа RAM диска


15-1221712150
KilkennyCat
2008-09-18 08:29
2008.11.16
О японцах и русском языке.





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