Автоподбор размеров родительского окна
От: α Российская Империя  
Дата: 29.09.17 09:26
Оценка:
Sciter 1

Есть окно Sciter, в котором есть страница с единственным компонентом-редактором в виде richtext, который в свою очередь занимает всю ширину и авторастягивается в высоту (width:*; overflow-y:auto; height: max-intrinsic).
Окно Sciter помещено в родительское окно, которое тоже должно автоматически растягиваться в высоту, в зависимости от высоты текста, находящегося в richtext. Сейчас я расчет высоты этого окна сделал на WM_IDLE, в котором вычисляю размеры при помощи функции SciterGetMinHeight. Проблема в том, что эта функция срабатывает только тогда, когда окно Sciter видимо полностью.

А если например, несколько таких родительских окон-контейнеров помещены в Scroll Area, как на рисунке
-----------------------
ScrollBox           [ ]
  Panel Window      [*]
    Sciter Window   [ ]   Видимая часть
  Panel Window      [ ]
    Sciter Window   [ ]
-----------------------
  Panel Window      
    Sciter Window         Невидимая часть
  Panel Window      
    Sciter Window


То нижние скайтеры начинают изменять свои размеры только по мере прокрутки скролла вниз, т.е. функция SciterGetMinHeight работает только для видимого окна.
Может быть, в API есть какая-нибудь другая функция расчета высоты текста? что-то наподобие GetTextExtentPoint32 или типа того
Re: Автоподбор размеров родительского окна
От: c-smile Канада http://terrainformatica.com
Дата: 30.09.17 20:40
Оценка:
Здравствуйте, α, Вы писали:

α>А если например, несколько таких родительских окон-контейнеров помещены в Scroll Area


А зачем так сложно-то всё?

Почему не одно окно а в нем столько richtext сколько надо?
Re[2]: Автоподбор размеров родительского окна
От: α Российская Империя  
Дата: 02.10.17 12:43
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>А зачем так сложно-то всё?

CS>Почему не одно окно а в нем столько richtext сколько надо?

"так исторически сложилось"
Вообще, решил проблему через опрос Element.box(#height) в WM_IDLE, вроде работает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.