Страница 1 из 1

Определение YPos активной строки в списке

Добавлено: 10 Ноябрь 2007, 9:39
NewUser
Напомните мне, пожалуйста, как программно определить YPos активной строки в Browse. Надо для того, чтобы сразу же под ней вывести свое окно.

Добавлено: 10 Ноябрь 2007, 14:13
Admin
Нопомните ... т.е. ты раньше знал :)

Я х.з.
Думаю вот так... к примеру:

?Browse{PROP:YPos} + ((CHOOSE(?Browse) * ?Browse{PROP:LineHeight}) + HeaderSize) - ?Browse{PROP:LineHeight}/2
HeaderSize я х.з. ка узнать
И! CHOOSE(?Browse) возвращает не позицию в текущем отображении а позицию в очереди

Добавлено: 11 Ноябрь 2007, 15:44
NewUser
Но в EIP-е, например, это же как-то рассчитывается. Там всё тютелька в тютельку.

Добавлено: 12 Ноябрь 2007, 9:44
Tolusha
Попробуй так:

Код: Выделить всё

?List{prop:column} = 1

c# = Create(0, CREATE:REGION)
?List{prop:edit, 1} = c#
GetPosition(c#, x#, YPOS#, w#, h#)

?List{prop:edit, 1} = 0
Desroy(c#)

?List{prop:column} = 0

MyWindow{prop:ypos} = ?List{prop:ypos} + ypos#

Добавлено: 12 Ноябрь 2007, 12:39
NewUser
Спасибо за направление раскопок.
Получилось более-менее похожее на задуманное:
Mod:YPos = 0{PROP:YPos} + ?Sheet1{PROP:YPos} + ?List:Zams{PROP:YPos} + ((CHOICE(?List:Zams) * ?List:Zams{PROP:LineHeight}) + 34)
где 34 – экспериментально подобранное значение высоты заголовка Browsa
Только все это будет работать с количеством записей, не превышающем максимального количества строк в Browse.

А что, нет никакой возможности определить номер активной строки в Browse?

Добавлено: 12 Ноябрь 2007, 12:56
Tolusha
NewUser писал(а):А что, нет никакой возможности определить номер активной строки в Browse?

Код: Выделить всё

?List{prop:selected}
Брось ты все эти "экспериментально подобранные значение". Ни к чему хорошему это не приведет.

Добавлено: 12 Ноябрь 2007, 13:11
ru_alex

Код: Выделить всё

?List{PROP:HeaderHeight} 

Добавлено: 12 Ноябрь 2007, 13:40
NewUser
Все огромное спасибо. Совместными усилиями получилась полностью удовлетворяющая меня версия:
Mod:YPos = 0{PROP:YPos} + ?Sheet1{PROP:YPos} + ?List{PROP:YPos} + ?List{PROP:Selected} * ?List{PROP:LineHeight} + ?List{PROP:HeaderHeight}*2
*2 – это 2х-уровневый заголовок.

Добавлено: 12 Ноябрь 2007, 15:42
Admin
А для чего окошко под строкой листа? :)

Добавлено: 12 Ноябрь 2007, 20:46
NewUser
Окошко со списком данных, которые может выбрать пользователь во время добавления новой записи в EIP. А может и не выбрать – свои внести. Окошко чистое - без всяких заголовков, прокруток, кнопок.