Кросплатформенно скрыть кнопуц формы на панели задачь

Вопросы программирования и использования среды Lazarus.

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

Ответить
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Кросплатформенно скрыть кнопуц формы на панели задачь

Сообщение qivi »

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

Сообщение debi12345 »

Можно, если в Линуксе использумый "рабочий стол" придерживается Xorg-соглашений по этой части, а не занимается "самодеятельностью". То есть измените вопрос на "Можно ли скрыть (средствами Xorg) кнопцу на панель --используемого Вами линкусовог дестктоп-менеджера-- " ?
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

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

Сообщение debi12345 »

Вопрос состоит в : какой конкретно "менеджер окон" используете в Линуксе ? GNOMe, KDE, IceWM, XFCE,..

Добавлено спустя 1 минуту 54 секунды:
KDE & IceWM как правило четко придерживаются правил и API Xorg.
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

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

Сообщение debi12345 »

Мартин в МСЕгуй далает так (как обрабатывается опция "БЕЗ ТАСКБАРа" ):
1) ЛИНУКС - в цикле обработки ГУЙ-событий программы после ее старта:

Код: Выделить всё

function gui_getevent: tmseevent;
var
 xev,xev2: xevent;
[..]
 xnextevent(appdisp,@xev);
 case xev.xtype of
[..]
  mapnotify: begin
   with xev.xmap do begin
    result:= twindowevent.create(ek_show,xwindow);
    if application.findwindow(xwindow,window1) and
             (wo_notaskbar {-- user defined --} in window1.options) then begin
     setnetatomarrayitem(xwindow,net_wm_state,net_wm_state_skip_taskbar); // <<< THIS COMMAND
    end;
   end;
  end;

2) в гэймшеллке - в процедуре создания основного окна программы :

Код: Выделить всё

  windowstyle:= windowstyle or ws_clipchildren;
  if (transientfor <> 0) or (options * [wo_popup,wo_message,wo_notaskbar {--user defined--}] <> []) then begin
   if transientfor <> 0 then begin  // если запомнено к стэку какого окна логмчески относится,
    ownerwindow:= transientfor;  // то назначить это окно родитесльским
   end;
   id:= windows.CreateWindowex(windowstyleex,widgetclassname,nil,windowstyle,
         rect1.x,rect1.y,rect1.cx,rect1.cy,ownerwindow{transientfor},0,hinstance,nil);  // THIS COMMAND


Добавлено спустя 11 минут 39 секунд:
Кстати окно в стиле "popup" тоже не должно попадать на таскбар.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

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

Сообщение debi12345 »

А чем свойство у формы ShowInTaskBar не подходит?

1) не лежит на виду и 2) написано мелким шрифтом :)
ПС:
оно реально работает в гэймшелловом лазаре ? У Мартина в МСЕ вдруг перестало - отписАл ему сегодня.
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

А чем свойство у формы ShowInTaskBar не подходит?

Ну почему же не подходит, не знал. Спасибо.
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

ShowInTaskBar У этой штуки Linux есть особенность, эта опция не действует на первую создаваемую форму в проекте
Но это легко обходится, как здесь https://code.google.com/p/vpnpptp/
http://bugs.freepascal.org/view.php?id=17294
Ответить