AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.11.2009, 18:16   #1  
Blog bot is offline
Blog bot
Участник
 
25,643 / 848 (80) +++++++
Регистрация: 28.10.2006
When coding for Forms it is a common pattern to enable (or disable) controls based on values elsewhere on the Form. For example, a design may require that the ‘SEND' button is disabled until all fields are filled in and contain valid data.

In this post, I examine a simple Form and the Page output as generated from the Form Transformation Tool. To illustrate, I create a simple Form based on the Languages Table (Table 8) with no tabs and two fields, Code and Name. I've added a command button and the form looks like this when the language name is not equal to English:



And like this when the language is English:



To achieve the behaviour, I add the following code to the form:

Form – OnAfterGetRecord() Trigger

IF (Rec.Name = 'English') THEN BEGIN

CurrForm.CommandBtn.ENABLED(TRUE)

END ELSE

CurrForm.CommandBtn.ENABLED(FALSE)

When I run this form, I can iterate through the records and when I hit English, the Command button becomes enabled.

After using the Form Transformation Tool generating a Page, I compile and run the page. The output looks like the Page below and the functionality works. Here is a screenshot where the CommandBtn control is not enabled.



Here is a screenshot where the CommandBtn control is enabled.



It’s a bit more subtle than the Form but you can see the button is greyed out when not enabled.

On the Page the C/AL code has changed to:

Page – OnInit() Trigger

CommandBtnEnable := TRUE;

Page – OnAfterGetRecord() Trigger

IF (Rec.Name = 'English') THEN BEGIN

CommandBtnEnable := FALSE ;

MESSAGE('English');

END ELSE

CommandBtnEnable := TRUE;

Under the covers, the CommandBtn.Editable has been mapped from a property that can be set in code to a global variable named CommandBtnEnable. This global variable is included in the data sent from the NAV Server to the RTC – this is visible from the property IncludeInDataset.



The Form transformation tool created the variable with IncludeInDataset, created the initializing code in the Page OnInit() trigger and assigned the global variable to the Enabled property in the CommandBtn action.

Rather than setting the property directly on the control, the RoleTailored Client exposes this functionality through a global variable and binds the property value to it. The advantage of this is that even simple properties needn’t be restricted to Yes/No values but can instead be evaluated in a more complex expression from C/AL. In the case above, we use TRUE and FALSE but it could also have been an expression with multiple components that evaluate to the TRUE or FALSE logic. This expression can be shared amongst controls so you need only set a single variable to control any number of controls on a page.

Note that this article describes the behavior of the enabled property and Command Buttons. Although in the C/SIDE Classic Client similar behaviour may be observed with Menu Buttons, during transformation Menu Buttons are transformed to the Action Menu which does not support the Enabled property.

- Stuart Glasson



Источник: http://feedproxy.google.com/~r/Micro...-controls.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:33.