OberonCore
https://forum.oberoncore.ru/

WorkWindows - Список окон
https://forum.oberoncore.ru/viewtopic.php?f=90&t=792
Страница 1 из 2

Автор:  Евгений Темиргалеев [ Вторник, 25 Декабрь, 2007 17:27 ]
Заголовок сообщения:  WorkWindows - Список окон

Когда при работе оказываются открыты более 9 окон, то переключаться на нужные через меню Windows становится неудобно. Написал приладу, которая показывает список окон в диалоге и позволяет переключатся на них. Вот, может кому-то тоже пригодится:
Правда она пользует недокументированные возможности и SYSTEM и на 1.6 работоспособность не пробовал.
Может у кого есть идеи как это сделать более элегантно (без SYSTEM и т.п)?

Новый вариант (viewtopic.php?p=16357#p16357)
Тоже + открытие списка когда мышка подходит к краю окна ББ (viewtopic.php?p=16585#p16585)

(08.01.2011) размещено в коллекции: http://oberoncore.ru/bbcc/subs/work/windows

Автор:  Евгений Темиргалеев [ Вторник, 25 Декабрь, 2007 17:46 ]
Заголовок сообщения:  Re: Список окон

Поправочка, чтобы разные окна с одинаковыми именами не дергались в списке:
IF (tmin$ > t$) OR (tmin$ = t$) & (wadr[mini] > wadr[j]) THEN mini := j; tmin := t END

Автор:  Valery Solovey [ Воскресенье, 30 Декабрь, 2007 14:33 ]
Заголовок сообщения:  Re: Список окон

Если забыть о дёрганьи окон в списке, то не вижу проблем с таким способом:
Код:
wadr: POINTER TO ARRAY OF Windows.Window;

Автор:  Евгений Темиргалеев [ Среда, 02 Январь, 2008 15:29 ]
Заголовок сообщения:  Re: Список окон

Это будут якоря для сборщика мусора

Автор:  Valery Solovey [ Среда, 02 Январь, 2008 18:40 ]
Заголовок сообщения:  Re: Список окон

Ну, мне не приходилось ранее работать таким образом, чтобы задумываться об якорях. Какие тут могут быть проблемы?

Кстати, есть ещё способ избавиться от SYSTEM: хранить заголовки, а не указатели на окна. Но если существует несколько одинаковых заголовков, то можно забыть об адекватной реакции при нажатии на один из них.

Автор:  Евгений Темиргалеев [ Вторник, 08 Январь, 2008 10:51 ]
Заголовок сообщения:  Re: Список окон

Нечто подобное изначально и получилось. Было не удобно. В итоге сделал тупую фичу для удобности - требуемую "удобность" она даёт.

Автор:  Евгений Темиргалеев [ Понедельник, 02 Июнь, 2008 17:22 ]
Заголовок сообщения:  Re: Список окон

Замечания Ивана Кузьмицкого: viewtopic.php?p=15813#p15813.
Иван Кузьмицкий писал(а):
Я бы предложил такое расширение окошка Е.Темиргалеева: оно появляется только тогда, когда мышой стукаешь по правому (левому, или верхнему, или нижнему) краю экрана. Выбрал нужную форму, и список окон исчез - не мешает.

Вставка - закрытие списка при переходе к "выбранной форме" :). Появляется окно по горячей клавише (у меня Ctrl+L), без "стука" мыши можно и обойтись. Если кто сделает, выкладывайте, будет интересно попробовать.
Код:
   PROCEDURE Select;
...
   BEGIN
      IF list.index # -1 THEN
         Fill;
         IF list.index # -1 THEN
            >>>StdCmds.CloseDialog;<<<
            Windows.dir.Select(Wnd(list.index), Windows.eager)
         END
      END
   END Select;

Хотя, учитывая что имена окон в списке могут быть одинаковые и сразу нужное окно не выберется, то закрытие может оказаться антиполезным... :roll:

Автор:  Евгений Темиргалеев [ Вторник, 17 Июнь, 2008 15:46 ]
Заголовок сообщения:  Re: Список окон

Поменял поведение - мне стало удобней. Работа с клавиатуры:
- Ctrl+L - появляется список окон;
- стрелками ходим, выбираем нужное окно; при выборе окно выскакивает наверх, видно то или не то (если заголовки одинаковые);
- на нужном окне жмем Enter, диалог закрывается.

Также в списке не отображаются инструментальные окна - они и так висят поверх остальных.

Новый вариант во вложении в первом сообщении.

Автор:  Info21 [ Вторник, 17 Июнь, 2008 16:43 ]
Заголовок сообщения:  Re: Список окон

Евгений Темиргалеев писал(а):
Поменял поведение - мне стало удобней

Пора пробовать...

Автор:  Иван Горячев [ Понедельник, 23 Июнь, 2008 10:12 ]
Заголовок сообщения:  Re: Список окон

Пара замечаний. У кнопки "Закрыть" надо выставить флажок "Cancel button" - тогда диалог по Esc убирается. Ctrl+L - стандартное сочетание для создания ссылок (Create Link). Т.к. на "Alt" (пока) назначить действия невозможно - предлагаю "Ctrl+0". А вообще симпатично смотрится

Автор:  Александр Ильин [ Понедельник, 23 Июнь, 2008 10:36 ]
Заголовок сообщения:  Re: Список окон

Иван Горячев писал(а):
предлагаю "Ctrl+0"
Dev - Open Module List

Автор:  Иван Горячев [ Понедельник, 23 Июнь, 2008 10:50 ]
Заголовок сообщения:  Re: Список окон

Александр Ильин писал(а):
Иван Горячев писал(а):
предлагаю "Ctrl+0"
Dev - Open Module List


Грустно. Кстати, никто не составлял список стандартных сочетаний клавиш, задействованых в ББ?

Автор:  Евгений Темиргалеев [ Понедельник, 23 Июнь, 2008 11:21 ]
Заголовок сообщения:  Re: Список окон

- Да делал я так. Только вот с двумя кнопками...потом одну менее используемую убрал :) А одну сделать сразу и Default и Cancel ... не пришло в голову, что так можно :) ... век живи, век учись
- про Ctrl+L просмотрел...
Иван Горячев писал(а):
на "Alt" (пока) назначить
Alt если и назначать, то только на F1..F12. На алфавитно-цифровые он не пойдет - у них стандартное действие по активации пунктов меню.

Автор:  Евгений Темиргалеев [ Понедельник, 23 Июнь, 2008 11:32 ]
Заголовок сообщения:  Re: Список окон

Иван Горячев писал(а):
Кстати, никто не составлял список стандартных сочетаний клавиш, задействованых в ББ?
Да можно сделать скрипт, который составляет этот список по меню. У меня есть модуль по работе со строками (стандартными) и меню, но до ридеров дело не дошло, концептуально он сыроват.

Автор:  Иван Горячев [ Понедельник, 23 Июнь, 2008 11:33 ]
Заголовок сообщения:  Re: Список окон

Евгений Темиргалеев писал(а):
Alt если и назначать, то только на F1..F12. На алфавитно-цифровые он не пойдет - у них стандартное действие по активации пунктов меню.


Если партия скажет "надо" - будет не только на Alt, но и просто на буквы действия назначать :)

Автор:  Евгений Темиргалеев [ Понедельник, 23 Июнь, 2008 11:38 ]
Заголовок сообщения:  Re: Список окон

Партия... она может не только сказать, но и привлечь по статье "фичеписательство" :)

Автор:  Иван Кузьмицкий [ Понедельник, 23 Июнь, 2008 12:08 ]
Заголовок сообщения:  Re: Список окон

Ещё бы заставить список окон реагировать на касание мышой края экрана. Всё равно выбор окна обычно делается мышой, поэтому тянуться к клаве для показа списка окон просто лень :)

Автор:  Илья Ермаков [ Понедельник, 23 Июнь, 2008 22:25 ]
Заголовок сообщения:  Re: Список окон

ОТ МОДЕРАТОРА
Обсуждение запуска командеров с клавиатуры ушло сюда -
viewtopic.php?f=47&t=1040

Автор:  Евгений Темиргалеев [ Понедельник, 23 Июнь, 2008 23:57 ]
Заголовок сообщения:  Re: Список окон

Иван Кузьмицкий писал(а):
Ещё бы заставить список окон реагировать на касание мышой края экрана. Всё равно выбор окна обычно делается мышой, поэтому тянуться к клаве для показа списка окон просто лень :)
Гм... я то обычно делаю вызов с клавиатуры :) Но дело не в этом.

Чтобы сделать список -- пришлось пользоваться средствами недокументированного модуля Windows. И все. А чтобы сделать вызов команды по положению мышки... придется копаться в "кишках" ББ. А к таким решениям у меня счас предубеждение...

Автор:  Евгений Темиргалеев [ Вторник, 24 Июнь, 2008 10:55 ]
Заголовок сообщения:  Re: Список окон

Получилось сделать в виде нового отростка WorkWindowsHook к кишкам ББ (прицепил к 1-му сообщ.). Делалось методом подгонки, так что особого качества не ждите :)

Пришлось добавить WorkWindows.open = "Диалог со списком окон открыт".

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/