![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MDI из DLL
Dennis I. Komarov © (2008-10-06 14:04:00)Гуру!
Есть ли "костыль" (или хорошая статейка) КАК НАДО это делать...
В нете много всякой охинеи, но вопрос в том КАК ПРАВИЛЬНО...
Dennis I. Komarov (2008-10-08 09:43:00) [1]
> Сергей М. © (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]
> Надо делать как надо, а как не надо - делать не надо (вост.
> мудр.)
Но перед тем как делать, надо знать как не надо :)
Германн (2008-10-08 00:46:00) [2]
> Сергей М. © (07.10.08 20:32) [34]
До автора ещё, имхо, явно не дошло, что MDI в Windows нет.
Leonid Troyanovsky (2008-10-07 22:57:00) [3]
> Dennis I. Komarov © (06.10.08 14:04)
> Есть ли "костыль" (или хорошая статейка) КАК НАДО это делать.
Надо делать как надо, а как не надо - делать не надо (вост. мудр.)
--
Regards, LVT.
Сергей М. (2008-10-07 20:32:00) [4]
> Свойств MDI ес-но нету
Так. ты, похоже, уже опух с формулировкой вопроса)
Опять взялся за МДИ, хотя в [18] черным по-русски написано про MDI и VCL)
Dennis I. Komarov (2008-10-07 17:02:00) [5]Так наврал... надо, наверное, так:
function CreateFrame(hWnd: HWND): Boolean; stdcall;
begin
...
end;
и из приложения hWnd:=MainForm.Handle;
а вот как теперь TFrame создавать на MainForm через hWnd?
Dennis I. Komarov (2008-10-07 16:15:00) [6]EConvertError...
Palladin (2008-10-07 15:56:00) [7]а так ?
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 15:47:00) [8][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:45:00) [9]
> Dennis I. Komarov © (07.10.08 12:34) [26]
а дальше... а что дальше? создаешь шаблонную форму, кидаешь на нее OleContainer... дальше по вкусу
Dennis I. Komarov (2008-10-07 13:57:00) [10]
> Василий Жогарев © (07.10.08 13:15) [27]
Посмотрел...
При всем уважении, Вы ветку прочитали или так...
Василий Жогарев (2008-10-07 13:15:00) [11]
> MDI из DLL
Вот это жвачка.... 8)
Посмотри может это поможет...
http://agpu.net/forum/showthread.php?t=486
Dennis I. Komarov (2008-10-07 12:34:00) [12]
> Palladin © (07.10.08 11:49) [25]
Да это не проблема... долго ли умеючи...
В D7 создал
Получил библиотеку (library), к ней юнит с кучей всего. Форма (AX). на нее кидаются батоны как обычно. Свойств MDI ес-но нету. Из библиотеки куча экспортируемых функций.
Дальше как ее готовить и в чем принципиальное различие между TForm и TActiveFormX? Как оно (окно) должно вписываться в мою Main форму? и т.д. и т.п.
Palladin (2008-10-07 11:49:00) [13]Просто ручками все делать нужно. Ручками. Я так понимаю в TD просто нет Wizard'ов
Dennis I. Komarov (2008-10-07 11:46:00) [14]
> Сергей М. © (07.10.08 11:26) [22]
> Что-то мешает этому ?
Да собственно, ничего не мешает.
Ищутся пути решения... Крест на них пока никто не ставил
ЗЫ Собствено, где о них хорошо написано?
> Palladin © (07.10.08 11:27) [23]
Конечно.
Но почему тогда от меня это скрывает?
New Items > ActiveX > ActiveX Library и все, в то время как у D7 много еще всего кроме...
Palladin (2008-10-07 11:27:00) [15]Turbo Delphi, наверное. Все он знает.
Сергей М. (2008-10-07 11:26:00) [16]
> 1. TDelphi не знает о существовании таковой
TDelphi - это что еще за зверь ?
> 2. Предмет мне нов и подлежит изучению
Что-то мешает этому ?
Dennis I. Komarov (2008-10-07 11:18:00) [17]
> Сергей М. © (07.10.08 10:35) [20]
1. TDelphi не знает о существовании таковой :(
2. Предмет мне нов и подлежит изучению...
3. [15] чем плохо?
Сергей М. (2008-10-07 10:35:00) [18]
> в длл должна быть не форма
Ну почему же не форма ?
Можно и форму, только она д.б. ActiveX-формой
Dennis I. Komarov (2008-10-07 10:32:00) [19]
> Сергей М. © (07.10.08 09:46) [18]
Да забили уже на формы...
востребованность stdcall вырастает из необходимости возможности писать интерфейсы (то что в длл) на различных платформах. Исходя их того что VCL-форму туда можно засутуть только из Delhpi/BCB делаем вывод, что в длл должна быть не форма, отсюда на формы и забили...
Сергей М. (2008-10-07 09:46:00) [20]
> Dennis I. Komarov © (07.10.08 09:18) [17]
VCL-форма MDIChild-стиля неможет существовать без существования основной VCL-формы MDIParent-стиля.
Основная VCL-форма MDIParent-стиля м.б. создана только Делфи/ВСВ-приложением.
Делфи-среда не требует обязательности использования stdcall-соглашения о межмодульных вызовах.
Так зачем же тебе stdcall ?