Показать сообщение отдельно
Старый 23.04.2020, 00:12   #1  
Blog bot is offline
Blog bot
Участник
 
25,475 / 846 (79) +++++++
Регистрация: 28.10.2006
New Image in FormGroupControl with BusinessCard Extended style
Источник: http://alexvoy.blogspot.com/2020/04/...trol-with.html
==============

Developing and customizing forms in D365 are limited by predefined patterns and styles.


We can however overcome these limitations to some extent by placing new form controls and changing properties of existing ones and, of course, a bit of coding.


As an example, let's add a new Workflow image similar to Expense category to be shown in BusinessCard form group control, once an expense is assigned to the current user.






There are multiple ways to achieve the required change. To mention a few, playing with Style and ExtendedStyle properies in design, changing form controls placement with Top, Bottom, Left, Right properties, playing with DisplayOptions at run time, combining both images into one, replacing the standard images to customized ones: one for Assigned-to-me Category and standard Category, and so one.






Here we consider adding a new image of Workflow icon next to the standard Category one.We have a display method returning the required image. The key point here is to set its ExtendedStyle property to card_imageSquare, so that it would be shown properly.






Now it looks almost perfect, but the new form control pushed a bit the currency amount out of the card frame.






Let's fix it by hiding the standard form control and placing its duplicate with ExtendedStyle = None.






The last thing is to make the text bold in order to emphasize it.



[ExtensionOf(tableStr(TrvExpTrans))]
final class TrvExpTrans_Extension
{
boolean isCurrentUserWorkflow()
{
...
}

display container currentUserWorkflowIndicator()
{
ImageReference imgRef;
if (this.ApprovalStatus == TrvAppStatus::Pending && this.isCurrentUserWorkflow())
{
imgRef = ImageReference::constructForSymbol(ImageReferenceSymbol::Workflow);
return imgRef.pack();
}

return conNull();
}

[FormDataSourceEventHandler(formDataSourceStr(TrvExpenses, TrvExpTrans), FormDataSourceEventType::DisplayOptionInitialize)]
public static void ds_OnDisplayOptionInitialize(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSourceDisplayOptionInitializeEventArgs eventArgs = e as FormDataSourceDisplayOptionInitializeEventArgs;

FormDesign fd = sender.formRun().design(0);
FormRowDisplayOption fo = eventArgs.displayOption();
FormControl fc = fd.controlName("newAmountCurrWithCurrencyCode");
// if we can find our new form control for the expense amount
if(fo && fc)
{
// let's make it bold to emphasize
fo.affectedElementsByControl(fc.id());
fo.fontBold(true);
}
}

}


The final view.




Источник: http://alexvoy.blogspot.com/2020/04/...trol-with.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.