Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Как сделать, так чтобы объект Custom Windows всегда находился впереди. Да же если я работаю, например с Word, (причем Word развернут на весь экран), то Custom Windows все равно не перекрывался бы этим приложением. Например для того чтобы можно было глядя в этот объект набирать текст в Ворде , причем Ворд развернут на весь экран. Вик
объект Custom Windows всегда находился впереди. Да же если я работаю, например с Word, (причем Word развернут на весь экран), то
Чё то на блокера похож
Добавлено (04 Декабрь 2011, 20:49) --------------------------------------------- Может лучше сделать без контейнера? В настройках проекта задать режим окна поверх всех окон?
Дата регистрации: Вс, 30 Мая 2010, 21:05 Этож было вчера
пока никак, если только Peter не озадачится добавить такую опцию в команды внешних окон своего плагина zmFunctions. Опция действительно нужная и хорошо бы чтоб ее можно было вкл/выкл в процессе работы... Как задавать вопросы
Можно попробывать использовать Custom Windows в качестве главного окна , а главное наоборот в качестве Custom Windows, с опцией поверх всех. Пока наварное только так.
пока никак, если только Peter не озадачится добавить такую опцию в команды внешних окон своего плагина zmFunctions
Нужно создавать окно со стилем WS_EX_TOPMOST, иль выполнить SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); Вот если Peter реализует сие, то будет вам пруха. пысы, матюки с кодом не вам, а для Peterа.
Я как-то пробовал экспериментировать... Вся беда в том, что окно уже создано, и не принимает стиль WS_EX_TOPMOST. SetWindowPos тоже не годится, т.к. сделает окно TOPMOST только в пределах Z-последовательности относительно родительского окна (главного окна проекта), а не рабочего стола. Такие фокусы прокатывают только с окнами "верхнего уровня", но не с дочерними. В самих дэлфях тоже не так-то просто придать дочернему окну TOPMOST (точнее AlwaysOnTop), и приходится идти на разные ухищрения. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
В самих дэлфях тоже не так-то просто придать дочернему окну TOPMOST (точнее AlwaysOnTop), и приходится идти на разные ухищрения.
А вот в коле, с этим нет никаких проблем, там даж есть хвункция стейонтоп
function TControl.GetStayOnTop: Boolean; begin UpdateWndStyles; Result := LongBool( fExStyle and WS_EX_TOPMOST); end;
procedure TControl.SetStayOnTop(const Value: Boolean); begin if Value = GetStayOnTop then Exit; {>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>} if fHandle <> 0 then if Value then SetWindowPos( fHandle, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE ) else SetWindowPos( fHandle, HWND_NOTOPMOST, 0,0,0,0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE ) else if Value then fExStyle := fExStyle or WS_EX_TOPMOST else fExStyle := fExStyle and not WS_EX_TOPMOST; end;
function TControl.UpdateWndStyles: PControl; begin Result := @Self; if fHandle = 0 then Exit; {>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>} fStyle.Value := GetWindowLong( fHandle, GWL_STYLE ); fExStyle := GetWindowLong( fHandle, GWL_EXSTYLE ); fClsStyle := GetClassLong( fHandle, GCL_STYLE ); end;
Вот собсна ее реализация, форма в кол наследник от PControl, который исходит из TObj = object( _TObj ), _TObj имеет всего Init и VmtAddr. в кол идут не классы а объекты. Вот примерчег.
Добавлено (06 Декабрь 2011, 04:02) --------------------------------------------- Попробуй подшаманить с вцлью, как видиш там вроде одно апи, а ему до лампады вцль иль кол.
Да в VCL тоже есть все нужные прибамбасы, что-то типа Application.NormalizeTopMosts и т.п. Но я попробую, если будет время (с WinAPI) пошаманить. Maybe... В делфях-то любую задачу можно решить при желании, а вот как быть случае с NB... Пока хрен его знает.... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Peter, ну ты ведь попробывал мой пример? Он ведет себя така как нада иль нет?
Да, так как доктор прописал.
Quote (Alex3A)
Ты ж видиш, там фсе на апи.
Это понятно, но только этот способ не работает с формами сделанными в VCL, т.к. стиль WS_EX_TOPMOST форма насильно не принимает, а SetWindowPos дает тот же результат, о котором я и говорил. У меня нет под рукой исходников KOL (чтобы посмотреть на код создания окна), думаю что там окно создается иначе, чем в VCL. Но в VCL можно схитрить, например, перекрыть метод GreateParams в конструкторе формы. Там немного недоделано, но видно, что принципиально задачу решить можно без особых хлопот. См. прикрепление.
Только от всего этого не легче, т.к. нам надо для дочернего окна в NB-проекте.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
дык фторая форма то от нового апликейшен, даж кнопку внизу ставит. Я потому и занимаюсь не вецеелью а колом, что в нем имеется многа приятных мелкостей. Но в принципе, кнопу можно убрать сделав найде апликейшен. А в вецееле, на сколь помнится, в рантайме томпост создается пересозданием окна. А что ж можно придумать? Я ж хрен знаю, да и не тянет узнать, как там создается ваше Custom Windows, подумай, мож как та потянет коловская dcu шка? С пустой формой, а заполнять ее (сетпарент контролам на ее хендл), и менять размеры по апи?
дык фторая форма то от нового апликейшен, даж кнопку внизу ставит
Нет, не поэтому она вторую кнопку ставит, Application у обеих форм все-равно остается один. Там кода-то всего на пару строк. Я не стал заморачиваться со скрытием кнопки на панели задач (это длиннее, чем придать форме StayOnTop), потому и написал "недоделано".
Quote (Alex3A)
в рантайме томпост создается пересозданием окна.
Нет не помогает! Даже полностью динамическое создание VCL-формы "с нуля" (прыгая от TCustomForm) не помогает. Если же на WinAPI сделать, то все пучком.
Quote (Alex3A)
как там создается ваше Custom Windows
Судя по всему - стандартными средствами VCL.
Quote (Alex3A)
мож как та потянет коловская dcu шка?
Да никак она не потянет тут. Нам же для NeoBook треба, а не для Delphi. Тут надобно в дебри VCL лезть, и анализировать построчно процесс создания формы (может и найдется какая "зацепка", а может и нет), вот только вопрос: а нахрена оно надо? Овчинка выделки не стОит...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
wiksl, см.прикрепление. Внимательно изучите дэмку: имейте ввиду, что имеется код на событие проекта "Деактивация", также потребуется плагин zmFunctions. В принципе, все очень просто (странно, что никто раньше не додумался, и я тоже). Тонкости, надеюсь сами доведете до ума.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Все оказалось до опупения просто! Правда, пришлось тоже чуток схитрить.
Вот видиш, нашел выход. АПИ вовсе не знает и не хочет и не должно, ни кола и вецеели, их для нег не существует, а эт значит что со свойственными им прибамбасами нужно боротся ими же. А че схитрил, мож парента нулевого всунул?
В первом случае я примерно так и сделал (появилась лишняя кнопка на панели задач), а во втором просто через Application.OnDeactivate. В принципе, в необушном примере (из 19 поста) сделано все то же самое. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Вот пример без использования каких либо плагинов. Как это получилось - сам не пойму.(Делал проект примерно год назад или более)
Добавлено (13 Декабрь 2011, 15:58) --------------------------------------------- Хотя нет. Пример немного не тот , но объект Custom Windows всегда наверху необушного окна
Добавлено (13 Декабрь 2011, 16:02) --------------------------------------------- Повторить подобное при создании нового проекта уже не смог, видимо в самом текстовом документе (pub) какието изменения после моих экспериментов.
но объект Custom Windows всегда наверху необушного окна
Он (CustomWindow), в любом случае, будет поверх необушного окна.
Задача стояла иная - сделать CustomWindow StayOnTop, т.е. всегда поверх всех окон.
Quote (AS3856)
Повторить подобное при создании нового проекта уже не смог
Неудивительно.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Peter, немного ты непонял.Да Custom Windows сначала сверху главного окна, но если кликнуть по главному окну - Custom Windows скрывается за ним. У меня же вышло по другому - Custom Windows всегда сверху. ( правда ене всех окон а только родительского)
но если кликнуть по главному окну - Custom Windows скрывается за ним
Такое иногда(!) случается только после различных хаотичных "манипуляций" с CustomWindow при помощи плагинов. Если же окно пересоздать, то оно всегда будет поверх главного окна, и никак иначе. Так задумано самими разработчиками.
Quote (AS3856)
правда ене всех окон а только родительского
Правильно. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться