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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

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

Сообщение NewUser »

Напомните мне, пожалуйста, как программно определить YPos активной строки в Browse. Надо для того, чтобы сразу же под ней вывести свое окно.
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

Нопомните ... т.е. ты раньше знал :)

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

?Browse{PROP:YPos} + ((CHOOSE(?Browse) * ?Browse{PROP:LineHeight}) + HeaderSize) - ?Browse{PROP:LineHeight}/2
HeaderSize я х.з. ка узнать
И! CHOOSE(?Browse) возвращает не позицию в текущем отображении а позицию в очереди
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Сообщение NewUser »

Но в EIP-е, например, это же как-то рассчитывается. Там всё тютелька в тютельку.
Аватара пользователя
Tolusha
Активист
Сообщения: 123
Зарегистрирован: 11 Январь 2006, 16:50
Откуда: Украина, г. Черкассы
Контактная информация:

Сообщение 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#
Анатолий.
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Сообщение 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?
Аватара пользователя
Tolusha
Активист
Сообщения: 123
Зарегистрирован: 11 Январь 2006, 16:50
Откуда: Украина, г. Черкассы
Контактная информация:

Сообщение Tolusha »

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

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

?List{prop:selected}
Брось ты все эти "экспериментально подобранные значение". Ни к чему хорошему это не приведет.
Анатолий.
ru_alex
Ветеран
Сообщения: 333
Зарегистрирован: 21 Сентябрь 2005, 11:05
Откуда: Нижний Новгород
Контактная информация:

Сообщение ru_alex »

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

?List{PROP:HeaderHeight} 
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Сообщение NewUser »

Все огромное спасибо. Совместными усилиями получилась полностью удовлетворяющая меня версия:
Mod:YPos = 0{PROP:YPos} + ?Sheet1{PROP:YPos} + ?List{PROP:YPos} + ?List{PROP:Selected} * ?List{PROP:LineHeight} + ?List{PROP:HeaderHeight}*2
*2 – это 2х-уровневый заголовок.
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

А для чего окошко под строкой листа? :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Сообщение NewUser »

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