как сделать StayOnTop формы в мсе ???

Вопросы программирования и использования MSEide + MSEgui.

Модератор: Модераторы

Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

как сделать StayOnTop формы в мсе ???

Сообщение amateur »

В лазаре все просто: создал форму и св-ве FormStyle указал StayOnTop. И висит себе форма поверх главной. В мсе добился желаемого "результата" только когда вывел окно в виде модальной формы (при этом саму форму нужно свернуть развернуть - тогда есть доступ к главной форме).
Аватара пользователя
coyot.rush
постоялец
Сообщения: 309
Зарегистрирован: 14.08.2009 08:59:48

Re: как сделать StayOnTop формы в мсе ???

Сообщение coyot.rush »

В лазаре все просто: создал форму и св-ве 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 формы в мсе ???

Сообщение debi12345 »

На MSE-формах есть даже кнопочка "оставаться наверху". То есть фишка предусмотренная.

Добавлено спустя 10 минут 49 секунд:
<form>.frame.grip.options+= go_topbutton и другие для оперативного перключения Z-порядка
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: как сделать StayOnTop формы в мсе ???

Сообщение amateur »

мдя и эт есть ток в tdockform в простой форме нет...
Ладно попробую дома поиграть.

Дело в том что форму для поиска нужно держать всегда сверху (такое желание не у меня) кому угодно, мона посмотреть http://fayloobmennik.net/270787 (первый попавшийся обменник, не очень, но потянет). Все пока сыровато, но это дело поправимо :). Да и пока меня интересует вин версия а не лин. Ммм. Если я форму для поиска свернул а потом развернул и появился доступ к основному окну это баг.?

debi12345 - не досмотрело я :)


Попутно: как относится к кросс отчетам мсе репорт?
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: как сделать StayOnTop формы в мсе ???

Сообщение debi12345 »

как относится к кросс отчетам мсе репорт

Не знаю, что такое "кросс-отчеты" :)
МСЕ-репорт позволяет комбинировать GUI с кодом, перезапускать генерацию с новой порцией данных в том же отчете - короче все,что душе угодно.

( есть у меня проектик PODPISKA, который часто фигурирует в ньюс-конфе - в нем все это безобразие интенсивно применяется )
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: как сделать StayOnTop формы в мсе ???

Сообщение amateur »

debi12345 немного лазил по Вашим исходникам да и не только :) Иванков (кажись). Тока лазил я по формам а не отчетам. Ну не удобен генератор отчетов в мсе (просто есть фас репорт - лицензия. После фаста мало что взлетало). Компилить не пытался по двум причинам (для проверки в действии):
1. Постер, я с ним не дружу :(
2. Там столько "юмора" что изучать и изучать (типа пособие для начинающих :))

Иногда в мсе вроде мелочь, а лопатить приходится...


Кросс, пивор как там ее еще "обзывают"... Уменя на работе куды не плюнь там кросс "закопан" да и не только в отчетах (благо грид в мсе ппц., в хорошем смысле слова)
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: как сделать StayOnTop формы в мсе ???

Сообщение debi12345 »

Иногда в мсе вроде мелочь, а лопатить приходится...

Это вопрос документирования.
Мартин просит за написание доки им самим 60.000 евро :)

Ну не удобен генератор отчетов в мсе

Задача удобства и не ставилась.
А ставилась - возможность создать ЛЮБОЙ отчет.
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: как сделать StayOnTop формы в мсе ???

Сообщение amateur »

я бы больше взял :) (сколько копеек, эхх)

Гдет пол года назад пытался сделать тулбар (аля офис). Было все красиво до максимизации главного окна. Т.е. дочерняя форма висит сверху главной пока не максимизируется окно. Тогда решил отказаться от данного "юмора". На данный момент ситуация не изменилась. Кстати в иде (по крайней мере в винде), если нажать "заветную" кнопку результат фиговенький... Т.е., как я понял, StayOnTop как таковой есть, но чет не доработано.
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: как сделать StayOnTop формы в мсе ???

Сообщение debi12345 »

Т.е., как я понял, StayOnTop как таковой есть, но чет не доработано.

Отпишите по пунктам, что не нравится. Я передам Мартину в ньюс-конфу.
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: как сделать StayOnTop формы в мсе ???

Сообщение amateur »

1. Делаем 2 формы (одна главная, вторая док);
2. Создаем из главной док форму;
3. Проверяем находится она сверху (просто клацнул на главную, для простоты мона еще контролы повесить на главную);
4. Проверка показала: работает форма висит поверх главной;
5. А теперь максимизируем главную форму и... оппа где док форма делась.?

Попутно, еще баг:
Есть хорошая функция для показа доп. меню. Т.е. взял кнопку, popupmenu. В обработчике кнопки написал показать меню под кнопкой (не помню название процедуры, да это и не важно, она работает и отображает все правильно). Во время исполнения нажимаем кнопку, а потом максимизуруем окно. В результате popupmenu висит где первоначально создавалось.

Все это относиться к винде в лине не тестил.


Если Вам не сложно и понятно из это хоть что-то задайте Мартину, если нет то сам разберусь как "донести" ему в уши. Токо пожже.
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: как сделать StayOnTop формы в мсе ???

Сообщение debi12345 »

Во время исполнения нажимаем кнопку, а потом максимизуруем окно. В результате popupmenu висит где первоначально создавалось.

А куда оно (меню) должно уйти ?
Думаю, что здесь нужен скриншот со стрелками-указателями что не так.

Добавлено спустя 49 минут 54 секунды:
1. Делаем 2 формы (одна главная, вторая док);
[..]

Здесь Мартин просит тесткэйс
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: как сделать StayOnTop формы в мсе ???

Сообщение amateur »

Вопрос решил "модальностью", через док - лажа. У него срабатывает как - то по верх окон странно. А для теста можна и в иде галочку поставить и посмотреть: как док держиться сверху...
По поводу меню: http://depositfiles.com/files/nkpuvmpfc
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: как сделать StayOnTop формы в мсе ???

Сообщение debi12345 »

Попутно, еще баг:
Есть хорошая функция для показа доп. меню. Т.е. взял кнопку, 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:
То есть функцию поп-апа может выполнять также виджет, предназначенный для основного меню.
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: как сделать StayOnTop формы в мсе ???

Сообщение amateur »

tmainmenuwidget
- имеет фокус ??? (работа с клавиатурой, без мыши)

Т.е. - это не баг. И краше использовать другой компонент. А если нужно именно так. Ведь существуют подобные реализации. Т.е. кнопка - popup.
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: как сделать StayOnTop формы в мсе ???

Сообщение amateur »

кстати сам popup реагирует подобным образом:нажимаем правую клавищу, вылазит меню, потом максимизируем окно и :) прикольно однако.
Ответить