:: Visual Foxpro, Foxpro for DOS
Экранные координаты определенной формы
LED
Автор

Сообщений: 204
Дата регистрации: 22.07.2006
Всем привет

Подскажите пож.

Создается форма под именем (name="MуFORM")
Форма модальная. Форма перемещается по экрану.
Как узнать ее координаты под этим именем.

Нашел на форуме:
Form.RealTop = ObjToClient(form,1) - _Screen.Top
Form.RealLeft = ObjToClient(form,2) - _Screen.Left

Делаю
Form.RealTop = ObjToClient("MуFORM",1) - _Screen.Top
Form.RealLeft = ObjToClient("MуFORM",2) - _Screen.Left

выдает ошибку
Где надо прописать имя формы или как определить Top и Left формы под именем "MуFORM" относительно экрана.
Спасибо.
Ratings: 0 negative/0 positive
Re: Экранные координаты определенной формы
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Указывать надо ссылку на объект, координаты или размеры которого вам надо определить (см.Help)



Исправлено 1 раз(а). Последнее : akvvohinc, 18.04.18 14:56
Ratings: 0 negative/0 positive
Re: Экранные координаты определенной формы
VeterVFP

Сообщений: 413
Откуда: Москва
Дата регистрации: 26.12.2006
frmMyForm = CREATEOBJECT('Form')
Form.RealTop = ObjToClient(frmMyForm ,1) - _Screen.Top
Form.RealLeft = ObjToClient(frmMyForm ,2) - _Screen.Left
Ratings: 0 negative/1 positive
Re: Экранные координаты определенной формы
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
А если изнутри метода самой формы, то ThisForm


------------------
WBR, Igor
Ratings: 0 negative/2 positive
Re: Экранные координаты определенной формы
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
VeterVFP
frmMyForm = CREATEOBJECT('Form')
Form.RealTop = ObjToClient(frmMyForm ,1) - _Screen.Top
Form.RealLeft = ObjToClient(frmMyForm ,2) - _Screen.Left
И что, этот код запустится?
Что за объект Form во второй строке?
Я сам поставил лайк сообщению. Мне просто придраться бы



Исправлено 2 раз(а). Последнее : Ydin, 19.04.18 12:41
Ratings: 0 negative/0 positive
Re: Экранные координаты определенной формы
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Нет, ИК уже сказал это лаконично. Sorry



Исправлено 2 раз(а). Последнее : Ydin, 19.04.18 12:45
Ratings: 0 negative/0 positive
Re: Экранные координаты определенной формы
Sawradym

Сообщений: 2244
Откуда: Винница
Дата регистрации: 15.05.2007
VeterVFP
frmMyForm = CREATEOBJECT('Form')
Form.RealTop = ObjToClient(frmMyForm ,1) - _Screen.Top
Form.RealLeft = ObjToClient(frmMyForm ,2) - _Screen.Left

Здается мне что для формы ObjToClient(frmMyForm ,1) = frmMyForm.Top, ну и далее мое ясновидение подсказывает что форма таки десктопная, раз по экрану перемещается, потому координаты скрина отнимать не нужно, хотя возможно я ошибаюсь.


------------------
Ratings: 0 negative/0 positive
Re: Экранные координаты определенной формы
of63

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
(я тоже не понял, _SCREEN имеет координаты внутри desktop винды, и к ним бы прибавить координаты, которые "внутри" его, но не помню, что возвращает OBJTOCLIENT, абсолютные (в мониторе), или в _SCRREEN). Но это не существенно, т.к. товарищь заинтересовался, и все так или иначе отладит и поймет. Потом запишет в подпрограмму этот алгоритм и забудет, как он устроен )
Ratings: 0 negative/0 positive
Re: Экранные координаты определенной формы
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Sawradym
Здается мне что для формы ObjToClient(frmMyForm ,1) = frmMyForm.Top, ну и далее мое ясновидение подсказывает что форма таки десктопная, раз по экрану перемещается, потому координаты скрина отнимать не нужно, хотя возможно я ошибаюсь.

Мне тоже показалось, что с очень большой вероятностью, твои ясновидения таки верны!
Поскольку, если форма не As Top Level, какой смысл в определении ее координат относительно экрана с использованием ObjToClient?
Достаточно и банальных Top и Left относительно скрина, ну при желании прибавляя к ним _Screen.Top, _Screen.Left.
Если же она сама верхнего уровня, зачем бы ей нужны координаты скрина:

PUBLIC oForm1
oForm1 = CREATEOBJECT("form1")
_Screen.Visible = .F.
oForm1.Show(1)
DEFINE CLASS form1 AS form
ShowWindow = 2
PROCEDURE Moved()
thisform.Caption = STR(ObjToClient(thisform,1)) + STR(ObjToClient(thisform,2))
ENDPROC
ENDDEFINE


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Экранные координаты определенной формы
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Crispy
если форма не As Top Level...
Либо Desktop=.T.


------------------
WBR, Igor
Ratings: 0 negative/0 positive


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

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

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