Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема АтрибутФормы.УстановитьКоординаты() (число прочтений - 4080 )
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
АтрибутФормы.УстановитьКоординаты()
24. Ноября 2008 :: 11:28
Печать  
Эти координаты, они хоть как-то соотносятся с тем, что написано в конфигураторе справа внизу?

Беру с формы текст, записываю на бумажке координаты и размер, которые говорит мне Конфигуратор, через ДобавитьАтрибут пытаюсь создать текст программно, так он размещается хз где.
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: АтрибутФормы.УстановитьКоординаты()
Ответ #1 - 24. Ноября 2008 :: 12:15
Печать  
Прилагаю внешнюю обработку с демонстрацией.
  

Coordinates.ert ( 6 KB | Загрузки )
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: АтрибутФормы.УстановитьКоординаты()
Ответ #2 - 24. Ноября 2008 :: 12:19
Печать  
В конфигураторе координаты атрибута тШШШ указаны, как 20,150 и размер 40*10.

ПолучитьКоординаты выдает 24,219 и размер 60*16

ПолучитьКоординаты - оно вообще с какими единицами работает?
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: АтрибутФормы.УстановитьКоординаты()
Ответ #3 - 24. Ноября 2008 :: 13:15
Печать  
Судя по всему, Конфигуратор работает в каких-то своих единицах. А вот Формекс работает в экранных пикселях.

Машувать, я думал только у мокселя такая проблема с миллиметрами. Конечно интересно было бы узнать о причинах.
  
Наверх
www  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: АтрибутФормы.УстановитьКоординаты()
Ответ #4 - 24. Ноября 2008 :: 13:46
Печать  
http://www.1cpp.ru/forum/YaBB.pl?num=1177412902/0
опять, наверное, только в хистори есть
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: АтрибутФормы.УстановитьКоординаты()
Ответ #5 - 24. Ноября 2008 :: 14:46
Печать  
Хы. Про хистори тонко подмечено Улыбка
Но это не совсем то. Мне не нужны абсолютные координаты на мониторе - меня устраивают координаты в окне.

Проблема в том, что у Конфигуратора свои координаты. Не пиксели, а что-то другое.

Фишка вот в чем: решил побаловаться с программным добавлением реквизитов на форму.

Например в куче отчетов по продажам на формах есть собрание реквизитов, отвечающих за фильтр по менеджеру. Текст, поле выбора и кнопка очистки.
Идентификаторы у всех одинаковы. Формулы - одинаковы. Даже код фильтра - и тот одинаковый.

Ясен пень, что подобная зависимость кнопок, данных и кода не может пройти незамеченной, и просто напрашивается на инкапсуляцию в класс.

Ну а дальше просто. Когда удаляю атрибут формы с формы - я запомниаю координаты конфигуратора. Наивно полагая, что в УстановитьАтрибуты нужно будет написать то же самое. Ан нет, приходится геморроиться с ручным подбором правильных координат методом последовательных приближений.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: АтрибутФормы.УстановитьКоординаты()
Ответ #6 - 25. Ноября 2008 :: 05:03
Печать  
ИМХО координаты зависят от тулбара окна, и возможно, заголовка окна.
Попробуйте проверить координаты в окне без тулбара.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: АтрибутФормы.УстановитьКоординаты()
Ответ #7 - 25. Ноября 2008 :: 09:19
Печать  
Нет, Артур, от тулбара ничего не зависит. Ибо ширина и высота объекта тоже отличаются.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: АтрибутФормы.УстановитьКоординаты()
Ответ #8 - 25. Ноября 2008 :: 09:52
Печать  
Можешь в багзиллу пожелание написать.
Когда-нибудь доделаем Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
MrDen
Junior Member
**
Отсутствует



Сообщений: 50
Местоположение: Краснодар
Зарегистрирован: 19. Ноября 2008
Пол: Мужской
Re: АтрибутФормы.УстановитьКоординаты()
Ответ #9 - 14. Декабря 2008 :: 19:44
Печать  
Абсолютные координаты и еще многое что получить можно
через WinApi
Регистрим dynwrapx.dll
Wrap = CreateObject("DynamicWrapperX");
Wrap.Register("USER32.DLL", "GetWindowRect", "i=lp", "r=l");
1 параметр дескриптор окна (его можно найти как минимум по 2 параметрам 1 заголовок, 2 класс)
2 ссылка на структуру Rect (типа)
typedef struct _RECT
{
     LONG left;
     LONG top;
     LONG right;
     LONG bottom;
} RECT, *PRECT;

в 1с будет немного кузяво
Rect = Wrap.Space(256);
Обязательно сохраняем указатель на переменную
pStr = Wrap.StrPtr(Rect);
Wrap.GetWindowRect(ДискрипторОкна, Rect);
все Rect 1С убила Улыбка  но идем по сохраненному указателю
и вычитываем Rect только так
left = Wrap.NumGet(pStr,0,"l");
top = Wrap.NumGet(pStr,4,"l");
right = Wrap.NumGet(pStr,8,"l");
bottom = Wrap.NumGet(pStr,12,"l");

  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать