OberonCore
https://forum.oberoncore.ru/

i21sysWindows - обслуживание окон документов в Блэкбоксе
https://forum.oberoncore.ru/viewtopic.php?f=90&t=3516
Страница 1 из 1

Автор:  Евгений Темиргалеев [ Понедельник, 25 Июль, 2011 11:24 ]
Заголовок сообщения:  i21sysWindows - обслуживание окон документов в Блэкбоксе

(модератор, 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/

Автор:  Info21 [ Понедельник, 25 Июль, 2011 16:45 ]
Заголовок сообщения:  Re: i21sysDesktop - охранялка конфигурации окон

i21sysWindows уже имеет что-то такое.

Автор:  Евгений Темиргалеев [ Понедельник, 25 Июль, 2011 18:30 ]
Заголовок сообщения:  Re: i21sysWindows - обслуживание окон документов в Блэкбоксе

Код:
DEFINITION i21sysWindows;
   PROCEDURE AlignTopLeft;
   PROCEDURE AlignTopRight;
...
END i21sysWindows.
Отличие --- не меняется размер по вертикали.

Автор:  Info21 [ Понедельник, 25 Июль, 2011 21:32 ]
Заголовок сообщения:  Re: i21sysWindows - обслуживание окон документов в Блэкбоксе

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

Автор:  Евгений Темиргалеев [ Понедельник, 25 Июль, 2011 22:25 ]
Заголовок сообщения:  Re: i21sysWindows - обслуживание окон документов в Блэкбоксе

Да, я согласен что лучше использовать уже имеющийся компонент i21sysWindows. Просто про него не знал, или, скорее внимания не обратил в своё время, т. к. потребности не было.

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