:: Visual Foxpro, Foxpro for DOS
Точные координаты объекта
xxxnemo

Сообщений: 7
Дата регистрации: 27.09.2006
Привет всем лисоводам!

Вопрос следующий: имеется объект ComboBox, который может быть расположен в каком-либо контейнере (это и форма и закладка и Grid и т.д.), причем этот контейнер может быть в свою очередь вложен в другой контейнер. Уровней вложенности - несколько. Встречаются и варианты, когда этот самый ComboBox находится на форме, которая является дочерней для другой формы (окна) (DO FORM ... IN WINDOW). Подскажите как абсолютно точно несмотря на все вышеперечисленные условия определить местоположение этого ComboBox (свойства TOP, LEFT), но не относительно содержащей его формы (контейнера), а относительно главного окна _screen? Хотелось бы получить универсальный, всегда работающий способ.

Заранее СПАСИБО!
Ratings: 0 negative/0 positive
Re: Точные координаты объекта
Dag

Сообщений: 1156
Дата регистрации: 08.02.2006
В книге Пэддока и компании "VFP6. Разработка корпоративных приложений" есть
класс Traverse, который позволяет путешествовать по иерархическим структурам.
Ratings: 0 negative/0 positive
Re: Точные координаты объекта
MichaelD

Сообщений: 7578
Дата регистрации: 14.05.2005
xxxnemo,

Цитата:
Подскажите как абсолютно точно несмотря на все вышеперечисленные условия определить местоположение этого ComboBox (свойства TOP, LEFT)...

в рамках формы см. OBJTOCLIENT()

Цитата:
... но не относительно содержащей его формы (контейнера), а относительно главного окна _screen?

св-ва: Top, Left, Width, и Height определяют положение/размер конретной формы, а дальше? Хм... работает обычная геометрия линейного смещения...


------------------
С уважением,
Михаил Дроздов, Пермь, Россия
Ratings: 0 negative/0 positive
Re: Точные координаты объекта
rubinov

Сообщений: 483
Дата регистрации: 07.02.2005
xxxnemo
Привет всем лисоводам!
Вопрос следующий: имеется объект ComboBox, который может быть расположен в каком-либо контейнере (это и форма и закладка и Grid и т.д.), причем этот контейнер может быть в свою очередь вложен в другой контейнер. Уровней вложенности - несколько. Встречаются и варианты, когда этот самый ComboBox находится на форме, которая является дочерней для другой формы (окна) (DO FORM ... IN WINDOW). Подскажите как абсолютно точно несмотря на все вышеперечисленные условия определить местоположение этого ComboBox (свойства TOP, LEFT), но не относительно содержащей его формы (контейнера), а относительно главного окна _screen? Хотелось бы получить универсальный, всегда работающий способ.

Заранее СПАСИБО!

Можно использовать WINAPI GetWindowRect чтобы узнать положение _screen.Hwnd (или _screen.left/top) или окна в котором находится объект, и WINAPI GetCursorPos чтобы узнать координаты курсора когда он находится на объекте. Дальше пересчитать.



Исправлено 1 раз(а). Последнее : rubinov, 05.10.06 00:25
Ratings: 0 negative/0 positive
Re: Точные координаты объекта
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Пройтись по координатам родителей и сложить их. Плюс толщина рамок и прочего.
Но лучше всего - обойтись без таких координат.


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive
Re: Точные координаты объекта
Mitchman
Автор

Сообщений: 9978
Откуда: Николаев
Дата регистрации: 24.05.2002
MichaelD
xxxnemo,
Цитата:
Подскажите как абсолютно точно несмотря на все вышеперечисленные условия определить местоположение этого ComboBox (свойства TOP, LEFT)...

в рамках формы см. OBJTOCLIENT()

Цитата:
... но не относительно содержащей его формы (контейнера), а относительно главного окна _screen?

св-ва: Top, Left, Width, и Height определяют положение/размер конретной формы, а дальше? Хм... работает обычная геометрия линейного смещения...

спс, Миш, а то дано не программил - не мог вспомнить функцию, а ты вот через поиск и подсказал, жаль тебя уже нет с нами


------------------
-
«свидомые украинцы озабочены не столько созданием украинской культуры, сколько уничтожением русской»
-
Олесь Бузина
Ratings: 0 negative/1 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 28 (Гостей: 28)

© 2000-2024 Fox Club 
Яндекс.Метрика