Имя: Пароль:
1C
 
Программное добавление кнопок на управляемую форму
0 РЕК
 
24.02.11
12:34
Всем, привет!
Люди, подскажите, плиз, как на управляемую форму(8.2) добавить кнопочки? программно.
Вот ПриСозданииНаСервере()делаю так:
Для н=0 по 10 Цикл
  Кнопка = Элементы.Добавить("Тест"+н,Тип("КнопкаФормы"));
КонецЦикла;
В переменную возвращает значение типа "КнопкаФормы", а вот на форме кнопочки не появляется.
Подозреваю, что нужно что-то типа ЗначениеВРеквизитФормы(),тогда нужно форме добавить реквизиты, а я не знаю точное количество кнопок, которые буду добавлять, соответственно неизвестно и количество реквизитов.
1 Композитор
 
24.02.11
12:38
Чисто методологический вопрос: зачем на форму добавлять программно кнопки? Или: в каких случаях рекомендуется программно добавлять кнопки на форму?
2 Stimcool
 
24.02.11
12:39
(1) например, в РМК в рознице. Если покупатель расплачивается картой, то добавляется кнопка "Оплата картой".
В форме есть одна эталонная кнопка, которая клонируется нужное число раз
3 РЕК
 
24.02.11
12:42
(1)юзвери хотят красивостей. Хочу состав менюшки менять таким образом.
4 Cube
 
24.02.11
12:43
ТекущаяСтрока = СоздатьСтроку();
   ИмяКнопки = "МояКнопка";
   Элементы.Добавить(ИмяКнопки, Тип("КнопкаФормы"), ТекущаяСтрока);
   ТекущаяКнопка = Элементы[ИмяКнопки];
   ТекущаяКнопка.Заголовок        = Заголовок;
   ТекущаяКнопка.ИмяКоманды    = "НажатиеНаКнопку";
5 Композитор
 
24.02.11
12:45
(2) а видимостью кнопок можно управлять? Терзают меня смутные сомнения, что программное добавление элементов формы как-то кривовато выглядит.
6 РЕК
 
24.02.11
12:49
(4)ничего не получилось, вернее результат тот же.
СоздатьСтроку() - что в этой функции должно быть? она где-то в модуле определена
7 РЕК
 
24.02.11
12:50
(5)а если количества кнопок изначально не знаешь?
8 РЕК
 
24.02.11
12:52
(4)спасибо большое! Получилось!
9 Cube
 
24.02.11
12:52
(6) Ну ппц... Синтаксис-помощник-то покури на досуге... ТекущаяСтрока - это просто строка формы. У меня создается так:

&НаСервере
Функция СоздатьСтроку()
   
   ИмяСтроки    = "МояСтрока";
   Элементы.Добавить(ИмяСтроки, Тип("ГруппаФормы"));
   
   ТекущаяСтрока = Элементы[ИмяСтроки];
   ТекущаяСтрока.Вид                    = ВидГруппыФормы.ОбычнаяГруппа;
   ТекущаяСтрока.Отображение            = ОтображениеОбычнойГруппы.Нет;
   ТекущаяСтрока.Группировка            = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
   ТекущаяСтрока.ОтображатьЗаголовок    = Ложь;
   
   Возврат ТекущаяСтрока;
   
КонецФункции //СоздатьСтроку()
10 Mitriy
 
24.02.11
12:53
(5) нормально все выглядит, просто кнопка не будет видимой, если она ничего не делает...

ИмяКоманды = "Команда" + Формат(Сч, "ЧГ=");
Команда = Команды.Добавить(ИмяКоманды);
Команда.Действие = "КомандаНажатиеНаКнопку";
НовыйЭлемент = Элементы.Добавить(ИмяКоманды, Тип("КнопкаФормы"), Элементы.Кнопки);
НовыйЭлемент.ИмяКоманды = ИмяКоманды;
НовыйЭлемент.Заголовок = "ИмяКоманды";

(4) дарю бесплатно ))
11 Cube
 
24.02.11
12:55
(10) Я ничего нового не узнал и давай уж флудить в одной ветке, в другие лезть не будем, ок?))
P.S. Иди примени к моей обработке, если сможешь :)
12 Mitriy
 
24.02.11
12:58
(11) смогу, даже не сомневайся ))
13 guitar_player
 
24.02.11
13:01
Не понял зачем конкретно необходимо программное добавление, если форма не типовая и возможно ее изменение. Имхо функциональными опциями можно хорошо сделать.
14 РЕК
 
24.02.11
13:03
всем спасибо, все классно получилось!
15 Mitriy
 
24.02.11
13:04
(13) значит, тебе это не надо... когда понадобится, тогда такой вопрос не возникнет...
16 Композитор
 
24.02.11
13:09
(7) да, это тяжелый случай. Я могу представить ситуацию, когда заранее не знаешь количества колонок. Но с кнопками как-то тяжело у меня получается.

(10) Про "выглядит". Я пишу не о том, как это на форме выглядит, а про подход в целом. Возможно, пока еще мне не приспичило программно кнопки создавать.

Я пытался придумать ситуацию, когда это необходимо. На примере программного добавления страниц на форме и всех соответствующих причиндалов к ним. В итоге обошелся без программирования. Жду, когда следующая оказия подвернется.
17 Композитор
 
24.02.11
13:10
(15) вот, подтвердил мои мысли
18 GenV
 
24.02.11
13:22
(16) Пример: Фильтр по первым буквам наименования в списке.