![]() |
![]() |
![]() |
|
Дерево значений интерактивный ввод строки | ☑ | ||
---|---|---|---|---|
0
Широкий
22.06.09
✎
11:13
|
Не могу сообразить.. на форме есть дерево значений.
Стандартная кнопка ввода новой строки добавляет лишь подчиненные строки.. Есть ли какой нить параметр с помошью которого можно было бы регулировать родителя, в котором надо создать строку? |
|||
1
Stepa86
22.06.09
✎
11:35
|
Родителем становиться ТекущаяСтрока дерева
|
|||
2
Широкий
22.06.09
✎
11:36
|
(1) Я в курсе.. как программно указать нужного родителя?
|
|||
3
Stepa86
22.06.09
✎
11:40
|
(2) не понял задачи, если нужно добавить в корень новую строку, то
НовСтрока = лДерево.Строки.Добавить(); НовСтрока.Поле1 = Чтото1; НовСтрока.Поле2 = Чтото2; Если конкретному родителю, то: КонкретныйРодитель.Строки.Добавить(); НовСтрока.Поле1 = Чтото1; НовСтрока.Поле2 = Чтото2; |
|||
4
Stepa86
22.06.09
✎
11:40
|
*(3)НовСтрока = КонкретныйРодитель.Строки.Добавить();
|
|||
5
Stepa86
22.06.09
✎
11:41
|
а интерактивно: только выбором текущего родителя
|
|||
6
Широкий
22.06.09
✎
11:42
|
Упрощенно: Нужно добавить код чтобы при вводе новой строки (нажатием стандартной кнопки) строка добавлялась всегда в корень дерева
|
|||
7
Stepa86
22.06.09
✎
11:45
|
НовСтрока = лДерево.Строки.Добавить();
ЭлементыФормы.лДерево.ТекущаяСтрока = НовСтрока; ЭлементыФормы.лДерево.ИзменитьСтроку(); вроде бы |
|||
8
Stepa86
22.06.09
✎
11:48
|
(7) проверил, работает так, как я понял задачу... если текущая строка - корень дерева, то F9 тоже помогает
|
|||
9
Широкий
22.06.09
✎
11:51
|
(7) Это уже проходил.. оказаться от добавления нельзя (через ESC)
|
|||
10
Stepa86
22.06.09
✎
11:53
|
ПередОкончаниемРедактирования флажок ОтменаРедактирования?
|
|||
11
Широкий
22.06.09
✎
11:55
|
(10) Да не.. попробуй в любом табличном поле добавить строку - строка будет новая и если юзер нажимает ESC - строка не создастся.
В твоем слечае - я строку добалю по любому.. просто введу ее в режим редактирования |
|||
12
Stepa86
22.06.09
✎
12:06
|
Процедура ТабличноеПоле1ПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель)
Если Не Копирование И ТабличноеПоле1.Строки.Количество() > 0 Тогда Отказ = Истина; ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока = ТабличноеПоле1.Строки[0]; WshShell = Новый COMОбъект("WScript.Shell"); WshShell.SendKeys("{F9}"); КонецЕсли; КонецПроцедуры |
|||
13
Stepa86
22.06.09
✎
12:09
|
Почему то если ПередНачаломдобавления сменить Родителя, то ничего не происходит =(
|
|||
14
Широкий
22.06.09
✎
12:12
|
(13) Насчет скриптов - ты перегнул .. есть стандартный метод копирования.. Это тоже проходил... минус в том что еще и структура строк копируется
|
|||
15
Stepa86
22.06.09
✎
12:30
|
Перем ПрограммноеКопирование;
Процедура ТабличноеПоле1ПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель) Если Не Копирование И ТабличноеПоле1.Строки.Количество() > 0 Тогда Отказ = Истина; ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока = ТабличноеПоле1.Строки[0]; ПрограммноеКопирование = Истина; ЭлементыФормы.ТабличноеПоле1.СкопироватьСтроку(); КонецЕсли; КонецПроцедуры Процедура ТабличноеПоле1ПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) Если ПрограммноеКопирование = Истина И НоваяСтрока Тогда Элемент.ТекущиеДанные.Колонка1 = ""; ПрограммноеКопирование = Ложь; КонецЕсли; КонецПроцедуры ПрограммноеКопирование = Ложь; |
|||
16
Stepa86
22.06.09
✎
12:32
|
то есть вот так
Процедура ТабличноеПоле1ПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) Если ПрограммноеКопирование = Истина И НоваяСтрока Тогда Элемент.ТекущиеДанные.Колонка1 = ""; Элемент.ТекущиеДанные.Строки.Очистить(); ПрограммноеКопирование = Ложь; КонецЕсли; КонецПроцедуры |
|||
17
Широкий
22.06.09
✎
12:42
|
(16) Вроде подходит.. сейчас еще потестю
|
|||
18
Stepa86
22.06.09
✎
12:44
|
*ушел рисовать звездочку на системник
|
|||
19
Широкий
22.06.09
✎
12:53
|
(18) Рисуй сразу большую.. алгоритм подходит.
Спасибо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |