[РЕШЕНО] Как в коде изменять properties?

Начинаете изучать Ананас? Задавайте вопросы здесь. С чего начать? Где найти? Как сделать? А можно...?

[РЕШЕНО] Как в коде изменять properties?

Сообщение Yvgen » Пн ноя 02, 2009 2:37 pm

Как в ананас скрипте, изменить в коде главного модуля например:
задать для Button_edit на форме Элемента Справочника "Товары" свойство enabled=False
Последний раз редактировалось Yvgen Пн фев 08, 2010 2:16 pm, всего редактировалось 1 раз.
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

Re: Как в коде изменять properties?

Сообщение Yvgen » Пн ноя 02, 2009 3:38 pm

Код: Выделить всё
    var bOk = Widget("ok");
    bOk.enabled ="false";

Но это в модуле формы.
А как изменять из глобального модуля?
Хотим сделать разграничение интерфейса.
Типа при включении часть кнопок не доступна, потом после определенного действия пользователя кнопки становятся доступны.
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

Re: Как в коде изменять properties?

Сообщение antares0 » Ср ноя 04, 2009 11:38 am

Yvgen писал(а):
Код: Выделить всё
    var bOk = Widget("ok");
    bOk.enabled ="false";

Но это в модуле формы.
А как изменять из глобального модуля?
Хотим сделать разграничение интерфейса.
Типа при включении часть кнопок не доступна, потом после определенного действия пользователя кнопки становятся доступны.

Сама форма и ее элементы появляются в реальном мире только в момент открытия этой самой формы. Поэтому глобальный модуль сам по себе о них ничего знать не может. Но вы можете передать ссылку на кнопку (bOk в вашем примере) или на объект формы (this в моделе формы, далее this_this.Widget("ok") ) вызывая из формы функцию или метод глобального модуля.
Может лучше будет заранее выключать кнопки в дизайнере, а програмно их именно включать?
P.S. properties по русски - свойства
antares0
 
Сообщения: 42
Зарегистрирован: Пн мар 16, 2009 6:23 pm

Re: Как в коде изменять properties?

Сообщение Yvgen » Ср ноя 04, 2009 1:50 pm

antares0 писал(а):
Yvgen писал(а):
Код: Выделить всё
    var bOk = Widget("ok");
    bOk.enabled ="false";

Но это в модуле формы.
А как изменять из глобального модуля?
Хотим сделать разграничение интерфейса.
Типа при включении часть кнопок не доступна, потом после определенного действия пользователя кнопки становятся доступны.

Сама форма и ее элементы появляются в реальном мире только в момент открытия этой самой формы. Поэтому глобальный модуль сам по себе о них ничего знать не может. Но вы можете передать ссылку на кнопку (bOk в вашем примере) или на объект формы (this в моделе формы, далее this_this.Widget("ok") ) вызывая из формы функцию или метод глобального модуля.
Может лучше будет заранее выключать кнопки в дизайнере, а програмно их именно включать?
P.S. properties по русски - свойства

Понятно, что форма и ее элементы появляются в момент открытия!
Но свойства (те которые заданы в дизайнере) ведь есть.
По идее, их можно переопределять как то.
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

Re: Как в коде изменять properties?

Сообщение antares0 » Ср ноя 04, 2009 6:02 pm

Yvgen писал(а):Понятно, что форма и ее элементы появляются в момент открытия!
Но свойства (те которые заданы в дизайнере) ведь есть.
По идее, их можно переопределять как то.

А может стоить рассказать о задаче поподробнее? Если это не военно-комерческая тайна конечно, а то у вопроса вылазят странные подробности и непонятные дебри.
Теперь о дебрях.
Свойства есть ведь не просто сами по себе. Они описываются классом, но конкретных свойств кокретного объекта которые можно поменять еще нет.
Когда на форму добавляют элемент, дизайнер читает из метаданных класса (на самом деле компоненты, но это не принципиально) список свойств и их умолчальные значения. И записывает все это плюс ваши правки в метаданные бизнес-схемы. Но самих объектов то еще нет. А они будут созданы вместе с всеми своими свойствами на основе метаданых при открытии формы. В дизайнере показывается не сам виджит, а объект метаданых описывающий его.
У формы есть метод on_formstart, который вызывается до показа формы. Из него можно вызвать функции глобального модуля необходимые для аутенфикаии и авторизации пользователя и при успешнои их прохождении вызвать функцию разблокировки необходимых элементов. Если же нужно разблокировать интерфейс по событию вне этой формы (прямому разрешеню другого оператора напрмер), то в on_formstart добавляется регистрация этой формы как я показывал в предыдущем сообщении.
antares0
 
Сообщения: 42
Зарегистрирован: Пн мар 16, 2009 6:23 pm

Re: Как в коде изменять properties?

Сообщение Yvgen » Чт ноя 05, 2009 3:53 pm

И так, у меня есть:
Форма 1, на этой форме Кнопка.
Я дизайнере я задал ей свойство Enabled = true.
При появление каждый раз формы, кнопка всегда доступна.
Далее есть еще одна форма 2 и модуль.
Так вот, я хочу, что бы при выполнении определенного действия на этой форме 2,
свойство Формы 1 Enabled = true менялось на False.
Т.е. то, что я определелил в дизайнере, я хочу переопределить. Вот и все.
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

Re: Как в коде изменять properties?

Сообщение antares0 » Чт ноя 05, 2009 8:28 pm

Код: Выделить всё
//Глобальный модуль
var slave_form="";
function registration (form) {
   slave_form = form;
}
function unregistration () {
   slave_form =  "";
}
functon block_on_slave_form () {
   if slave_form
      then {slave_form.block()};
}

Код: Выделить всё
//Модуль Форма 1
var but = "";
function on_formstart () {
   but = Widget("ok");
   registration(this);
}
function block () {
   but.enabled = false;
}
function on_formstop () {
   unregistration();
}

Код: Выделить всё
//Модуль форм 2
function do_block () {
   //вызывается при выполнении определенного действия
   block_on_slave_form();
}

Здесь я не учитываю возможность того, что "Форма 1" может быть не в единственном экземпляре.
antares0
 
Сообщения: 42
Зарегистрирован: Пн мар 16, 2009 6:23 pm


Вернуться в Вопросы новичков

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron