AXForum  
Zurück   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen Alle Foren als gelesen markieren

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 02.02.2005, 11:26   #1  
Alexsky ist offline
Alexsky
Участник
 
13 / 10 (1) +
Registriert seit: 22.06.2004
Ort: Москва
? можно ли получить массив элементов управления на форме?
Собственно, subj. Т.е. возможно ли получить содержимое всех элементов управления, расположенных на форме (поля, кнопки и т.п.).
Alt 02.02.2005, 12:14   #2  
Yoil ist offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1.574 / 70 (6) ++++
Registriert seit: 20.11.2002
Ort: Msk
Если Вы хотите в коде динамически править свойства контролов, то контролам надо давать имена, после чего их видно в C/AL Symbol Menu.
Если откуда-то "слева" хотите получить список контролов произвольной формы - имхо нельзя.
Alt 02.02.2005, 12:30   #3  
Шрэк ist offline
Шрэк
Участник
Benutzerbild von Шрэк
 
645 / 24 (2) +++
Registriert seit: 09.02.2004
Ort: Москва
Zitat:
Изначально опубликовано Yoil
Если Вы хотите в коде динамически править свойства контролов, то контролам надо давать имена, после чего их видно в C/AL Symbol Menu.
Набор свойств, я так понимаю, которые можно править ограничен? Можно изменять только то, что есть в C/AL Symbol Menu? Или, теоретически, возможно править и другие свойства? К примеру, в Access можно динамически исправить любое свойство, указанное в конструкторе.
Alt 02.02.2005, 12:36   #4  
Yoil ist offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1.574 / 70 (6) ++++
Registriert seit: 20.11.2002
Ort: Msk
Ограничен.
Alt 02.02.2005, 12:40   #5  
Шрэк ist offline
Шрэк
Участник
Benutzerbild von Шрэк
 
645 / 24 (2) +++
Registriert seit: 09.02.2004
Ort: Москва
Обидно. Можно было бы добавить Caption к этому списку, иногда может понадобиться.
Alt 02.02.2005, 13:03   #6  
Yoil ist offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1.574 / 70 (6) ++++
Registriert seit: 20.11.2002
Ort: Msk
Если сильно-сильно понадобится, то Caption можно менять через CodeUnit1, функция DimCaptionClassTranslate.
Alt 02.02.2005, 14:38   #7  
Alexsky ist offline
Alexsky
Участник
 
13 / 10 (1) +
Registriert seit: 22.06.2004
Ort: Москва
Действительно, нужно получить список контролов в форме. Но не "слева", а из кода в самой форме. Просто хотелось бы, чтобы этот код был универсальным для всех форм, в которых используется. Надеялся на тип GUID...
Подозреваю, что эта задача сродни получению конролов "слева" и не может быть решена в Навижн. Жаль.
Alt 02.02.2005, 14:57   #8  
Yoil ist offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1.574 / 70 (6) ++++
Registriert seit: 20.11.2002
Ort: Msk
К сожалению, подобная задача решается только (хотя мб и есть способ, известный лишь Посвященным ) для таблиц (с помощью виртуальной таблицы Field можно получить список всех полей таблицы, их типы etc).
Alt 03.02.2005, 14:47   #9  
Шрэк ist offline
Шрэк
Участник
Benutzerbild von Шрэк
 
645 / 24 (2) +++
Registriert seit: 09.02.2004
Ort: Москва
Оказывается можно и получить список контролов, и менять любые свойства динамически не указанные в Symbol Menu.
http://forum.mazzy.ru/index.php?showtopic=2278
Alt 03.02.2005, 15:05   #10  
Yoil ist offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1.574 / 70 (6) ++++
Registriert seit: 20.11.2002
Ort: Msk
Теоретически, оказывается, действительно можно
Осталось сделать это практически.
Alt 04.02.2005, 13:11   #11  
Alexsky ist offline
Alexsky
Участник
 
13 / 10 (1) +
Registriert seit: 22.06.2004
Ort: Москва
Тема действительно получила неожиданное продолжение! Копаться в Blob, конечно, весьма занимательно - но очень медленно
Вопрос из той же серии: а нельзя ли обратиться к элементу управления по ссылке?
Alt 04.02.2005, 13:22   #12  
Шрэк ist offline
Шрэк
Участник
Benutzerbild von Шрэк
 
645 / 24 (2) +++
Registriert seit: 09.02.2004
Ort: Москва
Можно. Если вы читали форум Мазуркина Сергея, там написано - надо присвоить контролу имя и он будет доступен в списке контролов формы.
Alt 04.02.2005, 17:47   #13  
Alexsky ist offline
Alexsky
Участник
 
13 / 10 (1) +
Registriert seit: 22.06.2004
Ort: Москва
занятно. и как же? например, я хочу, чтобы ссылка на кнопку лежала в переменной. И менять, напрмер, свойство Enabled или Caption в этой кнопке посредством переменной... я почему-то считал, что это невозможно, но буду рад если ошибусь
Alt 07.02.2005, 10:03   #14  
Шрэк ist offline
Шрэк
Участник
Benutzerbild von Шрэк
 
645 / 24 (2) +++
Registriert seit: 09.02.2004
Ort: Москва
Для начала присвойте имя кнопке вместо <Control12345>. Из полезных доступных свойств только Visible и Enabled.
Alt 07.02.2005, 10:23   #15  
Yoil ist offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1.574 / 70 (6) ++++
Registriert seit: 20.11.2002
Ort: Msk
Zitat:
Изначально опубликовано Alexsky
занятно. и как же? например, я хочу, чтобы ссылка на кнопку лежала в переменной. И менять, напрмер, свойство Enabled или Caption в этой кнопке посредством переменной... я почему-то считал, что это невозможно, но буду рад если ошибусь
Зайдите в свойство кнопки, измените Name.
После этого в Symbol Menu ткнитесь в CurrForm -> Controls - [YourButtonName]
Увидите доступные свойства.
Alt 07.02.2005, 10:41   #16  
Alexsky ist offline
Alexsky
Участник
 
13 / 10 (1) +
Registriert seit: 22.06.2004
Ort: Москва
Возможно я не понятно объяснил... Мне нужно динамически, т.е. в runtime работать с элементами управления. Т.е. не хотелось бы писать в коде каждого элемента CurrForm.Name1.Caption := 'lala', в коде другого CurrForm.Name2.Caption := 'tutu' и т.п.
А что-то вроде CurrForm.(преремнная1).Caption := (имя переменной, содержащей значение). И задавать значение переменной1 где-то в коде.
Alt 07.02.2005, 10:57   #17  
Yoil ist offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1.574 / 70 (6) ++++
Registriert seit: 20.11.2002
Ort: Msk
Нельзя.
Alt 07.02.2005, 11:12   #18  
Шрэк ist offline
Шрэк
Участник
Benutzerbild von Шрэк
 
645 / 24 (2) +++
Registriert seit: 09.02.2004
Ort: Москва
Теоретически, можно. См. выше, объект 2000000001. Там и данные кодеюнитов содержатся.
Alt 07.02.2005, 13:17   #19  
Yoil ist offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1.574 / 70 (6) ++++
Registriert seit: 20.11.2002
Ort: Msk
Zitat:
Изначально опубликовано Шрэк
Теоретически, можно. См. выше, объект 2000000001. Там и данные кодеюнитов содержаться.
Сдается мне (если ошибаюсь - буду рад), что Вы немного переоцениваете COOF.
Да, покопавшись в бинарнике, можно изменить свойства контролов, недоступные из C/SIDE. Но изменения этих свойств будут заметны только после того, как Вы переоткроете объект. Т.е. если откроете, скажем, форму, на которой нарисована умная кнопка, которая выгрузит бинарник, изменить в нем Caption другой кнопки и загрузит бинарник обратно и нажмете эту самую кнопку, то, подозреваю, наблюдать изменение Caption Вы сможете только после того, как закроете форму и откроете еще раз.
Для примера воспользуемся уже готовым алгоритмом действий, который привел Сергей в своей работе. Объявим в форме текстовую переменную длиной 100, нарисуем на форме кнопку, которая выдает MESSAGE(FORMAT(MAXSTRLEN(str)));
Сейчас по нажатию будет выдаваться "100".
Оставляем форму открытой. Открываем Codeunit Workshop, экспортируем объект нашей формы, изменяем в нем длину переменной, импортируем объект обратно, снова нажимаем кнопку - длина переменной не изменилась. Закрываем форму, открываем еще раз - теперь изменилась.

Может, я чего-то не понимаю, но в данный момент не вижу решения проблемы с помощью COOF'а (проблема, поставленная на форуме Маззи, была такой: Можно ли написать что-то вроде
CurrForm.ctrlNames[23].VISIBLE:=TRUE
).
С другой стороны, с помощью COOF'а, наверное, можно решить проблему, которая была поставлена здесь - возможно ли получить содержимое всех элементов управления, расположенных на форме
Alt 07.02.2005, 17:33   #20  
Alexsky ist offline
Alexsky
Участник
 
13 / 10 (1) +
Registriert seit: 22.06.2004
Ort: Москва
Добавлю по COOF. Если бы таблица 2000000001 создавалась в памяти локальной машины, то с ней можны было бы поработать. А так MODIFY() изменит объект глобально, т.е., например, изменение visible для элемента формы отразиться на всех сессиях!
Согласен, получить простой список всех элементов формы возможно, хоть и довольно сложным образом, но этот список практически бесполезен, т.к. обратиться к элементу нельзя.
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Как на форме отобразить поле из другой таблицы Maxi NAV: Программирование 5 30.04.2004 12:32
Можно ли получить информацию в разрезе измерений. Maks NAV: Функционал 3 10.07.2003 17:54
Свойства группы элементов управления uk NAV: Программирование 3 06.05.2003 15:13
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 21:56 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.