![]() |
![]() |
![]() |
|
v7: Выбор из списка значений | ☑ | ||
---|---|---|---|---|
0
Asakra
10.06.14
✎
16:25
|
на форме есть кнопка. по нажатию кнопки выпадает список значений под кнопкой.
задача. вывалить список по горячей клавише. проблема. текущий активный элемент может быть не кнопка. пользователь ждет, что список выпадет под кнопкой, а он выпадает где попало. Автивизировать("МояКнопка") в процедуре, где и вызывается выпадание списка не помогает. может FormEx умеет? я не нашел как. у него ВыбратьЗначение либо по активному атрибуту, либо где курсор. или как активизировать кнопку до вывода списка? |
|||
1
palpetrovich
10.06.14
✎
16:28
|
Автивизировать надо в предоперделенной процедуре, классика - ПриЗакрытии
|
|||
2
an-korot
10.06.14
✎
16:31
|
сделать выпадающее окно?
|
|||
3
Asakra
10.06.14
✎
16:32
|
(1) дак, а зачем при закрытии? она ж отработает, только при закрытии формы.
|
|||
4
Asakra
10.06.14
✎
16:32
|
(2) как? чем?
|
|||
5
an-korot
10.06.14
✎
16:33
|
(2) поле со списком, имею ввиду.
|
|||
6
an-korot
10.06.14
✎
16:34
|
вариант:
при нажатии кнопки, делать активным элементом твою кнопку, по завершеннии выбора возвращать активным элементом то которое было до нажатия кнопки. |
|||
7
Asakra
10.06.14
✎
16:34
|
(5) будет же тупо по центру экрана.
может еще варианты есть? хотелось бы под кнопкой... |
|||
8
Asakra
10.06.14
✎
16:35
|
(6) как?
пофиг, пусть кнопка активной останеться |
|||
9
palpetrovich
10.06.14
✎
16:35
|
(4) как-то так:
Процедура ПриЗакрытии() Если МожноЗакрыть = Нет Тогда Активизировать("КакойТоРеквизит", 1); СтатусВозврата(0); Возврат; КонецЕсли; КонецПроцедуры Процедура КакаяТоПроцедура() МожноЗакрыть = Нет; Форма.Закрыть(); КонецПроцедуры |
|||
10
Asakra
10.06.14
✎
16:39
|
(9) не помогло!
|
|||
11
Asakra
10.06.14
✎
16:41
|
(9) то же самое, что просто Активизировать("мояКнопка")
кнопка становиться активной после закрытия списка |
|||
12
an-korot
10.06.14
✎
16:45
|
Asakra, поле со списком точно не работает?
может ты путаешь это строка которая с треугольником справа, и выпадающим полем на указанную высоту. |
|||
13
Asakra
10.06.14
✎
16:47
|
(12)
список = СоздатьОбъект("СписокЗначений"); список.ДобавитьЗначение("знч1"); список.ДобавитьЗначение("знч2"); Если список.ВыбратьЗначение(ВыбЗнач,,,,1) < 1 Тогда Возврат; КонецЕсли; |
|||
14
palpetrovich
10.06.14
✎
16:48
|
(13) т.е. списка на форме нет?
|
|||
15
Asakra
10.06.14
✎
16:48
|
(14) неа
|
|||
16
an-korot
10.06.14
✎
16:51
|
вот тут решение через фальшивое закрытие формы,
оно позволяет менять активизировать элемент на который нужен фокус: смотри 21 ответ. http://forum.infostart.ru/forum9/topic71098/ конечно хитропопое решение почему то просто обновить форму не помогает ))) |
|||
17
palpetrovich
10.06.14
✎
16:53
|
(15) вроде все работает http://www.fayloobmennik.net/3873166
|
|||
18
Asakra
10.06.14
✎
16:56
|
(16) а (9) не оно?
|
|||
19
Asakra
10.06.14
✎
16:59
|
(17) вы кнопке назначьте горячую кнопку, например F7, и попробуйте нажать F7, активировав пред этим поле.
|
|||
20
an-korot
10.06.14
✎
16:59
|
(18) да да, тут базовый код указан.
|
|||
21
Asakra
10.06.14
✎
17:00
|
(20) см. (10)
|
|||
22
palpetrovich
10.06.14
✎
17:02
|
(19) наконец-то понял, пробую... :)
|
|||
23
Asakra
10.06.14
✎
17:03
|
может svcsvc.dll поможет?
пример не могу найти. |
|||
24
palpetrovich
10.06.14
✎
17:04
|
+22 да, подтверждаю, не работает ...думаю :)
|
|||
25
an-korot
10.06.14
✎
17:10
|
(21) у меня и мой совет не работает %( по той ссылке что я давал
|
|||
26
Ёпрст
гуру
10.06.14
✎
17:10
|
Да ё...
учись, студент! Перем МожноЗакрыть; //******************************************* Процедура ТвояПроцаНаКнопке() МожноЗакрыть = 1; Активизировать("ТвойРеквизит",1); Форма.Закрыть(0); КонецПроцедуры //====================================================================== Процедура ПриЗакрытии() Если МожноЗакрыть=1 Тогда СтатусВозврата(0); МожноЗакрыть=0; СЗ = СоздатьОбъект("СписокЗначений"); Для к = 1 По 10 Цикл СЗ.ДобавитьЗначение("Вася_"+к); КонецЦикла; СЗ.ВыбратьЗначение(,,,60,2); КонецЕсли; КонецПроцедуры |
|||
27
an-korot
10.06.14
✎
17:12
|
(26) да не работает
|
|||
28
an-korot
10.06.14
✎
17:13
|
(26) список выпадает у того элемента который активен
|
|||
29
Asakra
10.06.14
✎
17:13
|
(26) во! пасиб!
|
|||
30
an-korot
10.06.14
✎
17:14
|
Asakra, если использовать поле со списком то оно активизируется, правда список не выпадает :( но можно курсором выбирать по 1 строке.
|
|||
31
Ёпрст
гуру
10.06.14
✎
17:15
|
(28) еще подумай.
|
|||
32
an-korot
10.06.14
✎
17:15
|
(26) а нет работает я не в том месте активизировать ставил
|
|||
33
an-korot
10.06.14
✎
17:15
|
(31) да работает
|
|||
34
Asakra
10.06.14
✎
17:15
|
(30) см. (26) все работает! :)
|
|||
35
an-korot
10.06.14
✎
17:16
|
(34) да да увидел ))))
|
|||
36
Asakra
10.06.14
✎
17:16
|
(33) упс
|
|||
37
Asakra
10.06.14
✎
17:16
|
ВСЕМ СПАСИБО!
|
|||
38
Ёпрст
гуру
10.06.14
✎
17:17
|
||||
39
palpetrovich
10.06.14
✎
17:18
|
хе, а еще, наверное, можно "список" под "кнопку" засунуть и не париться с всем этим :)
|
|||
40
an-korot
10.06.14
✎
17:19
|
(39) неа, попробуй, меняется активный объект только после фальшивого закрытия.
|
|||
41
palpetrovich
10.06.14
✎
17:21
|
(40) да не, я не о том, вообще телодвижения с "фальшивым закрытием" - не нужны
|
|||
42
an-korot
10.06.14
✎
17:22
|
(41) челу не нравится что список выбора выподает после нажатия хоткея у того элемента который сейчас активен, а не у той кнопки у которого этот список висит.
|
|||
43
Asakra
10.06.14
✎
17:28
|
О!
Атрибут = СоздатьОбъект("АтрибутФормы"); Атрибут.УстановитьАтрибут(Форма, "кнСоздатьДокумент"); СтрокаДляВыбора = СтрЗаменить("знч1,знч2", ",", РазделительСтрок); СерверВыбора = СоздатьОбъект("Svcsvc.Service"); _Х = 0; _У = 0; Ширина = 0; Высота = 0; Атрибут.ПолучитьКоординаты(_Х,_У,Ширина,Высота,1); ЗначВозврата = СерверВыбора.FilterValue(СтрокаДляВыбора,25,,_Х,_У + Высота); |
|||
44
palpetrovich
10.06.14
✎
17:29
|
(42) блин, внимание рассеяно, с поста (22) уже забыл :)
|
|||
45
Asakra
10.06.14
✎
18:20
|
может кому сгодится. так работает как надо:
СерверВыбора = СоздатьОбъект("Svcsvc.Service"); Атрибут = СоздатьОбъект("АтрибутФормы"); Атрибут.УстановитьАтрибут(Форма, "МояКнопка"); СтрокаДляВыбора = СтрЗаменить("Доставка ТМЦ, ,ДоставкаТМЦ,Поступление ТМЦ, ,ПоступлениеТМЦ", ",", РазделительСтрок); // и т.п. _Х = 0; _У = 0;Высота = 0; Атрибут.ПолучитьКоординаты(_Х,_У,,Высота,1); ЗначВозврата = СерверВыбора.PopupMenu(СтрокаДляВыбора, 2, _Х, _У + Высота); для работы нужна: svcsvc.dll http://www.script-coding.com/svcsvc.html |
|||
46
Asakra
10.06.14
✎
18:27
|
(45) там косяк. такот надо:
СтрокаДляВыбора = СтрЗаменить("Доставка ТМЦ| |ДоставкаТМЦ,Поступление ТМЦ| |ПоступлениеТМЦ", ",", РазделительСтрок); // и т.п. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |