OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 21:08

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: Понедельник, 25 Июль, 2011 11:24 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
(модератор, 25.09.2011 19:28 мск) выделено в отдельную тему отсюда: viewtopic.php?p=54120#p54120

Тема хоть и про автоматическую, но расстановку окон, поэтому решил сюда написать.

При работе люблю ставить редактируемый текст справа, слева --- опорный для просмотра. Например, исходник-документация. На стационарном компе каждый раз расставлял окна мышкой. На тачпаде ноутбука эта операция оказалась для меня затруднительна и появился такой костыль:
Код:
   "Окно налево &9"   ""   "x.PlaceWindow(0)"   ""
   "Окно направо &0"   ""   "x.PlaceWindow(1)"   ""
Код:
   PROCEDURE PlaceWindow* (n: INTEGER);
      VAR
         rect: WinApi.RECT; cw, ch, x, y, w, h: INTEGER;
         res: INTEGER;
         fw: Windows.Window;
   BEGIN
      ASSERT(n IN {0, 1}, 20);
      fw := Windows.dir.Focus(FALSE);
      IF fw # NIL THEN
         res := WinApi.GetWindowRect(HostWindows.client, rect); ASSERT(res # 0, 0);
         cw := rect.right - rect.left; ASSERT(cw >= 0, 0);
         ch := rect.bottom - rect.top; ASSERT(ch >= 0, 0);
         res := WinApi.GetWindowRect(fw(HostWindows.Window).wnd, rect); ASSERT(res # 0, 0);
         w := rect.right - rect.left; ASSERT(w >= 0, 0);
         h := rect.bottom - rect.top; ASSERT(h >= 0, 0);
         IF n = 0 THEN
            x := 0; y := 0; h := ch
         ELSE   (* n = 1 *)
            x := cw - w; y := 0; h := ch
         END;
         res := WinApi.MoveWindow(fw(HostWindows.Window).wnd, x, y, w, h, WinApi.TRUE)
      END
   END PlaceWindow;


(р-р кол-ции) карточка: http://oberoncore.ru/bbcc/subs/i21sys/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 25 Июль, 2011 16:45 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
i21sysWindows уже имеет что-то такое.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 25 Июль, 2011 18:30 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Код:
DEFINITION i21sysWindows;
   PROCEDURE AlignTopLeft;
   PROCEDURE AlignTopRight;
...
END i21sysWindows.
Отличие --- не меняется размер по вертикали.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 25 Июль, 2011 21:32 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Евгений Темиргалеев писал(а):
Код:
DEFINITION i21sysWindows;
   PROCEDURE AlignTopLeft;
   PROCEDURE AlignTopRight;
...
END i21sysWindows.
Отличие --- не меняется размер по вертикали.
Там где-то что-то есть насчет размеров и точного положения. Надо просто добавить соотв. процедуру, да и всё.


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

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Да, я согласен что лучше использовать уже имеющийся компонент i21sysWindows. Просто про него не знал, или, скорее внимания не обратил в своё время, т. к. потребности не было.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

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


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

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


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

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