Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 11:50

Удаление кнопок в форме (Обычное приложение)

Автор Zverff, 22 ноя 2011, 12:33

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

Zverff

Есть два Кнопки 1 и 2, при нажатие они автоматом создают кнопки из справочника "Номенклатура", разделены на группы 1 и 2. При нажатие 1 го появляеться кнопки, при нажатие 2 появляеться кнопка, но кнопки от 1 еще остаються, как сделать что бы они удалялись когда нажимали на кнопку 2?

has

Покажите код где они создаются. А вобще ЭлементыФормы.Удалить(ТутКнопка)

Zverff

Писал этот код, не работает. Удаляет кнопки, но некоторые остаются, сказали тогда писать так.

Для каждого ИмяЭлемента из ЭлементыФормы Цикл
              ЭлементыФормы.Удалить(ИмяЭлемента);
      ИмяЭлемента.Имя = ?
    КонецЦикла;


ИмяЭлемента.Имя = ? после  него я незнаю что писать, я новичок в 1с

Zverff

процедура такая

Процедура ПервоеНажатие(Элемент)
      // Вставить содержимое обработчика.
      текЛево = 9;
      ВыборкаСостояния = Справочники.Номенклатура.Выбрать();
      Пока ВыборкаСостояния.Следующий() Цикл
         Если ВыборкаСостояния.Родитель.Наименование = "Первое блюдо" Тогда 
            текКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), "Код" + (ВыборкаСостояния.Код), Истина);
            текКнопка.Высота = 40;
            текКнопка.Ширина = 70;
            текКнопка.Заголовок = (ВыборкаСостояния.Наименование);
            текКнопка.Верх = 65;
            текКнопка.Лево = текЛево;
            текЛево = текЛево + текКнопка.Ширина + 7;
         Иначе
            продолжить;
         КонецЕсли;   
           КонецЦикла;
  КонецПроцедуры






Процедура ВтороеНажатие(Элемент)
   // Вставить содержимое обработчика.
      Для каждого ИмяЭлемента из ЭлементыФормы Цикл
              ЭлементыФормы.Удалить(ИмяЭлемента);
      ИмяЭлемента.Имя =
    КонецЦикла;
            текЛево = 9;
      ВыборкаСостояния = Справочники.Номенклатура.Выбрать();
         Пока ВыборкаСостояния.Следующий() Цикл
         Если ВыборкаСостояния.Родитель.Наименование = "Второе блюдо" Тогда 
            текКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), "Код" + (ВыборкаСостояния.Код), Истина);
            текКнопка.Высота = 40;
            текКнопка.Ширина = 70;
            текКнопка.Заголовок = (ВыборкаСостояния.Наименование);
            текКнопка.Верх = 65;
            текКнопка.Лево = текЛево;
            
            текЛево = текЛево + текКнопка.Ширина + 7;
         Иначе
            продолжить;
         КонецЕсли;
      КонецЦикла;
    КонецПроцедуры

has

Попробуй так, только если нет второго блюда, то кнопки первого все равно будут удалены. А их обязательно удалять? Может невидимыми делать просто?

Процедура ВтороеНажатие(Элемент)
  // Вставить содержимое обработчика.
     текЛево = 9;
     ВыборкаСостояния = Справочники.Номенклатура.Выбрать();
        Пока ВыборкаСостояния.Следующий() Цикл
        Если ВыборкаСостояния.Родитель.Наименование = "Первое блюдо" Тогда //найдем кнопку по данному элементу
           КнопкаНаФорме = ЭлементыФормы.Найти("Код" + ВыборкаСостояния.Код);
           Если Не КнопкаНаФорме = Неопределено Тогда
               ЭлементыФормы.Удалить(КнопкаНаФорме);
           КонецЕсли;
        КонецЕсли;
        Если ВыборкаСостояния.Родитель.Наименование = "Второе блюдо" Тогда
           текКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), "Код" + (ВыборкаСостояния.Код), Истина);
           текКнопка.Высота = 40;
           текКнопка.Ширина = 70;
           текКнопка.Заголовок = (ВыборкаСостояния.Наименование);
           текКнопка.Верх = 65;
           текКнопка.Лево = текЛево;
           
           текЛево = текЛево + текКнопка.Ширина + 7;
        Иначе
           продолжить;
        КонецЕсли;
     КонецЦикла;
   КонецПроцедуры

Zverff

Спасибо, работает) Можно ли убрать когда на одну и тоже кнопку нажимать Первое блюдо, что бы ошибка не выходила
{Обработка.Обработка.Форма.Форма.Форма(17)}: Ошибка при вызове метода контекста (Добавить)
            текКнопка = ЭлементыФормы.Добавить(Тип("Кнопка"), "Код" + (ВыборкаСостояния.Код), Истина);
по причине:
Недопустимое значение параметра (параметр номер '2') (Не уникальное имя! (Код000000005))

Zverff

Можно же просто при одном нажатие и все кнопка не доступна, на другую кнопку нажимаеш она опять доступно

has

Получается одинаковое имя кнопкам назначается чтоли. А коды уникальны?

Zverff

Нет) Тут коды одинаковые) а повторому разу создавать кнопки по коду не могут. При 2-м раза нажатие ошибка вылетает) 1 раз нажмеш норм. Как добавить процедура на не доступность после 1-го нажатие кнопки? И потом опять дать доступ но токо когда нажмет на Второе Блюдо кнопку?

has

Причем тут доступность, если у элементов группы Первое блюдо и Второе блюдо могут быть одинаковые коды, то конечно не даст разместить на форме кнопки с одинаковыми именами. Можно сделать имя не
"Код" + ВыборкаСостояния.Код
а допустим
"Код" + ВыборкаСостояния.Родитель.Код + ВыборкаСостояния.Код

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск