![]() |
|
|
![]()
|
|
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
Доброго всем времени суток!
Мне необходимо сделать всплывающее окно. Изначально я просто создал еще одну форму. Показывал ее когда надо и скрывал по событию OnDeactivate. В этом есть ряд недостатков, поэтому я решил создать компонент TPanel и показывать его как отдельное окно. Помогите пожалуйста с реализацией... Чтобы разрешить "всплывать" за пределы формы, в качестве родителя указываю рабочий стол:
Теперь, на сколько я знаю, нужно установить какие-то параметры с помощью функций SetWindowLong и SetWindowPos. А вот какие не знаю =( Надеюсь на вашу помощь... P.S. В правильном ли я направлении пошел вообще? |
|||
|
||||
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
Вычитал, что нужно установить:
а) стили окна WS_BORDER | WS_EX_PALETTEWINDOW;//SetWindowLong б) стиль класса окна CS_SAVEBITS; //SetWindowWord С пунктом а) все понятно. А вот как использовать SetWindowWord не знаю((( |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
| Superklug |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
Ну вот так например
Ведь любой контрол - это тоже окно. Поэтому, на сколько я понимаю, мы можем отобразить его как угодно... Еще недавно разбирался в компоненте, у которого "всплывает" TListBox. Там такой код:
Указать в качестве родителя рабочий стол у меня получилось. А как присвоить окну параметр CS_SAVEBITS не знаю =( В случае со второй формой есть несколько неудобств... Например при ее появлении, главная форма становится неактивной( А с фреймами я вообще никогда не работал... mrbrooks, помогите реализовать хотя бы какой-нибудь вариант. Заранее огромное спасибо! Это сообщение отредактировал(а) Superklug - 12.12.2008, 13:33 |
||||
|
|||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Superklug, да здесь можно решить сколь угодно разными способами. Так пойдет?
Присоединённый файл ( Кол-во скачиваний: 11 )
Superklug.rar 183,29 Kb |
|||
|
||||
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
mrbrooks, мне нужно немного не то.
Фактически это PopupMenu, только боле продвинутый... Т.е. представляет собой не просто список элементов, а группу контролов. Он должен пропадать так же как и любое всплывающее меню. Т.е. при щелчке вне меню либо нажатии Esc. Вы, на сколько я понял, использовали вторую форму. При ее появлении, главная форма становится неактивной. Как этого избежать? |
|||
|
||||
| xvr |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Нет, если мсье не мазохист конечно
|
||||||
|
|||||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
xvr, я ему аналогичное и скинул в архиве
Добавлено через 29 секунд И никаких ShowModal - ов - чес слово |
|||
|
||||
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
mrbrooks, xvr, прочитайте первый пост... Я так уже делал. Меня не устроил результат.
Как сделать так, чтобы при всплывании второго окна, первое осталось активным? |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Поставь второй форме флаг fsStayOnTop в проперть FormStyle, сделай ей Show(), затем снова активизируй первую форму(SetFocus()) |
|||
|
||||
| Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
Если так сделать, то первая форма будет неприятно "мигать". И еще при щелчке на вторую форму она, разумеется, станет активной... А может с помощью SetWindowLong можно какие нибудь параметры окна установить, чтобы оно неактивным было? Или подскажите как пользоваться функцией SetWindowWord... |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Попробуйте BorderStyle в bsToolWindow |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |