как перемещать строки с содержимым?

Автор medik2016, 20 декабря 2016, 21:58

0 Пользователи и 1 гость просматривают эту тему.

medik2016

Здравствуйте форумчане!
Уже несколько месяцев на работе мучаюсь с одной проблемой.
Часто приходится работать с таблицами в writer или лайбрари в виде списков.
Часто необходимо перемещать строки с содержимым согласно их приоритетности.
Уже неделю не могу найти ответа как можно воспользоваться такой функцией, может ее
Вообще нет?!
Когда искал нашел решение для ворда. Там такая проблема легко решается сочетанием клавиш shift+alt+стрелочки вниз или вверх. Описано как пример в данной статье http://office-guru.ru/word/kak-bystro-peremestit-stroku-v-tablice-word-2013-59.html
Помогите пожалуйста. Буду преиного благодарен!

kompilainenn

в райтере такой функции я не нашел, буду рад, если более опытные товарищи ткнут носом. как вариант - таблицу перенести в Calc и использовать возможности сортировки и фильтра там?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

bormant

#2
Абзацы Writer можно двигать по Ctrl+Alt+Вверх/Вниз.
А вот строки таблицы так не подвигать...
Причем, абзацы внутри ячейки тоже не двигаются.

Прямо-таки готовый фичереквест.
Автору на яд. Поддержать форум.

rami

Цитата: bormant от 20 декабря 2016, 21:05А вот строки таблицы так не подвигать...
Строки в таблице можно перетаскивать мышкой, предварительно вставив новую строку в нужном месте.

rami

Цитата: kompilainenn от 20 декабря 2016, 20:18как вариант - таблицу перенести в Calc и использовать возможности сортировки и фильтра там?
Сортировать можно и в таблице Writer

bormant

rami,
Шурик, вы комсомолец? Это же не наш метод... (q)
Не отрывая рук от клавиатуры всегда было большим плюсом OOo/LO. Неплохо б восстановить статус кво.
Автору на яд. Поддержать форум.

economist

1) Можно написать макрос под shift+alt+стрелочки вниз или вверх

2) Можно автоматизировать само формирование таблицы как надо, задействовав имеющиеся механизмы. Например автосписок иллюстраций или список литературы (ссылок) - сделать на стилях, в виде таблицы с рамками, - нефиг делать. Из поста не ясно что делается.

Важно понять причину - почему приходится часто менять порядок строк в таблице, возможно лучше это делать в Calc, а во Writer отображать её как связь по DDE.

А идея с пересортировкой во Writer (для этого должна быть колонка с № п/п) - самая правильная. Если приходится переставлять, скажем, 4 строки из 10 - обязательно будет ошибка или трата времени, сортировка - 100% будет лучше и быстрее.   
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

rami

Цитата: bormant от 23 декабря 2016, 01:20Шурик, вы комсомолец? Это же не наш метод... (q)
Спалили... O0
Цитата: bormant от 23 декабря 2016, 01:20Не отрывая рук от клавиатуры всегда было большим плюсом OOo/LO. Неплохо б восстановить статус кво.
Вроде и раньше строки в таблице не перемещались, так, что отрывать руки (от клавиатуры ;D) вроде бы некому.

А вообще, эта возможность была бы полезна.

mikekaganski

Цитата: bormant от 20 декабря 2016, 23:05
Абзацы Writer можно двигать по Ctrl+Alt+Вверх/Вниз.
А вот строки таблицы так не подвигать...
Причем, абзацы внутри ячейки тоже не двигаются.

Прямо-таки готовый фичереквест.

В таблице эта комбинация клавиш зарезервирована под какое-то действие с вертикальным размером ячейки (не строки) - я пока не нашёл как его посмотреть; код по условию KS_CellBottomSmall здесь.

Можно назначить действие по перемещению абзаца другой комбинации.

Что касается перемещения строк таблицы - не нахожу такого действия, равно как и фичереквеста.
С уважением,
Михаил Каганский

JohnSUN

Цитата: mikekaganski от 23 декабря 2016, 12:44
перемещения строк таблицы - не нахожу такого действия
ИМХО, только ИМХО...
Действия по редактированию текста - реализуются просто и понятно, структура документа сама подсказывает возможные варианты действий. Все эти смена уровней нумерации, обмен абзацев местами и прочее - "родные" действия структурированного документа.
А "текстовая таблица" текстом не является, это внедренный объект, как ни крути.
Можно, конечно, "нырнуть" на уровень внедренного объекта, допросить его с пристрастием о имеющихся свойствах/методах и вытащить их наверх, на уровень документа. Ну, что-то вроде того, что hanya в MRI сделал, только чуть "пользователеориентированно".
Но давайте здесь ударим по тормозам и оглядимся.
"Текстовая таблица" далеко не единственный объект, который может быть внедрен в документ.
Как должны будут реагировать на, скажем, Ctrl+Alt+Вверх/Вниз такие "внедренцы" как картинка или формула?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

mikekaganski

#10
Не согласен.
Таблица с точки зрения writer - не внедренец :)
На Ctrl+Alt+Вверх/Вниз реагирует абзац. Поэтому если курсор в абзаце, и комбинация клавиш не перехвачена (что мы имеем в нашем случае), то абзац и должен двигаться. И это произойдёт в т.ч. и в таблице, если заменить Ctrl+Alt+Вверх/Вниз на что-то позаковыристей (я, например, опробовал на Ctrl+Shift+Alt+W/S).

Картинка и формула - это реально внедренцы. Но если они привязаны как символ, данная комбинация логично должна примениться к абзацу, в котором этот "символ".

Насчёт перемещения строк таблицы - это отдельная песня, и если такая функция появится, она явно будет привязана на другую комбинацию.

С другой стороны, эта функция (перемещения строк таблицы) прямо напрашивается на неприятности, как только появляются объединённые ячейки. Прямо-таки краш неизбежен. Конечно, возможен вариант, что мы перед перемещением проверяем, нет ли в строке ячеек с атрибутом объединения... надеюсь, это единственная проблема.
С уважением,
Михаил Каганский

rami

Цитата: mikekaganski от 23 декабря 2016, 11:48Картинка и формула - это реально внедренцы. Но если они привязаны как символ, данная комбинация логично должна примениться к абзацу, в котором этот "символ".
Не только "как символ" или "к символу", но и "к абзацу" — перемещаются с абзацем.

JohnSUN

Цитата: mikekaganski от 23 декабря 2016, 13:48
Не согласен.
Ну, я же предупредил - ИМХО
Цитата: mikekaganski от 23 декабря 2016, 13:48
Таблица с точки зрения writer - не внедренец :)
А вот тут уже я не согласен (или мы путаемся в русскоязычной неоднозначной терминологии)
Да, таблица входит в отдельную коллекцию TextTables и на этом основании может рассматриваться как часть документа.
С другой стороны, давай глянем как API предлагает создавать и внедрять этот объект.
oTable = ThisComponent.createInstance("com.sun.star.text.TextTable")
oTable.initialize(3, 3)   'oTable.setName("чего-то там такое")  и прочее
oText.insertTextContent(ThisComponent.getCurrentController().getViewCursor(), oTable, False)

Это немного отличается от простого .insertString(), правда?

А вообще-то, проблема действительно возникла из-за того, что medik2016 изначально выбрал не тот инструмент для решения своих задач.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

rami

Цитата: mikekaganski от 23 декабря 2016, 11:48С другой стороны, эта функция (перемещения строк таблицы) прямо напрашивается на неприятности, как только появляются объединённые ячейки. Прямо-таки краш неизбежен. Конечно, возможен вариант, что мы перед перемещением проверяем, нет ли в строке ячеек с атрибутом объединения... надеюсь, это единственная проблема.
С третьей стороны, строки с объединёнными ячейками перетаскиваются мышем без краша ;D

mikekaganski

#14
JohnSUN, на самом деле тут просто особенность API для этого. А на уровне ядра это вполне себе равнозначные объекты. (Должен признаться, что я вообще дуб в StarBASIC API.)

Насчёт неправильно выбранного инструмента - полностью ку. Я тут просто заинтересовался самой функцией, без привязки к задаче.

rami, насчёт "перетаскивания": ну, можно на это посмотреть и так. На самом деле, при перетаскивании мышью происходит замена *содержимого* результирующих строк, а не перемещение *строк* таблицы: это можно увидеть, если "покрасить" таблицу (или применить разные границы).

Я себе представлял функцию реальной сменой мест реальных объектов "строка таблицы" со всеми вытекающими...
С уважением,
Михаил Каганский