Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TMenuItem.Click -> any.dll\procedure


Страницы:   1 2 3 4 5 6 7 8

Dennis I. Komarov ©   (2009-05-22 10:38:00) 

Вопрос - не вопрос но:

Есть: некое приложение, интерфейс которого грузим из некой БД согласно правам пользователя, который запустил это приложение. В частности, возьмем ситуацию с TMainMenu. Согласно правам загрузилось дерево меню и подменюшек. Есть некая "ссылка" (int) на то, что должно выполнится при вызове соответствующего пункта. Процедура сего действия, а так же все интерфейсы и т.п. вынесены в библиотеку (dll).

Вопрос такой: Какая (а точнее, кто придумает лучшую) логика должна быть, чтобы связать конечный пункт менюшки с соответствующей процедурой в библиотеке, при том чтобы выполнялось условие: в приложении описана только логика а конкретные данные вынесены из него, т.е. при добавлении нового пункта (в БД) не изменялось само приложение, а только библиотека (или добавлялась новая)


Сергей М.   (2009-05-26 10:16:00) [81]


> AParent <> 0


А вот фрагмент "генофонда" говорит об ином..
Ты вникни в него, я же не зря привел его ..


Сергей М.   (2009-05-26 10:09:00) [82]

Это ты где смотришь ?
Значение фактическипереданного хэндла нужно смотреть уже в теле конструктора, а не в коде, вызывающем конструктор ..


Dennis I. Komarov   (2009-05-26 10:09:00) [83]

function CreateIUsers;
begin
 ShowMessage(InttoStr(AParent));
 if AParent <> 0 then
   with TFrameUsers.CreateParented(AParent) do begin
     Result:=Handle;
   end;
end;


AParent <> 0


Dennis I. Komarov   (2009-05-26 10:04:00) [84]


> if (WndParent = 0) and (Style and WS_CHILD <> 0) then
>
> WndParent у тебя равен нулю.
>
> А говоришь "передается")


но x.Handle <> 0 :(


Сергей М.   (2009-05-26 09:59:00) [85]


> кто-нить объяснит почему нету Parent-окна?


Потому что ты непередаешь его (факт.параметром в конструктор передается нуль), что еще не понятно ?)


Сергей М.   (2009-05-26 09:58:00) [86]


> где в коде намек на MDIParent?


А мне почем знать, что в идентификаторе TFormMDIBase Chпостфикс у тебя означает сокращение именно от "Child", а не что-то иное ?)


Dennis I. Komarov   (2009-05-26 09:55:00) [87]

Так, ну кто-нить объяснит почему нету Parent-окна?


> Это ты что же, хочешь сделать parent'ом окно MDIParent-формы ?)



> Нет, против окна MDIChild-формы я ничего не имею)

И где в коде намек на MDIParent?


Сергей М.   (2009-05-26 09:51:00) [88]

if (WndParent = 0) and (Style and WS_CHILD <> 0) then

WndParent у тебя равен нулю.

А говоришь "передается")


Сергей М.   (2009-05-26 09:42:00) [89]


> Dennis I. Komarov ©   (25.05.09 17:40) [62]


> Где Parent-окно потерялось?


А вот где:

procedure TWinControl.CreateWnd;
var
 Params: TCreateParams;
 TempClass: TWndClass;
 ClassRegistered: Boolean;
begin
 CreateParams(Params);
 with Params do
 begin
   if (WndParent = 0) and (Style and WS_CHILD <> 0) then
     if (Owner <> nil)and (csReading in Owner.ComponentState) and
       (Owner is TWinControl) then
       WndParent := TWinControl(Owner).Handle
     else
       raise EInvalidOperation.CreateFmt(SParentRequired, [Name]); // <--здесь
..


Slym   (2009-05-26 06:15:00) [90]

Сергей М. ©   (25.05.09 17:24) [61]
проще свой простенький фреймворк напесадь


Dennis I. Komarov   (2009-05-25 17:40:00) [91]


> Так ведь в самую пору выходить из лесу, коль скоро "кроссплатформенностью"
> озаботился ..

Выйду, выйду... :) Где Parent-окно потерялось?


Сергей М.   (2009-05-25 17:24:00) [92]


> не создавал я ActiveX ни разу. Ну темный лес


Так ведь в самую пору выходить из лесу, коль скоро "кроссплатформенностью" озаботился ..


Dennis I. Komarov   (2009-05-25 17:07:00) [93]


> а ничего, что сразу после ShowUserI(x.Handle); делается
> FreeLibrary(LibHandle); ?

Ну дас, косяк :) но на ошибку сие не влияет, т.к. она происходит до этого.


> Да все оттуда же)
>
> То у тебя "прокатывает", то "не прокатывает" - метод научного
> тыка осваиваешь ?)
>
> Взял бы да оформил свой фрейм как ActiveX-контрол - вот
> тебе и готовый "кроссплатформенный интерфейс"... Я ж тебе
> не зря про COM/OLE намекал, а ты все про воробьев да про
> пушки) ..

Ну опять 25... Ну не создавал я ActiveX ни разу. Ну темный лес... Регистрация всякая, COM/OLE ...


Сергей М.   (2009-05-25 16:53:00) [94]


> clickmaker ©   (25.05.09 16:48) [57]


К 57-му посту маразм только крепчает)


Сергей М.   (2009-05-25 16:51:00) [95]


> откуда возникают такие вопросы?


Да все оттуда же)

То у тебя "прокатывает", то "не прокатывает" - метод научного тыка осваиваешь ?)

Взял бы да оформил свой фрейм как ActiveX-контрол - вот тебе и готовый "кроссплатформенный интерфейс"... Я ж тебе не зря про COM/OLE намекал, а ты все про воробьев да про пушки) ..


clickmaker   (2009-05-25 16:48:00) [96]

а ничего, что сразу после ShowUserI(x.Handle); делается FreeLibrary(LibHandle); ?


Dennis I. Komarov   (2009-05-25 16:43:00) [97]


> а зачем владельцем MDIChild-формы выбран объект Application

Собственно, а почему бы и нет? Форма создается без проблем, откуда возникают такие вопросы? :)


Сергей М.   (2009-05-25 16:31:00) [98]


> окно MDIChild-формы, а что - не окно?


Нет, против окна MDI Child-формы я ничего не имею)
Впрочем, и тут возникает тот же вопрос - а зачем владельцем MDIChild-формы выбран объект Application ?


Dennis I. Komarov   (2009-05-25 16:20:00) [99]


> окно MDIParent-формы

окно MDIChild-формы, а что - не окно? :(


Сергей М.   (2009-05-25 16:15:00) [100]

Это ты что же, хочешь сделать parent'ом окно MDIParent-формы ?)


Страницы:   1 2 3 4 5 6 7 8

Наверх

Титульная страница Поиск, карта сайта Написать письмо