OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 23 Август, 2019 19:34

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: WorkWindows - Список окон
СообщениеДобавлено: Вторник, 25 Декабрь, 2007 17:27 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Когда при работе оказываются открыты более 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


Последний раз редактировалось Евгений Темиргалеев Вторник, 24 Июнь, 2008 10:59, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Вторник, 25 Декабрь, 2007 17:46 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Поправочка, чтобы разные окна с одинаковыми именами не дергались в списке:
IF (tmin$ > t$) OR (tmin$ = t$) & (wadr[mini] > wadr[j]) THEN mini := j; tmin := t END


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Воскресенье, 30 Декабрь, 2007 14:33 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Если забыть о дёрганьи окон в списке, то не вижу проблем с таким способом:
Код:
wadr: POINTER TO ARRAY OF Windows.Window;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Среда, 02 Январь, 2008 15:29 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Это будут якоря для сборщика мусора


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Среда, 02 Январь, 2008 18:40 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Ну, мне не приходилось ранее работать таким образом, чтобы задумываться об якорях. Какие тут могут быть проблемы?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Вторник, 08 Январь, 2008 10:51 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Нечто подобное изначально и получилось. Было не удобно. В итоге сделал тупую фичу для удобности - требуемую "удобность" она даёт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Понедельник, 02 Июнь, 2008 17:22 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Замечания Ивана Кузьмицкого: 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:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Вторник, 17 Июнь, 2008 15:46 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Поменял поведение - мне стало удобней. Работа с клавиатуры:
- Ctrl+L - появляется список окон;
- стрелками ходим, выбираем нужное окно; при выборе окно выскакивает наверх, видно то или не то (если заголовки одинаковые);
- на нужном окне жмем Enter, диалог закрывается.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Вторник, 17 Июнь, 2008 16:43 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8169
Откуда: Троицк, Москва
Евгений Темиргалеев писал(а):
Поменял поведение - мне стало удобней

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Понедельник, 23 Июнь, 2008 10:12 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Пара замечаний. У кнопки "Закрыть" надо выставить флажок "Cancel button" - тогда диалог по Esc убирается. Ctrl+L - стандартное сочетание для создания ссылок (Create Link). Т.к. на "Alt" (пока) назначить действия невозможно - предлагаю "Ctrl+0". А вообще симпатично смотрится


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Понедельник, 23 Июнь, 2008 10:36 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2309
Откуда: Россия, Томск
Иван Горячев писал(а):
предлагаю "Ctrl+0"
Dev - Open Module List


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Понедельник, 23 Июнь, 2008 10:50 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Александр Ильин писал(а):
Иван Горячев писал(а):
предлагаю "Ctrl+0"
Dev - Open Module List


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Понедельник, 23 Июнь, 2008 11:21 
Модератор
Аватара пользователя

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


Последний раз редактировалось Евгений Темиргалеев Понедельник, 23 Июнь, 2008 18:36, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Понедельник, 23 Июнь, 2008 11:32 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Иван Горячев писал(а):
Кстати, никто не составлял список стандартных сочетаний клавиш, задействованых в ББ?
Да можно сделать скрипт, который составляет этот список по меню. У меня есть модуль по работе со строками (стандартными) и меню, но до ридеров дело не дошло, концептуально он сыроват.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Понедельник, 23 Июнь, 2008 11:33 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Евгений Темиргалеев писал(а):
Alt если и назначать, то только на F1..F12. На алфавитно-цифровые он не пойдет - у них стандартное действие по активации пунктов меню.


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Понедельник, 23 Июнь, 2008 11:38 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Партия... она может не только сказать, но и привлечь по статье "фичеписательство" :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Понедельник, 23 Июнь, 2008 12:08 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2931
Откуда: г. Ярославль
Ещё бы заставить список окон реагировать на касание мышой края экрана. Всё равно выбор окна обычно делается мышой, поэтому тянуться к клаве для показа списка окон просто лень :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Понедельник, 23 Июнь, 2008 22:25 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9134
Откуда: Россия, Орёл
ОТ МОДЕРАТОРА
Обсуждение запуска командеров с клавиатуры ушло сюда -
viewtopic.php?f=47&t=1040


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Понедельник, 23 Июнь, 2008 23:57 
Модератор
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список окон
СообщениеДобавлено: Вторник, 24 Июнь, 2008 10:55 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Получилось сделать в виде нового отростка WorkWindowsHook к кишкам ББ (прицепил к 1-му сообщ.). Делалось методом подгонки, так что особого качества не ждите :)

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB