|
Как узнать имя вызвавшего элемента | ☑ | ||
---|---|---|---|---|
0
Jokerman
02.11.11
✎
14:40
|
Здрасте всем. Есть некий набор кнопок, им все назначен одна команда. Как узнать имя элемента вызвавшего эту команду в теле самой команды?
|
|||
1
Beduin
02.11.11
✎
14:40
|
(0) В процедуру передается вроде элемент?
|
|||
2
GROOVY
02.11.11
✎
14:41
|
"им все назначен одна команда" - Это плохой стиль кода.
(1) +1 |
|||
3
Jokerman
02.11.11
✎
14:42
|
Сорри *назначена одна команда
|
|||
4
Jokerman
02.11.11
✎
14:42
|
(1) Нет команда - уже пробовал
|
|||
5
Fish
02.11.11
✎
14:45
|
(2) Почему же плохой? Универсальная процедура, если требуется сделать часть действий одних и тех же, а часть действий различных, в зависимости от имени кнопки. Зато потом, если что-то надо изменить, придется менять не в 10-ти местах, а только в одном :)))
|
|||
6
Fish
02.11.11
✎
14:47
|
(0) Стандартно при нажатии на кнопку панели в процедуру передается параметр "Кнопка". Посмотри "Кнопка.Имя".
|
|||
7
Mort
02.11.11
✎
14:47
|
(5) Не путай команду и процедуру
|
|||
8
Jokerman
02.11.11
✎
14:50
|
(7) Да, да
Забыл сказать что кнопы создаются динамически |
|||
9
unregistered
02.11.11
✎
14:51
|
(5) >> Почему же плохой?
Потому что для каждого элемента формы (кнопки) лучше вызывать свой обработчик (для выполнения каждой команды свой обработчик). А вот уже из этих обработчиков обращаться к одной и той же универсальной процедуре. При этом, если есть различия в выполнении кода этой универсальной процедуры, то можно передавать различные значения параметра в эту самую процедуру из различных обработчиков (например, имя команды). При этом сохраняется возможность вносить нужные изменения только в одном месте, а не в 10-ти. |
|||
10
Fish
02.11.11
✎
14:53
|
(7) да, не обратил внимания :)))
|
|||
11
Fish
02.11.11
✎
14:55
|
(9) И чем же лучше? А если кнопки создаются программно и их количество заранее неизвестно?
|
|||
12
Beduin
02.11.11
✎
14:56
|
(0) ЭтаФорма.ТекущийЭлемент
|
|||
13
Mort
02.11.11
✎
14:56
|
(8) И команды тоже создавай и првязывай им один обработчик. А там по имени команды и смотри.
|
|||
14
Mort
02.11.11
✎
14:57
|
(12) Кнопки на КП так не палятся. И вообще криво.
|
|||
15
Beduin
02.11.11
✎
14:59
|
(14) Если на какой либо форме надо узнать кнопку, то этого достаточно.
Криво сделано в 1С. Так что это - кривость кривости. |
|||
16
Fish
02.11.11
✎
15:00
|
в (13), наверное, самое правильное решение
|
|||
17
shamannk
02.11.11
✎
15:10
|
Если тебе надо отработать нажатие кнопок назнач им одну процедуру а дальше:
ПриИзменении(Кнопка) Экспорт Если Кнопка.Имя="КнопкаСравнить" |
|||
18
Jokerman
02.11.11
✎
15:11
|
(13) Спасибо, как не догадался
|
|||
19
Jokerman
02.11.11
✎
15:11
|
(17) че то нето
|
|||
20
GROOVY
02.11.11
✎
15:12
|
Коллеги, представьте себе форму где 100500 элементов, и процедуры в модуле по наименованию ну никак не отражают сути элемента который их вызывает. Вы что будете "протыркивать" все элементф формы чтобы найти нужную процедуру-обработчик?! Я с такими формами работал. Хочется по рукам надавать тому кто так пишет.
|
|||
21
skunk
02.11.11
✎
15:13
|
(20)а в свойствах глянуть религия не позоволяет?
|
|||
22
Fish
02.11.11
✎
15:14
|
(20) Еще раз повторюсь, как быть, если элементы формы добавлены программно? Или кошерная религия 1С запрещает это делать, а надо тупо рисовать 100500 кнопочек? :))
|
|||
23
Fish
02.11.11
✎
15:16
|
+(22) И прописывать для них 100500 разных процедур, которые делают практически одно и то же?
|
|||
24
Jokerman
02.11.11
✎
15:22
|
(23) Согласен, мне лично удобнее так
|
|||
25
GROOVY
02.11.11
✎
15:23
|
(21) В своствах чего? Каждого из элементов формы?
(22) Про программное добавление в оригинале речи не шло. |
|||
26
Fish
02.11.11
✎
15:25
|
(25) в (8) только сказал :))
(24) Так это как? Как в (20)? :)) |
|||
27
Jokerman
02.11.11
✎
15:28
|
Да, ладно вам Mort сказал дело, как кому делать это его выбор, спасибо всем за участие!!!
|
|||
28
Fish
02.11.11
✎
15:31
|
(25) Мне кстати гораздо быстрее посмотреть в свойствах элемента формы, какую он процедуру вызывает, чет искать наименование процедуры среди длинных одинэсовских названий типа "ОсновныеДействияФормыБлаБлаБлаКнопочкаЧтоТоТамДелающаяПриИзменении" :)))
Забыли уже люди досовские времена, когда было ограничение на имя файла 8 символов, и оно должно было отражать суть выполняемой программы :))) |
|||
29
skunk
02.11.11
✎
16:07
|
(25)зачем каждого ... зачем мне протыкивать все элементы формы что-бы найти нужную процедуру-обработчик ... если я хочу глянуть какой у кнопки обработчик ... то тыкаю на кнопку и смотрю ... какой у нее обработчик...
все кнопки для этого мне тыкнать не надо |
|||
30
skunk
02.11.11
✎
16:09
|
(28)+100500 ... тем более учитывая определенную тягу менять обработчик у кнопок не мения названия обработчика ...
и оказывается, "ОсновныеДействияФормыБлаБлаБлаКнопочкаЧтоТоТамДелающаяПриИзменении" вызывается при клике на БлаБлаБлаКнопочкаДругая |
|||
31
GROOVY
02.11.11
✎
17:30
|
(29) Зайдем с другой стороны. Есть процедура обработчик события элемента формы, называется "Афигеть(Элемент)". Элементов 100500, как узнать из какого элемента, из какого события она вызывается?
|
|||
32
skunk
03.11.11
✎
06:49
|
(31)хм ... поиск отменили?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |