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

Вниз

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

Наверх




Память: 0.56 MB
Время: 0.019 c
15-1221736846
Vlad Oshin
2008-09-18 15:20
2008.11.16
не знает ли кто ссылку на PL/SQL Developer, приемы работы?


2-1223290088
MsGuns
2008-10-06 14:48
2008.11.16
Можно ли поместить картинку в библиотечный модуль ?


15-1221713615
avr
2008-09-18 08:53
2008.11.16
Бортовой компьютер на микроконтроллере.


15-1221678183
@!!ex
2008-09-17 23:03
2008.11.16
Программа для создания врапперов


2-1223534143
Zalumhan
2008-10-09 10:35
2008.11.16
дату из DateTimePicker в переменную