Программное создание кнопок со стандартным действием над таблицей формы. УФ.
УФ.
Программно создаю дерево на форме.
Без каких-либо моих "лишних действий", у него отрисовывается командная панель (КП) со стандартной кнопкой "Добавить", а также двумя стрелками перемещения строк вверх-вниз. Все ок.
На эту же КП программно помещаю свою кнопку, связанную с моей "нестандартной" командой.
Далее произошла обычная история "Все было хорошо, пока Пользователю не понадобилось..."
А ему захотелось, чтобы эта "нестандартная" кнопка помещалась ПЕРЕД стандартными кнопками.
И вот тут-то начался трэш.........
На ИТС описано, как надо поступить в конфигураторе при ручном "рисовании":
1) Для таблицы формы, установить положение ее стандартной КП в "Нет".
2) Добавить новую группу формы с видом "Командная панель".
3) В нее добавить две группы формы с видом "Группа кнопок".
4) В первую из них добавить кнопку с "нестандартной" командой.
5) Во второй, в свойстве "Источник команд", указать нашу таблицу формы.
Программно, получилось все, кроме п.5.
НЕТУ у группы формы свойства ИсточникКоманд. Или ИсточникДействий.
А свойство Родитель (в котором можно было бы прописать нашу таблицу формы) - только чтение!
Попытался сделать так:
Т.е., чтобы в момент создания второй КП, ее Родитель был моим деревом. Но при этом у созданной КП вид сразу становится "Группа колонок", и уже не меняется!
Кто с этим боролся и побеждал - хелп плиз!
Программно создаю дерево на форме.
Без каких-либо моих "лишних действий", у него отрисовывается командная панель (КП) со стандартной кнопкой "Добавить", а также двумя стрелками перемещения строк вверх-вниз. Все ок.
На эту же КП программно помещаю свою кнопку, связанную с моей "нестандартной" командой.
Далее произошла обычная история "Все было хорошо, пока Пользователю не понадобилось..."
А ему захотелось, чтобы эта "нестандартная" кнопка помещалась ПЕРЕД стандартными кнопками.
И вот тут-то начался трэш.........
На ИТС описано, как надо поступить в конфигураторе при ручном "рисовании":
1) Для таблицы формы, установить положение ее стандартной КП в "Нет".
2) Добавить новую группу формы с видом "Командная панель".
3) В нее добавить две группы формы с видом "Группа кнопок".
4) В первую из них добавить кнопку с "нестандартной" командой.
5) Во второй, в свойстве "Источник команд", указать нашу таблицу формы.
Программно, получилось все, кроме п.5.
НЕТУ у группы формы свойства ИсточникКоманд. Или ИсточникДействий.
А свойство Родитель (в котором можно было бы прописать нашу таблицу формы) - только чтение!
Попытался сделать так:
ВтораяКоманднаяПанель = Элементы.Вставить("ИмяВторойКП",
Тип("ГруппаФормы"), ЭлементДерево);
ВтораяКоманднаяПанель.Вид = ВидГруппыФормы.ГруппаКнопок;
Т.е., чтобы в момент создания второй КП, ее Родитель был моим деревом. Но при этом у созданной КП вид сразу становится "Группа колонок", и уже не меняется!
Кто с этим боролся и побеждал - хелп плиз!
Прикрепленные файлы:
Найденные решения
(1) Предлагаю Вам пойти по самому простому пути: не трогать командную панель и ее состав, а сразу вставить кнопку в нужное место. Т.к. Вы добавляете свою кнопку программно и скорее всего в обработчике создания формы, то все стандартные команды уже сгенерированы и размещены платформой на своих местах. Вам остается только вставить кнопку вперед всех:
КнопкаФормы = Элементы.Вставить(
НоваяКоманда.Имя,
Тип("КнопкаФормы"),
ЭлементДерево.КоманднаяПанель,
ЭлементДерево.КоманднаяПанель.ПодчиненныеЭлементы[0]);
(3)
Да, точно; причем, я начинал именно с этого, самого очевидного варианта - но я сразу напоролся на то, что в процедуре ПриСозданииНаСервере, ЭлементДерево.КоманднаяПанель.ПодчиненныеЭлементы.Количество() = 0 - и я сдался.
А сейчас я сделал это в ПриОткрытии: сделал вызов серверной процедуры, в которой и добавил кнопку - так, как Вы и предложили. Ну и еще надо не забыть присвоить ИмяКоманды:
КнопкаФормы.ИмяКоманды = "МояКоманда";
Благодарю!
КнопкаФормы = Элементы.Вставить(
НоваяКоманда.Имя,
Тип("КнопкаФормы"),
ЭлементДерево.КоманднаяПанель,
ЭлементДерево.КоманднаяПанель.ПодчиненныеЭлементы[0]);
НоваяКоманда.Имя,
Тип("КнопкаФормы"),
ЭлементДерево.КоманднаяПанель,
ЭлементДерево.КоманднаяПанель.ПодчиненныеЭлементы[0]);
Да, точно; причем, я начинал именно с этого, самого очевидного варианта - но я сразу напоролся на то, что в процедуре ПриСозданииНаСервере, ЭлементДерево.КоманднаяПанель.ПодчиненныеЭлементы.Количество() = 0 - и я сдался.
А сейчас я сделал это в ПриОткрытии: сделал вызов серверной процедуры, в которой и добавил кнопку - так, как Вы и предложили. Ну и еще надо не забыть присвоить ИмяКоманды:
КнопкаФормы.ИмяКоманды = "МояКоманда";
Благодарю!
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Предлагаю Вам пойти по самому простому пути: не трогать командную панель и ее состав, а сразу вставить кнопку в нужное место. Т.к. Вы добавляете свою кнопку программно и скорее всего в обработчике создания формы, то все стандартные команды уже сгенерированы и размещены платформой на своих местах. Вам остается только вставить кнопку вперед всех:
КнопкаФормы = Элементы.Вставить(
НоваяКоманда.Имя,
Тип("КнопкаФормы"),
ЭлементДерево.КоманднаяПанель,
ЭлементДерево.КоманднаяПанель.ПодчиненныеЭлементы[0]);
(5) Нет, он говорил, что он программно добавляет свою командную панель, и у него не получается назначить ей ИсточникДействий.
Я же предлагал использовать существующую, отключив в ней Автозаполнение. Хотя и это не поможет - Автозаполнение и ИсточникДействий недоступны для программной обработки...
Я же предлагал использовать существующую, отключив в ней Автозаполнение. Хотя и это не поможет - Автозаполнение и ИсточникДействий недоступны для программной обработки...
(3)
Да, точно; причем, я начинал именно с этого, самого очевидного варианта - но я сразу напоролся на то, что в процедуре ПриСозданииНаСервере, ЭлементДерево.КоманднаяПанель.ПодчиненныеЭлементы.Количество() = 0 - и я сдался.
А сейчас я сделал это в ПриОткрытии: сделал вызов серверной процедуры, в которой и добавил кнопку - так, как Вы и предложили. Ну и еще надо не забыть присвоить ИмяКоманды:
КнопкаФормы.ИмяКоманды = "МояКоманда";
Благодарю!
КнопкаФормы = Элементы.Вставить(
НоваяКоманда.Имя,
Тип("КнопкаФормы"),
ЭлементДерево.КоманднаяПанель,
ЭлементДерево.КоманднаяПанель.ПодчиненныеЭлементы[0]);
НоваяКоманда.Имя,
Тип("КнопкаФормы"),
ЭлементДерево.КоманднаяПанель,
ЭлементДерево.КоманднаяПанель.ПодчиненныеЭлементы[0]);
Да, точно; причем, я начинал именно с этого, самого очевидного варианта - но я сразу напоролся на то, что в процедуре ПриСозданииНаСервере, ЭлементДерево.КоманднаяПанель.ПодчиненныеЭлементы.Количество() = 0 - и я сдался.
А сейчас я сделал это в ПриОткрытии: сделал вызов серверной процедуры, в которой и добавил кнопку - так, как Вы и предложили. Ну и еще надо не забыть присвоить ИмяКоманды:
КнопкаФормы.ИмяКоманды = "МояКоманда";
Благодарю!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот