|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
Добрый день. Сделал отдельную форму с календарем (BorderStyle формы равен 0 - none), которую предполагаю использовать как ниспадающий календарь из грида. При показе моего календаря (юзер нажимает кнопку в ячейке грида) текущая форма теряет фокус и становится неактивной, о чем свидетельствует потускневший цвет заголовка формы. (Оно и понятно, ведь фокус перешел на форму с календарем.) Но можно ли как-то избежать этого нежелательного в данном случае эффекта? Наверное, есть какая-то API-фукнция для установки цвета заголовка текущей формы... Начиная с XP, там не просто цвет, а градиент. Это несколько усложняет задачу. Может кто-нибудь что-то подсказать по этому поводу? Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 13:59 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
вам надо было окно делать другого класса. посмотрите api setwindowlong ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 14:06 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
сделать вместо формы activex control поместить его на ту же форму что и грид и показывать скрывать в нужном месте авторНаверное, есть какая-то API-фукнция для установки цвета заголовка текущей формы есть и даже будет работать только потребуется перехват оконной процедуры окна окна формы которую хотим показывать активной даже когда она не активна тк это специальное сообщение WM_... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 14:13 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
авторsetwindowlong не поможет я делал именно это именно так как написал через wm_... но если есть возможность сделать через activex control то надо делать через activex control это правильней как мне кажется 1 делаем свой UserControl в бейсике 2 добавляем туда грид 3 добавляем туда календарь выпадающий 4 вставляем этот UserControl вместо грида на нужную форму ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 14:16 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
Какого конкретно другого класса? Я по VB6 вопрос сейчас задаю, не по VB.NET. User Control вы имеете в виду? Но в этом случае большим минусом будет то, что он не сможет быть показан за рамками текущей формы, а в случае отдельной формы тут все ОК. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 14:18 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
Все так и сделано - грид это у меня UserControl, календарь там есть. Но сейчас я хочу его убрать от туда. Причина - рамки формы. Как установить цвет заголовка для формы, чтобы оно выглядело как активное? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 14:21 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
может установить свойство окна как ToolWindow в дизайнере форм? а может попробовать стиль окна поменять на toolwindow не пробовал я делал перехватом этих сообщений WM_NCACTIVATE - здесь можно задать что окно должно рисоваться активным даже если оно не активно WM_ACTIVATEAPP ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 14:31 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
На самом деле причина еще вот в чем. На форме много гридов-моих UserControl-ов. Соответственно, календарь, содержащийся на всякий случай в каждом из них множится. А ведь он может даже и не понадобиться (полей DateTime может вообще не быть в гридах). Помимо календаря, есть еще ряд других подобных ниспадающих типов - ниспадающая таблица, ниспадающий список с чекбоксами... В общем, я решил, что это неэффективно, когда они множатся, и именно поэтому пробую сейчас сделать вынести их в отдельную форму. Которая будет одна на все случаи. Ставлю вопрос боле точно - как не дать форме изменить цвет своего заголовка при показе другой формы? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 14:35 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
авторПомимо календаря, есть еще ряд других подобных ниспадающих типов - ниспадающая таблица, ниспадающий список с чекбоксами.. задача понятна только по-моему стандартным решением как раз является создания своего UserControl напихивания в него дополнительных конторолов на все случаи жизни в результате получится улучшенный грид и его уже пихать куда попало вместо стандартного грида но если надо именно окно которое вылазит за границы то надо пробовать что я написал надо пробовать стиль окна ToolWindow (ну как-то так он называется) есть и в дизайнере такое свойство для формы и в winapi по-моему есть даже два стиля для ToolWindow чем-то отличающиеся ну а если не поможет сделать перехват wm_ncactivate как я делал это работает ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 14:53 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
вот стиль WS_EX_TOOLWINDOW для его установки действительно надо использовать SetWindowLong как предлагал Konst_One ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 14:57 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
Игорь1973В общем, я решил, что это неэффективно, когда они множатся, и именно поэтому пробую сейчас сделать вынести их в отдельную формуКонтрол можно грузить динамически, то есть только при необходимости. Может этим путем пойти? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 14:58 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
авторКонтрол можно грузить динамически, то есть только при необходимости. Может этим путем пойти? не понял это как это поможет тому что заголовок окна будет всегда активен понятно можно динамически грузить только те контролы которые нужны особенно если эти контролы тяжелые и не всегда используются ускорится вывод на экран что важно я понимаю так (и так было у меня) есть главное окно в нем кнопка нажимаю кнопку показвается новое окно очевидно заголовок у этого окна активен а главного окна не активен те стандартное поведение окон а надо чтобы после появления второго окна заголовок остался активным я это делал через wm_ncactivate wm_activateapp попробовал в дизайнере установить toolwindow - не помогло окно активное только одно ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 15:17 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
может таккак это поможет тому что заголовок окна будет всегда активеня ответил только на то, что процитировал. То есть если напрягает то, что грузится много контролов ненужных при открытии формы, можно контролы подгружать при необходимости. А что касается заголовка окна - на это уже ответили без меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 15:33 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
Лично у меня ничего не получилось с субклассингом по непонятым причинам. Использовал вот такой код, размещенный в модуле: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 17:57 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
А зачем сабклассить то? вот так попробуйте свою форму-календарик открыть может таквот стиль WS_EX_TOOLWINDOW для его установки действительно надо использовать SetWindowLong как предлагал Konst_One ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 18:07 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
на первый взгляд так и надо сейчас у себя попробую просто это давно было у меня исходника нет но у меня точно работало авторKonst_One ToolWindow не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 18:13 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
ну вот у себя проверил все работает ничего не менял может просто забыли вызов subclass.. сделать на Form_Load Form_Unload ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 18:33 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
авторможет так У вас все работает в случае сабклассинга (мой код) или в случае установки стиля WS_EX_TOOLWINDOW с помощью SetWindowLong? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 19:31 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
работает код который я Ctrl+C Ctrl+V ничего не изменив а какая версия ОС может это как-то влияет? или тоже хр? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 19:41 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
ну может не на ту форму сабклассинг ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 19:46 |
|
Цвет заголовка активной формы
|
|||
---|---|---|---|
#18+
С этим сабклассингом проблемы возникает неслабые в разлиных других ситуациях - показываются другие формы из формы в режиме Modeless. Хотя внешне все казалось бы работает в простейшем примитивном варианте, как вы тестировали. Я, в общем, пару раз увидел вылет VB в других местах, и от сабклассинга решил отказаться. Сейчас остановился на варианте UserControl. Вроде бы все нормально получилось. Спасибо всем за помощь )) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.05.2012, 20:59 |
|
|
start [/forum/topic.php?fid=60&fpage=79&tid=2157829]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 135ms |
0 / 0 |