PDA

Просмотр полной версии : Отображение имени объекта в окне



dzukp
07.12.2018, 10:43
Есть много однотипных объектов. Сделал объект-шаблон с окном "изображение объекта". Необходимо для каждого экземпляра объекта в окне показать его название (название совпадает с именем объекта). Единственное , что приходит в голову, что нужно добавить в шаблон переменную и привязать ее к внешней переменной (вне объекта) в которой храниться название объекта. Но объектов многовато, не хочется заводить столько переменных. Может можно как-то взять имя объекта (имя под которым объект подписан в дереве объектов) и показать его в окне?

SCADAMaster
07.12.2018, 12:06
Скриптом.
Пример в приложении. На вкладке Код нужно нажать DoAction. Значениям проставятся имена объектов

dzukp
07.12.2018, 13:46
Спасибо огромное.
Вдруг кому интересно ниже скрипт:




public partial class ФБ : ScriptBase
{ // version 2016_06_29

string NewName; // новое имя из имени объекта
//чтобы выполнить скрипт - нажмите кнопку DoAction
public override void DoAction()
{
//System.Diagnostics.Debug.Assert(false);

var elem = (ITreeItemHlp)HostFB.TreeItemHlp.Parent; // устанавливаем местоположение скрипта как в корневом объекте
elem.NavigateChilds(delegate(ITreeObjectHlp item)
{
if (item.ObjectType != EObjectType.otFolder) //проверка что переменная это объект
return true; //если не объект - переход к следующему объекту
//создание переменной команды "Имя_Объекта"
var name=(ITreePinHlp)HostFB.TreeItemHlp.Project.Item( item.FullName+".Подпись");
if (name==null) return true; //если такой команды нет - переход к следующему объекту
string StrName=name.ParentObject.Name; //определяем имя объекта
name.ConstValue=StrName; //записываем в константу
name.ApplyChange(""); //применяем

return true;
}, TreeItemMask.Object, (NavigateItemsFlags)0);
}
}