Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Координаты начала рабочего поля (число прочтений - 8458 )
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Координаты начала рабочего поля
10. Декабря 2012 :: 12:42
Печать  
Есть ли метод с помощью которого можно было бы определить координаты начала рабочего стола? По сути это координата Y.
  

_____001.jpg ( 7 KB | Загрузки )
_____001.jpg

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Координаты начала рабочего поля
Ответ #1 - 10. Декабря 2012 :: 12:46
Печать  
ПоложениеОкна не подойдет у объекта окна ?
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Координаты начала рабочего поля
Ответ #2 - 10. Декабря 2012 :: 12:54
Печать  
Нет, не подошло. Вернуло -4, -4. Параметр Форма оставил пустым.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Координаты начала рабочего поля
Ответ #3 - 10. Декабря 2012 :: 12:57
Печать  
А тебе относительно чего размеры вернуть то надо ?
Относительно экрана, в котором 1с-ина открыта ?
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Координаты начала рабочего поля
Ответ #4 - 10. Декабря 2012 :: 12:59
Печать  
Ага. Я вывожу координаты курсора. И вижу, что 0,0 - это в верхнем нижнем левом углу меню File.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Координаты начала рабочего поля
Ответ #5 - 10. Декабря 2012 :: 13:02
Печать  
Соответственно, если узнать, во сколько рядов открыты панели, то можно координату рассчитать (высота панелей стандартная).
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Координаты начала рабочего поля
Ответ #6 - 11. Декабря 2012 :: 02:39
Печать  
Положение окна точно не безглючный метод.
http://www.1cpp.ru/forum/YaBB.pl?num=1338186536/2#2
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Координаты начала рабочего поля
Ответ #7 - 11. Декабря 2012 :: 09:57
Печать  
Вот одна интересная тема http://www.1cpp.ru/forum/YaBB.pl?num=1201856631/5#5, в ней описывается, как можно получить размер рабочего поля. Но начало его координат - пока остался под вопросом.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Координаты начала рабочего поля
Ответ #8 - 11. Декабря 2012 :: 10:15
Печать  
мот тебе к этому привязаться ?
КоординатыОкнаВКоординатыWindows
ЗЫ: это метод от riq_sql.dll
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Координаты начала рабочего поля
Ответ #9 - 11. Декабря 2012 :: 11:15
Печать  
Для чего вся эта петрушка с координатами. Чтобы попробовать реализовать рабочий стол типа как в УНФ в восьмерке.

Всё получается, кроме вот этих самых координат начала рабочего поля. Точнее - нужна высота панелей.
  

_____________001.jpg ( 157 KB | Загрузки )
_____________001.jpg

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Координаты начала рабочего поля
Ответ #10 - 11. Декабря 2012 :: 11:17
Печать  
Код
Выбрать все
Процедура ПриДвиженииМыши(Конт,Сост,Икс,Игрек,ФСО)

	Если ТипЗначенияСтр(Конт)="ГрупповойКонтекст" Тогда Сервис.УстановитьКурсор();Возврат;КонецЕсли;
	Окна=СоздатьОбъект("Окна");
	ШиринаMDI=0;ВысотаMDI=0; Окна.РазмерОкна(,ШиринаMDI,ВысотаMDI,,1);
	Ширина=0;Высота=0; Окна.РазмерОкна(,Ширина,Высота);
	//если последний параметр *НЕ* равен 0, то окно MDI
	//http://www.1cpp.ru/forum/YaBB.pl?num=1201856631/5#5
	НомерТайла = 0;
	Если (Икс<=686)И(Игрек<=794) Тогда
		СмещХ = 65;
		СмещY = 110;
		ЗнамX = Цел((686-СмещХ)/6);
		ЗнамY = Цел((794-110)/9);
		Кол   = Цел(1+(Икс-СмещХ)/ЗнамX);
		Ряд   = Цел((Игрек-СмещY)/ЗнамY);
		НомерТайла=Кол+6*Ряд;
		Состояние(" Конт="+Конт+" № "+НомерТайла+" Х="+Икс+" Y="+Игрек+" "+ЗнамX+" "+ЗнамY+" Кол="+Кол+" Ряд="+Ряд+" Ш_MDI="+ШиринаMDI+" В_MDI="+ВысотаMDI+" Ш_="+Ширина+" В_="+Высота);
	КонецЕсли;
	Если НомерТайла=0 Тогда
		Сервис.УстановитьКурсор();
	Иначе
		Если (НомерТайла=3)
		ИЛИ(НомерТайла=4)
		ИЛИ(НомерТайла=5)
		ИЛИ(НомерТайла=8)
		ИЛИ(НомерТайла=9)
		ИЛИ(НомерТайла=10)
		ИЛИ(НомерТайла=14)
		ИЛИ(НомерТайла=15)
		ИЛИ(НомерТайла=16)
		ИЛИ(НомерТайла=39)
		ИЛИ(НомерТайла=33) Тогда
			Сервис.УстановитьКурсор(14);
		Иначе
			Сервис.УстановитьКурсор();
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Процедура ПриНажатииЛевойКнопки(Конт,Сост,Икс,Игрек,ФСО)
	Если ТипЗначенияСтр(Конт)="ГрупповойКонтекст" Тогда Возврат;КонецЕсли;
	Если НомерТайла = 1 Тогда
	ИначеЕсли НомерТайла = 3 Тогда
		ОткрытьФорму("Документ.ПлатежноеПоручение");
	ИначеЕсли НомерТайла = 4 Тогда
		ОткрытьФорму("Документ.АвансовыйОтчет");
	ИначеЕсли НомерТайла = 5 Тогда
		ОткрытьФорму("Документ.Зарплата");
	ИначеЕсли НомерТайла = 8 Тогда
		ОткрытьФорму("Документ.ПриходнаяНакладная");
	ИначеЕсли (НомерТайла = 9)ИЛИ (НомерТайла = 15)  Тогда
		ОткрытьФорму("Документ.БанковскаяВыписка");
	ИначеЕсли НомерТайла = 10 Тогда
		ОткрытьФорму("Документ.РасходныйКассовый");
	ИначеЕсли НомерТайла = 14 Тогда
		ОткрытьФорму("Документ.ВозвратПоставщику");
	ИначеЕсли НомерТайла = 16 Тогда
		ОткрытьФорму("Документ.ПриходныйКассовый");
	ИначеЕсли НомерТайла = 33 Тогда
		ОткрытьФорму("Документ.РасходнаяНакладная");
	ИначеЕсли НомерТайла = 39 Тогда
		ОткрытьФорму("Документ.Перемещение");
	КонецЕсли;
КонецПроцедуры 


  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Координаты начала рабочего поля
Ответ #11 - 11. Декабря 2012 :: 11:18
Печать  
НомерТайла - глобальная Переменная

Вся проблема в том, что при изменении структуры панелей - увеличения их высоты - мешает правильному определению координаты тайла, т.к. меняется начало рабочей области по высоте относительно меню.
Сейчас в коде реализовано смещение исходя из присутствия одной панели.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Координаты начала рабочего поля
Ответ #12 - 11. Декабря 2012 :: 11:27
Печать  
Красота!
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Координаты начала рабочего поля
Ответ #13 - 11. Декабря 2012 :: 11:37
Печать  
Красиво, на чем нарисовал ?
Вебброузер ?
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Координаты начала рабочего поля
Ответ #14 - 11. Декабря 2012 :: 12:49
Печать  
Ребята! Вы чего! Это ж скриншот из восьмерочной УНФ! Типа вот http://1cbit.ru/images/news/small.png.

Я его вставляю как обои

Сервис.УстановитьОбои(КаталогИБ()+"\Навигация.bmp",1,0,15721438);

А далее мыша обрабатывается кодом выше. И усё...

  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Координаты начала рабочего поля
Ответ #15 - 11. Декабря 2012 :: 12:52
Печать  
Тут, как говорится, всё ограничено вашим полётом фантазии... Рисуй себе на здоровье что душе захочется. Главное разбить на равные участки этот рисунок, чтобы потом их номера вычислять по координатам. Т.е. типа свой ГИС внутри 1С... Улыбка
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Координаты начала рабочего поля
Ответ #16 - 11. Декабря 2012 :: 12:54
Печать  
Это ж не спортивно..
Разрешение у всех разное, как и рабочий стол.
Как определять будешь положение координат по картинке ?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Координаты начала рабочего поля
Ответ #17 - 11. Декабря 2012 :: 12:55
Печать  
Т.е ты тупо "разбил" на квадратики и для попадания ширину и высоту делишь на равные кусочки ?
Так что ли ?...

А на конкретный документ, как тогда тыркнуть (точнее, как координаты получать) ?
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Координаты начала рабочего поля
Ответ #18 - 11. Декабря 2012 :: 13:31
Печать  
Конечно. Просто разбил на квадраты картинку и по координатам мыши определяется номер квадрата.

Не понял, что значит "конкретный документ"? Если ты имеешь в виду, то, что на картинке (типа "Авансовый отчет"), то он как раз и попадает в свой квадрат.
Но трабла в том, что если будет разное число панелей, то по координатам уже будешь не попадать в нужную картинку. Нужно знать смещение...
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Координаты начала рабочего поля
Ответ #19 - 11. Декабря 2012 :: 13:37
Печать  
Ну да..
придётся еще на более мелкие картинки "дробить".. еще и хранить эти соответствия.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Координаты начала рабочего поля
Ответ #20 - 11. Декабря 2012 :: 13:55
Печать  
Че-то я затупил сначала, оказывается это довольно просто получить.
  

mdi.ert ( 7 KB | Загрузки )
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Координаты начала рабочего поля
Ответ #21 - 11. Декабря 2012 :: 14:56
Печать  
Ага. Получилось. Спасибо.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать