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