|
Как сделать одну командую панель для нескольких таблиц на управляемой форме? | ☑ | ||
---|---|---|---|---|
0
TormozIT
гуру
02.09.17
✎
10:49
|
Имею управляемую форму, в которой есть много реквизитов типа ТаблицаЗначений, создаваемых во время выполнения. Каждая таблица выведена на свою страницу. Над группой страниц расположена командная панель с общими командами для всех таблиц. Часть из этих команд - системные (добавить строку, удалить строки и т.д.). При активизации страницы таблицы командная панель должна направлять свои действия на соответствующую таблицу формы. Свойство "Источник команд" командной панели доступно только в режиме разработки и его нет в объектной модели.
Как решить такую задачу? |
|||
1
mistеr
02.09.17
✎
11:04
|
Вижу два решения:
1) размножить панели, нестандартные действия добавлять программно 2) прописать все вручную Я бы выбрал второе. |
|||
2
TormozIT
гуру
02.09.17
✎
11:09
|
(1) Поясни "прописать все вручную"
|
|||
3
TormozIT
гуру
02.09.17
✎
11:10
|
(1) В "размножить панели" имелось ввиду "размножить командные панели"?
|
|||
4
mistеr
02.09.17
✎
11:14
|
(2) Кнопки с обработчиками, выполняющими соответствующие действия для текущей таблицы.
(3) Да |
|||
5
TormozIT
гуру
02.09.17
✎
11:19
|
По варианту 2 предлагается все стандартные действия для таблицы формы реализовать самому? Если так, то такой вариант очень затратный, т.к. требуется высокая универсальность.
|
|||
6
Franchiser
гуру
02.09.17
✎
11:23
|
Очистить источник и добавить свои команды программно
|
|||
7
TormozIT
гуру
02.09.17
✎
11:23
|
Вариант с размножением командных панелей понятен и будет работать, но он добавляет очень много лишних кнопок в форму, т.к. (все системные кнопки + мои кнопки) * количество таблиц. Хотелось бы избежать этого.
|
|||
8
Cyberhawk
02.09.17
✎
13:35
|
(7) Можно управлять видимостью групп / команд (кнопок) в зависимости от активной таблицы-страницы
|
|||
9
mszsuz
02.09.17
✎
14:16
|
Нельзя программно добавить кнопки с системными командами
Выхода два: 1. Нарисовать свои кнопки, для части из них можно засылать в буфер клавиатуры хоткеи соответствующих команд типа: &НаКлиенте Процедура КомандаДобавить(Команда) Если ТипЗнч(ЭтотОбъект.ТекущийЭлемент) = Тип("ТаблицаФормы") Тогда ОбъектShell = Новый COMОбъект("Wscript.Shell"); ОбъектShell.SendKeys("{Insert}"); КонецЕсли; КонецПроцедуры 2. Все-таки отказаться от общей панели сверху и добавить общие команды в командную панель каждой таблицы |
|||
10
mszsuz
02.09.17
✎
14:34
|
3. Сделать доп.тз и вывести на форму только её. При переключении закладок переливать туда данные из соответствующей ТЗ, потом обратно.
|
|||
11
mistеr
02.09.17
✎
14:46
|
(10) Жаль, в 1С нет закладок отдельно от страниц.
|
|||
12
Cyberhawk
02.09.17
✎
15:22
|
(11) А где есть? Покажи на картинке, что хочется
|
|||
13
TormozIT
гуру
02.09.17
✎
15:39
|
Если размножать командные панели, то на каждой командной панели будет по 20 кнопок. 50*20 = 1000 лишних элементов формы, каждый из которых имеет много свойств, передаваемых с клиента на сервер и обратно. Это помимо самой немаленькой формы (1500 элементов).
|
|||
14
TormozIT
гуру
02.09.17
✎
16:35
|
Вариант с размножением командных панелей работать не будет. Таблицы значений в реквизитах формы добавляются динамически и заранее неизвесты. Поэтому командные панели тоже будут создаваться динамически. А свойство "Источник команд" у командной панели недоступно в объектной модели, т.е. нельзя связать командную панель с добавленной таблицей.
|
|||
15
TormozIT
гуру
02.09.17
✎
16:37
|
Через sendkeys вызывать можно лишь часть стандартных команд. Поэтому в итоге остается только самый страшный вариант - создавать аналоги всех стандартных команд, а это - большой и сложный объем кода и интерфейса пользователя.
|
|||
16
TormozIT
гуру
02.09.17
✎
16:51
|
(14) Ошибся. Все таки вариант с размножением работать будет. Добавить свои кнопки программно можно в командую панель из свойства "КоманднаяПанель" таблицы формы.
|
|||
17
mistеr
03.09.17
✎
00:27
|
(12) В Visual Studio, Delphi и других средах. Панель с закладками и панель со страницами - это стандартные элементы управления в Windows. Их можно использовать по отдельности, а можно в связке.
|
|||
18
mistеr
03.09.17
✎
00:48
|
(15) Пришла в голову еще одна мысль. Поместить на форму скрытую таблицу и привязать к ней командную панель. Команды перехватывать в обработчиках событий таблицы, ну и делать то же самое с другой таблицей. Конечно, не все можно так перехватить, но хоть что-то.
|
|||
19
Cyberhawk
03.09.17
✎
08:42
|
(17) "Панель с закладками и панель со страницами - это стандартные элементы управления в Windows" // Не понял, чем закладка от страницы отличается?
|
|||
20
mistеr
03.09.17
✎
09:50
|
(19) Неважно. Я нашел то, что хотел в (11) (и что скорее всего делает TormozIT). Это свойство панели РаспределятьПоСтраницам. То есть на панели одна таблица и много закладок, при их переключении загружаем в таблицу нужные данные.
|
|||
21
mistеr
03.09.17
✎
10:01
|
(20) "делает" -> "сделает"
|
|||
22
Cyberhawk
03.09.17
✎
11:35
|
(20) Так что такое "закладки отдельно от страниц"?
|
|||
23
TormozIT
гуру
03.09.17
✎
11:59
|
(20) К сожалению, РаспределятьПоСтраницам = Ложь не даст возможность просто сохранять текущую колонку и строку и ширину колонок и т.д. при переключении закладок. Поэтому так я делать точно не буду.
Пока я сделал вставку моих команд в каждую авто командную панель таблицы при первой активизации страницы. |
|||
24
Сияющий в темноте
03.09.17
✎
19:16
|
(22) есть такой элемент управления,панель закладок,которая никак к страницам не относится,вспомните хотя бы 7.7,там так и было
|
|||
25
mistеr
03.09.17
✎
19:36
|
Я бы еще задумался, а точно ли пользователю нужны 50 таблиц в одной форме.
|
|||
26
TormozIT
гуру
03.09.17
✎
23:06
|
(25) А сколько по твоему ему нужно? 46, 41, 37, 32, 26, 20, 19, 7, 3? Это сарказм.
|
|||
27
mistеr
04.09.17
✎
08:58
|
(26) Это опыт.
|
|||
28
TormozIT
гуру
04.09.17
✎
09:08
|
(27) Хорошо, что платформу пишут не опираясь на подобный опыт. Решаемая мной задача также требует высокой универсальности. Поэтому в ней такой опыт мало полезен.
|
|||
29
mistеr
04.09.17
✎
09:14
|
(28) Ну поделись своим опытом, нам тоже полезно будет.
P.S. Не воспринимай мою критику как враждебность. Это скорее любопытство. |
|||
30
Fedor-1971
04.09.17
✎
10:33
|
(20) наверно, имелась в виду "Страница без закладок", т.е. имеем некую группу типа "Страница", которую можно динамически привязывать к разным "закладочным панелям" - функционал отображается и обрабатывается одинаково в разных местах. Как пример Сканы документов - где надо подключаем. По началу,я так воспринимал "Общие формы" - типа в них описываем некий функционал и подключаем куда нам нужно, по факту, назначение оных оказалось несколько иным.
(28) не горячись так, скоро пользователи захотят сравнить данные из разных таблиц, т.е. увидеть их одновременно рядом и в этом (25) прав - логичнее открыть несколько окон с данными (и переключаться между окнами) чем затолкать их все на одну тормозящую форму. По сути вопроса в (0) - ты просто усложняешь логику обработчиков для одной панели помимо решения проблемы её состава. В (13) вычислено количество кнопок - как только ты их описал на форме и они начинают ездить Сервер-Клиент и обратно так, что оптимизации собственно не получится |
|||
31
TormozIT
гуру
04.09.17
✎
10:43
|
Я не хочу делиться опытом про 50 таблиц, т.к. задача узкая и другим не будет интересна. Поэтому я только потрачу свое время и подставлюсь под критику в плане "у тебя неправильная задача".
Я описал конкретную проблему и попросил совета в выборе оптимального способа решения. Способ решения я нашел с помощью данных здесь советов. Всем спасибо за помощь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |