22.01.2014, 16:31 | #1 |
Участник
|
День добрый всем!
Возникла идея поместить на одну форму две матрицы, причем обе имеют одну запись-источник: товар, но расчет в них ведется из разных таблиц, и соответственно, обе они должны одинаково двигаться вверх-вниз про перемещении по товару (первой матрице). В принципе, физически так оно и происходит - при скроллинге, если на первой матрице кур-рекорд стоит на Товаре10, то и на второй матрице кур-рекорд стоит на Товаре10. Но вот загвоздка - сам курсор, визуальное отображение этого процесса - несинхронизирован. Первый курсор может стоять двадцатым сверху, а второй - первым сверху, или пятым, и т.п. Если перескочить на вторую матрицу, и ее листать, то так же картина наблюдается, но уже наоборот: товары помечены одинаковые, но визуально курсоры стоят в разных местах, и даже совместить в одну линию их невозможно ручной подгонкой, все равно хоть на одну строку, а сдвижка будет... апдейты на триггерах AfterGetRecord, AfterGetCurrRecord не помогли, и прочие мантры с бубнами. FIND тоже не поможет, он найдет нужную запись, но поставит ее наверх. Вообще, возможно ли синхронизировать две матрицы из одного источника? Может, какая-то хитрость есть? Нашла в заграничной сети кусок разговоров на эту тему, но не помогло - переборы непроверенных советов... |
|
23.01.2014, 10:14 | #2 |
Участник
|
Ну если FIND ставит в верхнее положение найденную - почему бы не поставить в это положение ту которая у вас там стоит, т.е. отшагать назад на количество отображаемых строк вашей 1-й матрицы, и тогда при пролистывании у вас будет в первой искомая внизу - и во второй искомая будет ставиться вниз. Ну и собственно алгоритм расчета когда запустить такие сдвиги - ведь пролистывание матриц пойдет когда вы дойдете до нижней записи и начнете новые открывать...
Собственно это всего лишь идея, как она будет работать - неизвестно))
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
23.01.2014, 11:04 | #3 |
Участник
|
Матриксы - глючны сами по себе.
Как вариант советую выбрать "ведущий" матрикс и при хождении по нему не только позиционироваться в "ведомом", но и выделять жирненьким текущую строку. Или выделять сразу в обоих матриксах. Тогда сразу будет бросаться в глаза то, с чем работаем в обоих списках. |
|
23.01.2014, 15:44 | #4 |
Участник
|
Цитата:
Сообщение от zuzka
Ну если FIND ставит в верхнее положение найденную - почему бы не поставить в это положение ту которая у вас там стоит, т.е. отшагать назад на количество отображаемых строк вашей 1-й матрицы, и тогда при пролистывании у вас будет в первой искомая внизу - и во второй искомая будет ставиться вниз. Ну и собственно алгоритм расчета когда запустить такие сдвиги - ведь пролистывание матриц пойдет когда вы дойдете до нижней записи и начнете новые открывать...
Собственно это всего лишь идея, как она будет работать - неизвестно)) |
|
23.01.2014, 15:46 | #5 |
Участник
|
Цитата:
Сообщение от romeo
Матриксы - глючны сами по себе.
Как вариант советую выбрать "ведущий" матрикс и при хождении по нему не только позиционироваться в "ведомом", но и выделять жирненьким текущую строку. Или выделять сразу в обоих матриксах. Тогда сразу будет бросаться в глаза то, с чем работаем в обоих списках. не уверена, что Нав вообще может синхронно показывать такие штуки, но надежда умирает последней. Задачка непростая...)) |
|
23.01.2014, 18:47 | #6 |
Участник
|
Цитата:
Сообщение от Sova
Цитата:
Сообщение от zuzka
Ну если FIND ставит в верхнее положение найденную - почему бы не поставить в это положение ту которая у вас там стоит, т.е. отшагать назад на количество отображаемых строк вашей 1-й матрицы, и тогда при пролистывании у вас будет в первой искомая внизу - и во второй искомая будет ставиться вниз. Ну и собственно алгоритм расчета когда запустить такие сдвиги - ведь пролистывание матриц пойдет когда вы дойдете до нижней записи и начнете новые открывать...
Собственно это всего лишь идея, как она будет работать - неизвестно)) Нав не умеет - его надо учить. Завтра посмотрю что можно сделать. Думаю никаких проблем не будет.
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
23.01.2014, 19:44 | #7 |
Участник
|
Откуда я знаю, сколько у меня отображается строк? У меня вертикальный both, и, в зависимости от разных типов экранов и ширины раскрытия это количество всегда будет разным. Крайне интересно, если вы что-то нароете... пока я запаслась дежурным вариантом - в одной физической матрице представлять две разных, попеременно, в зависимости от нажатия кнопок А или В.
|
|
23.01.2014, 20:11 | #8 |
Administrator
|
изврат, конечно, но встречал следующий вариант:
в каждой ячейке матраса 2 значения через '\' одно из одной области - второе из другой. так вот при аккуратном увеличении высоты строчек матрас в каждой ячейке рисует 2 циферки, одну под другой |
|
23.01.2014, 22:10 | #9 |
NavAx
|
Толково, кстати
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
24.01.2014, 13:13 | #10 |
Участник
|
Прикольная, кстати, мысль
но не пойдет. Фишка в том, что периоды заполнения матриц не совпадают, первая продажи, вторая прогнозы, и поучится визуальная чехарда значений, к тому же нулевые данные у меня пустые в ячейках. Разделить, где что, станет проблематично, я уверена, заказчик заколдобится от такого решения.... так что пока стою на варианте пересчет матриц по кнопкам. В принципе, работает нормально. Но идея двух синхронных матриц по-прежнему привлекательна... |
|
24.01.2014, 13:52 | #11 |
Участник
|
Как вариант разделить одну матрицу на 2 части, указывая через параметры сколько отводить для каждой из частей столбцов. Значения для столбцов запоминать в темповую таблицу, которую возможно на ходу придется заполнять. Возможны проблемы с шириной столбцов, т.к. в зависимости от этого разное кол-во столбцов, но это можно постараться ограничить. Сам такого не делал, но думается реализовать можно.
Так же не стоит забывать, что начиная с 5, кажется, можно свои контролы подгружать, а там уже что хочешь твори. |
|
24.01.2014, 18:05 | #12 |
Участник
|
Цитата:
Сообщение от InTacto
Как вариант разделить одну матрицу на 2 части, указывая через параметры сколько отводить для каждой из частей столбцов. Значения для столбцов запоминать в темповую таблицу, которую возможно на ходу придется заполнять. Возможны проблемы с шириной столбцов, т.к. в зависимости от этого разное кол-во столбцов, но это можно постараться ограничить. Сам такого не делал, но думается реализовать можно.
Нав у нас старый. |
|
24.01.2014, 18:15 | #13 |
Участник
|
Данные в столбцах делить на 2 части в одной матрице. Первые 3 столбца показываем с одними данными из вашей первой матрицы, а вторые 3 с другими из вашей второй матрицы. Сам я такого не пробовал делать, но думаю возможно, т.к. что считать в пересечении строк и столбцов по идее все равно.
|
|
27.01.2014, 19:28 | #14 |
Участник
|
нет, неудобно перемешивать данные в одной матрице, визуальная помойка получится.
Серия "сам такого не делал, но, думаю возможно", конечно, приятная глазу, но не конструктивная |
|