как сделать StayOnTop формы в мсе ???
Модератор: Модераторы
как сделать StayOnTop формы в мсе ???
В лазаре все просто: создал форму и св-ве FormStyle указал StayOnTop. И висит себе форма поверх главной. В мсе добился желаемого "результата" только когда вывел окно в виде модальной формы (при этом саму форму нужно свернуть развернуть - тогда есть доступ к главной форме).
- coyot.rush
- постоялец
- Сообщения: 309
- Зарегистрирован: 14.08.2009 08:59:48
Re: как сделать StayOnTop формы в мсе ???
В лазаре все просто: создал форму и св-ве FormStyle указал StayOnTop
И корректно работает под любым дистрибутивом Linux, с любым оконным менеджером???
Хотя вот тут говорится о смене фокуса http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html
Но как устоновить "всегда наверху" нет
_NET_ACTIVE_WINDOW
_NET_ACTIVE_WINDOW, WINDOW/32
The window ID of the currently active window or None if no window has the focus. This is a read-only property set by the Window Manager. If a Client wants to activate another window, it MUST send a _NET_ACTIVE_WINDOW client message to the root window:
_NET_ACTIVE_WINDOW
window = window to activate
message_type = _NET_ACTIVE_WINDOW
format = 32
data.l[0] = source indication
data.l[1] = timestamp
data.l[2] = requestor's currently active window, 0 if none
other data.l[] elements = 0
Source indication should be 1 when the request comes from an application, and 2 when it comes from a pager. Clients using older version of this spec use 0 as source indication, see the section called “Source indication in requests” for details. The timestamp is Client's last user activity timestamp (see _NET_WM_USER_TIME) at the time of the request, and the currently active window is the Client's active toplevel window, if any (the Window Manager may be e.g. more likely to obey the request if it will mean transferring focus from one active window to another).
Depending on the information provided with the message, the Window Manager may decide to refuse the request (either completely ignore it, or e.g. use _NET_WM_STATE_DEMANDS_ATTENTION).
Добавлено спустя 35 минут 59 секунд:
XRaiseWindow - разместить окно поверх остальных
http://www.asvcorp.ru/tech/linux/xwinprg/functions/XRaiseWindow.html
Код: Выделить всё
test(const sender: TObject);
var
prDisplay: PDisplay;
begin
prDisplay := XOpenDisplay ( nil );
if prDisplay = nil then
begin
writeln('Can not connect to the X server!');
exit;
end;
XRaiseWindow(prDisplay,mainfo.window.winid);
XCloseDisplay ( prDisplay );
end;не работает
OS : Mint 9
Добавлено спустя 3 минуты 24 секунды:
Показать Qt окно в X11 поверх всех http://blog.netstream.ru/2008/12/raise_x11_window/
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Re: как сделать StayOnTop формы в мсе ???
На MSE-формах есть даже кнопочка "оставаться наверху". То есть фишка предусмотренная.
Добавлено спустя 10 минут 49 секунд:
<form>.frame.grip.options+= go_topbutton и другие для оперативного перключения Z-порядка
Добавлено спустя 10 минут 49 секунд:
<form>.frame.grip.options+= go_topbutton и другие для оперативного перключения Z-порядка
Re: как сделать StayOnTop формы в мсе ???
мдя и эт есть ток в tdockform в простой форме нет...
Ладно попробую дома поиграть.
Дело в том что форму для поиска нужно держать всегда сверху (такое желание не у меня) кому угодно, мона посмотреть http://fayloobmennik.net/270787 (первый попавшийся обменник, не очень, но потянет). Все пока сыровато, но это дело поправимо
. Да и пока меня интересует вин версия а не лин. Ммм. Если я форму для поиска свернул а потом развернул и появился доступ к основному окну это баг.?
debi12345 - не досмотрело я
Попутно: как относится к кросс отчетам мсе репорт?
Ладно попробую дома поиграть.
Дело в том что форму для поиска нужно держать всегда сверху (такое желание не у меня) кому угодно, мона посмотреть http://fayloobmennik.net/270787 (первый попавшийся обменник, не очень, но потянет). Все пока сыровато, но это дело поправимо
debi12345 - не досмотрело я
Попутно: как относится к кросс отчетам мсе репорт?
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Re: как сделать StayOnTop формы в мсе ???
как относится к кросс отчетам мсе репорт
Не знаю, что такое "кросс-отчеты"
МСЕ-репорт позволяет комбинировать GUI с кодом, перезапускать генерацию с новой порцией данных в том же отчете - короче все,что душе угодно.
( есть у меня проектик PODPISKA, который часто фигурирует в ньюс-конфе - в нем все это безобразие интенсивно применяется )
Re: как сделать StayOnTop формы в мсе ???
debi12345 немного лазил по Вашим исходникам да и не только
Иванков (кажись). Тока лазил я по формам а не отчетам. Ну не удобен генератор отчетов в мсе (просто есть фас репорт - лицензия. После фаста мало что взлетало). Компилить не пытался по двум причинам (для проверки в действии):
1. Постер, я с ним не дружу
2. Там столько "юмора" что изучать и изучать (типа пособие для начинающих
)
Иногда в мсе вроде мелочь, а лопатить приходится...
Кросс, пивор как там ее еще "обзывают"... Уменя на работе куды не плюнь там кросс "закопан" да и не только в отчетах (благо грид в мсе ппц., в хорошем смысле слова)
1. Постер, я с ним не дружу
2. Там столько "юмора" что изучать и изучать (типа пособие для начинающих
Иногда в мсе вроде мелочь, а лопатить приходится...
Кросс, пивор как там ее еще "обзывают"... Уменя на работе куды не плюнь там кросс "закопан" да и не только в отчетах (благо грид в мсе ппц., в хорошем смысле слова)
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Re: как сделать StayOnTop формы в мсе ???
Иногда в мсе вроде мелочь, а лопатить приходится...
Это вопрос документирования.
Мартин просит за написание доки им самим 60.000 евро
Ну не удобен генератор отчетов в мсе
Задача удобства и не ставилась.
А ставилась - возможность создать ЛЮБОЙ отчет.
Re: как сделать StayOnTop формы в мсе ???
я бы больше взял
(сколько копеек, эхх)
Гдет пол года назад пытался сделать тулбар (аля офис). Было все красиво до максимизации главного окна. Т.е. дочерняя форма висит сверху главной пока не максимизируется окно. Тогда решил отказаться от данного "юмора". На данный момент ситуация не изменилась. Кстати в иде (по крайней мере в винде), если нажать "заветную" кнопку результат фиговенький... Т.е., как я понял, StayOnTop как таковой есть, но чет не доработано.
Гдет пол года назад пытался сделать тулбар (аля офис). Было все красиво до максимизации главного окна. Т.е. дочерняя форма висит сверху главной пока не максимизируется окно. Тогда решил отказаться от данного "юмора". На данный момент ситуация не изменилась. Кстати в иде (по крайней мере в винде), если нажать "заветную" кнопку результат фиговенький... Т.е., как я понял, StayOnTop как таковой есть, но чет не доработано.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Re: как сделать StayOnTop формы в мсе ???
Т.е., как я понял, StayOnTop как таковой есть, но чет не доработано.
Отпишите по пунктам, что не нравится. Я передам Мартину в ньюс-конфу.
Re: как сделать StayOnTop формы в мсе ???
1. Делаем 2 формы (одна главная, вторая док);
2. Создаем из главной док форму;
3. Проверяем находится она сверху (просто клацнул на главную, для простоты мона еще контролы повесить на главную);
4. Проверка показала: работает форма висит поверх главной;
5. А теперь максимизируем главную форму и... оппа где док форма делась.?
Попутно, еще баг:
Есть хорошая функция для показа доп. меню. Т.е. взял кнопку, popupmenu. В обработчике кнопки написал показать меню под кнопкой (не помню название процедуры, да это и не важно, она работает и отображает все правильно). Во время исполнения нажимаем кнопку, а потом максимизуруем окно. В результате popupmenu висит где первоначально создавалось.
Все это относиться к винде в лине не тестил.
Если Вам не сложно и понятно из это хоть что-то задайте Мартину, если нет то сам разберусь как "донести" ему в уши. Токо пожже.
2. Создаем из главной док форму;
3. Проверяем находится она сверху (просто клацнул на главную, для простоты мона еще контролы повесить на главную);
4. Проверка показала: работает форма висит поверх главной;
5. А теперь максимизируем главную форму и... оппа где док форма делась.?
Попутно, еще баг:
Есть хорошая функция для показа доп. меню. Т.е. взял кнопку, popupmenu. В обработчике кнопки написал показать меню под кнопкой (не помню название процедуры, да это и не важно, она работает и отображает все правильно). Во время исполнения нажимаем кнопку, а потом максимизуруем окно. В результате popupmenu висит где первоначально создавалось.
Все это относиться к винде в лине не тестил.
Если Вам не сложно и понятно из это хоть что-то задайте Мартину, если нет то сам разберусь как "донести" ему в уши. Токо пожже.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Re: как сделать StayOnTop формы в мсе ???
Во время исполнения нажимаем кнопку, а потом максимизуруем окно. В результате popupmenu висит где первоначально создавалось.
А куда оно (меню) должно уйти ?
Думаю, что здесь нужен скриншот со стрелками-указателями что не так.
Добавлено спустя 49 минут 54 секунды:
1. Делаем 2 формы (одна главная, вторая док);
[..]
Здесь Мартин просит тесткэйс
Re: как сделать StayOnTop формы в мсе ???
Вопрос решил "модальностью", через док - лажа. У него срабатывает как - то по верх окон странно. А для теста можна и в иде галочку поставить и посмотреть: как док держиться сверху...
По поводу меню: http://depositfiles.com/files/nkpuvmpfc
По поводу меню: http://depositfiles.com/files/nkpuvmpfc
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Re: как сделать StayOnTop формы в мсе ???
Попутно, еще баг:
Есть хорошая функция для показа доп. меню. Т.е. взял кнопку, popupmenu. В обработчике кнопки написал показать меню под кнопкой (не помню название процедуры, да это и не важно, она работает и отображает все правильно). Во время исполнения нажимаем кнопку, а потом максимизуруем окно. В результате popupmenu висит где первоначально создавалось.
И ответ:
As designed, popup menus are normally triggered by RighClick and therefore
not anchored to a base widget. Please use tmainmenuwidget (tab 'Widget')
instead.
PS:
То есть функцию поп-апа может выполнять также виджет, предназначенный для основного меню.
Re: как сделать StayOnTop формы в мсе ???
- имеет фокус ??? (работа с клавиатурой, без мыши)tmainmenuwidget
Т.е. - это не баг. И краше использовать другой компонент. А если нужно именно так. Ведь существуют подобные реализации. Т.е. кнопка - popup.
Re: как сделать StayOnTop формы в мсе ???
кстати сам popup реагирует подобным образом:нажимаем правую клавищу, вылазит меню, потом максимизируем окно и
прикольно однако.
