X++ :26- Extension ile Standart Bir Formun Event Metotlarına kod eklemek.
Bu yazıda Visual Studio üzerinden Extension mantığıyla standart bir formun DataSource eventlerine kod nasıl eklenir anlatmaya çalışacağım.
Önceki yazımda smmActivities’e bir alan eklemiştik. Şimdi yine smmActivities dataSource’nun bazı olaylarına kod ekleyelim. Öncelikle validateDelete koduna eklem yapmak istiyorum. Standart kod böyleymiş.
Resim-1
Öncelikle yeni bir sınıf oluşturuyorum daha önce oluşturduğum Extension formunu açıyorum. DataSource’a gelip eventlerden ilgili eventi bulup Copy event handler method diyorum.
Resim-2
Sonra bunları oluşturduğum sınıfa yapıştırıyorum ve aşağıdaki gibi içlerini dolduruyorum.
class FDSmmActivitiesFormEventHandler
{
/// <summary>
///
/// </summary>
/// <param name=”sender”></param>
/// <param name=”e”></param>
[FormDataSourceEventHandler(formDataSourceStr(smmActivities, smmActivities), FormDataSourceEventType::ValidatingDelete)]
public static void smmActivities_OnValidatingDelete(FormDataSource sender, FormDataSourceEventArgs e)
{
smmActivities smmActivities = sender.cursor(); // Bu sayede aktif kaydı aldım.
if(smmActivities.FDActivityId !=”")
{
checkFailed(“FDActivityTable Record Exist.”);
}
}
/// <summary>
///
/// </summary>
/// <param name=”sender”></param>
/// <param name=”e”></param>
[FormDataSourceEventHandler(formDataSourceStr(smmActivities, smmActivities), FormDataSourceEventType::Activated)]
public static void smmActivities_OnActivated(FormDataSource sender, FormDataSourceEventArgs e)
{
smmActivities smmActivities = sender.cursor(); // Bu sayede aktif kaydı aldım
FormRun formRun = sender.formRun(); // Form run a ulaştım
FormControl formControl = formRun.design(0).controlName(“smmActivities_FDActivityId”); // Herhangi bir form nesnesine bu şekilde ulaşabilirim.
if(smmActivities.Status == smmActivityStatus::Read) // Örnek olsun diye yaptım çok mantıklı bir kontrol değil.
{
formControl.enabled(false);
}
else
{
formControl.enabled(true);
}
}
}
Bu yazıda Extension mantığıyla standart bir formun eventlerine nasıl kod eklenir anlatmaya çalıştım. Eski mantığa göre biraz daha zor ve uzun süren bir iş ama getirileri çok büyük. Extension bundan sonra uzun bir süre hayatımızda olacak mantığını kavrayıp bütün işleri bu mantıkla çözmeye çalışmak gerekiyor.
Selamlar.
www.fatihdemirci.net
TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Extension, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365