Страница 1 из 1
Проблема с большим размером окна.
Добавлено: 19 Декабрь 2014, 16:21
kreator
С9.1, что не слишком важно. Нужно сделать большое окно с графическими элементами. Элементы рисую функциями box и т.д. И Create'ом пробовал, результат один. При достижении размера примерно в 17000 экранных единиц окно начинает колбасить, вернее не отображаются никакие элементы, они как будто бы застыли на границе этой критической. Хотя само окно вроде нормальное. Что можно предпринять? Чья, вообще, проблема? Клариона или Винды?
Проблема с большим размером окна.
Добавлено: 19 Декабрь 2014, 17:40
Admin
kreator писал(а):17000 экранных единиц окно начинает колбасить
Я удивлен что еще раньше не упало приложение

Не заточен Clarion для этого... мое мнение.
Проблема с большим размером окна.
Добавлено: 19 Декабрь 2014, 23:21
Yufil
Попробуй поиграть с Prop:Buffer, иногда помогает
Проблема с большим размером окна.
Добавлено: 22 Декабрь 2014, 16:27
kreator
Yufil писал(а):Попробуй поиграть с Prop:Buffer, иногда помогает
Не помогло.
Admin писал(а): Не заточен Clarion для этого... мое мнение.
А что тут такого? Это где-то 30 экранов. В браузере ведь я могу открыть окно длинное-длинное. Я, вообще, посмотрел и мне кажется, что дело в типах переменных координат, видимо, заложен банальный SHORT. Ещё выяснил, что контролу можно присвоить отрицательное значение координаты, при этом окно можно увеличить, видимо в 2 раза. Перевод окна в пиксели не влияет на общую картину, всё тоже самое. Надо конституцию менять. Может кто-нибудь напишет SV об этой проблеме? Разрешение мониторов растёт, а координаты контролов ограничены 32768/2.
Проблема с большим размером окна.
Добавлено: 22 Декабрь 2014, 16:46
Admin
kreator писал(а): примерно в 17000 экранных единиц
А скрин можно приложить? Просто интересно посмотреть на "рисунок"
Проблема с большим размером окна.
Добавлено: 22 Декабрь 2014, 21:41
kreator
Некая реинкарнация диаграммы Гантта. Слева лист по очереди (даже "деревянный", что не столь важно), справа "графическая" диаграмма. Чтобы легче было синхронизировать две части, вертикальный размер листа выставляется такой, чтобы не было скролла на листе, скролл только на окне. Сделано достаточно давно, может и не кул, как могли. С версии на версию переходили, что-то подправляли. Но сейчас пришла беда откуда не ждали. Записей в листе стало так много, что ни он (лист), ни боксы, ни линии не укладываются в "критический" размер. Вот сейчас думаем, что делать. Самая простая идея - сделать обычный лист и отслеживать какие записи в нём видимы и перерисовывать каждый раз правую часть. Но работает схема не очень красиво, сами понимаете. Любые предложения принимаются. В 10-ке SV грозилась окна переделать, может и это ограничение снимут, но ждать...
Проблема с большим размером окна.
Добавлено: 23 Декабрь 2014, 2:14
Admin
kreator писал(а): работает схема не очень красиво, сами понимаете
Тут главное, работать. Красиво - второстепенно.
Мой совет: Воспользуйся ImageEx4. Вывод графических примитивов 100000 за 2 секунды. Без расчетов конечно и без оптимизаций разных. Просто для примера вывел столько квадратов и линий. Объект в который выводятся примитивы скроллируется. Перерисовывать не нужно.
Только вот не знаю получится ли его на всю высоту листа вытянуть. Как там с координатами будет...
Проблема с большим размером окна.
Добавлено: 23 Декабрь 2014, 12:16
kreator
Спасибо за наводку. Надо посмотреть, не юзал. А что там за объект, куда примитивы выводятся? На лист, под лист ложится? Сейчас пользователи продвинутые, хотят качественные сервисы, не абы какие.
Проблема с большим размером окна.
Добавлено: 23 Декабрь 2014, 12:35
Admin
kreator писал(а): На лист, под лист ложится?
Фиг знает.
kreator писал(а): не абы какие
C# смотри. Все мегакруто!
Проблема с большим размером окна.
Добавлено: 23 Декабрь 2014, 17:34
Игорь Столяров
У меня подозрение на проблемы с размером буфера GDI Windows.
Его использование можно контролировать через диспетчер задач Windows.
Или просто выполни код в начале приложения и проверь наполнение окна контролами:
Код: Выделить всё
Loc:TypeParam LONG(REG_DWORD)
Code
! --- Переустановка ограничений GDI Windows ----
If Int(GetReg(REG_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows','GDIProcessHandleQuota',Loc:TypeParam)) < 65000
PutReg(REG_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows','GDIProcessHandleQuota',0FDE9h,Loc:TypeParam)
end
Проблема с большим размером окна.
Добавлено: 23 Декабрь 2014, 22:02
kreator
Нет, Игорь, не прокатило. В реестре вручную поменял, всё также. Кларион барахлит. Попробую с Image поработать, надеюсь там нет ограничений.
Проблема с большим размером окна.
Добавлено: 24 Декабрь 2014, 2:33
Admin
kreator писал(а):Попробую с Image поработать, надеюсь там нет ограничений.
В ImageEx ты не объектами рисуешь а примитивами. Соответственно не загромождается память.