Create() with Scroll

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Hi, коллеги!

Натолкнулся я на такую проблемку: надо создать на экране в позиции, указанной "мышью", контрол box. Нет вопросов,

Control = CREATE(0,CREATE:Box)
Control{PROP:XPos} = MOUSEX()
Control{PROP:YPos} = MOUSEY()
Control{PROP:....
UNHIDE(Control)

Все прекрасно... пока в окне не появляется скролинг! В этом случае MOUSEX()/MOUSEY() выдают мне координаты относительно самого окна, а CREATE их воспринимает относительно его видимой области, и соответственно BOX появляется правее и/или ниже, чем надо... Ладно, берем свойства окна PROP:HScrollPos/PROP:VScrollPos, хэлп нам говорит (весьма скудно), что они выдают что-то типа доли прокрученного экрана из расчета, что весь экран - 255 (или 256?) частей. Пытаюсь делать расчет начальных координат видимой области типа BegX = FullWidth / 255 * 0{PROP:HScrollPos}, где FullWidth - реальная ширина окна со всеми его невидимыми частями... Плохо получается, конечно, ближе к реальной позиции мышки, но достаточно далеко от нее:( Оно и понятно, точность-то 1/255, а размер может быть в тысячах... Может, кто решал такие задачи и знает, как можно получить точное смещение при скролинге? Как-то до сих пор плотно с такими вещами не приходилось сталкиваться :(
Причем у меня сложилось впечатление, что рисование с помощью BOX или LINE независимо от скролинга проходит как надо, безо всяких смещений, но мне этот вариант не подходит...

Заранее благодарен за конструктивные предложения и указания на возможные ошибки:)

WBR, Igor Timofeev
Написал: ClaList(2)
Гость

Сообщение Гость »

Пользуй PROP:XOrigin и PROP:YOrigin.

Сергей - chusha@mail333.com ; chusha@hotbox.ru

(Добавление)

Ай спасибо! Бум поизучать. Может, заодно народ просветит, что такое PROP:ClientX, PROP:ClientY, PROP:ClientWidth, PROP:ClientHeight?
Может, оно тоже мне пригодится? Вроде краем уха слышал, что это относится к фрэйму... А то в LibSrc про них ничего не написано, и хэлп молчит как партизанин...

WBR, Igor
Написал: ClaList(2)
Гость

Сообщение Гость »

на сколько я знаю, по аналогии, у окна есть
PROP:wndProc
и PROP:ClientWndProc

т е у любого окна есть внутри клиентское по отношению к самому окну, т е без
заголовка и без бордеров
вот PROP:ClientX, PROP:ClientY, PROP:ClientWidth, PROP:ClientHeight - это и
есть координаты данного окна

Andrew Myalin
andrew@arsis.ru
http://mavcla.arsis.ru (MAV Direct ODBC)
ICQ: 10659412
Yahoo group: clarion@yahoogroups.com

(Добавление)
Ай спасибо! Бум поизучать. Может, заодно народ просветит, что такое PROP:ClientX, PROP:ClientY, PROP:ClientWidth, PROP:ClientHeight? Может, оно тоже мне пригодится? Вроде краем уха слышал, что это относится к фрэйму... А то в LibSrc про них ничего не написано, и хэлп молчит как партизанин...
Ну почему же молчит. Например,

PROP:ClientX
APPLICATION or WINDOW property which returns the horizontal position of the top left corner of the client area. (READ-ONLY)

и т.д.

Скачай последнюю версию справки для 6.1. И будет тебе счастье. С поправкой на версию конечно :))

Сергей
Написал: ClaList(2)
Ответить