Dynamics Ax – X++ Class ile dialog çağırmak-yapmak (Runbase)

12 Haz

Merhabalar, bugün classımızı Runbaseden extenden edip, dialog işlemlerini nasıl yapacağımızı sizlere anlatmaya çalışacağım.

* Öncelikle yeni bir class oluşturalım > clasa sağ tıklayıp override tıklayalım > karşımıza sadece ‘new ve finalize‘ methodları geldiğini göreceğiz.

OverrideMethod1

* Şimdi classı açın ve aşağıda ki kodu yazıp clasımızı RunBase’den extend edelim.

class Test extends RunBase

* RunBaseden extend ettikten sonra bir çok methodu override edebileceğimizi görüyoruz. Bizi ilgilendiren şuan sadece dialog methodları olacak.

OverrideMethod2

Artık dialoğumuzu oluşturmaya başlayabiliriz.

1- Kullanacağımız global değişkenleri ‘ class Test extends RunBase ‘ clasında tanımılıyoruz yani burası bizim class declarationumuz.

class Test extends RunBase
{
    DialogField         dlgTransDate;

    TransDate           transDate;
}

2- Dialog methodumuz ile dialoğumuzu oluşturuyoruz. Clasımızın üzerine sağ tıklayın > Dialog methodunu override edin ya da direkt aşağıda ki kodu alın.
Burada dialogta göstereceğimiz alanları vs ayarlıyoruz. Ben başlık verdim ve bir tarih alanı ekledim o kadar.

protected Object dialog()
{
    Dialog          dialog;

    dialog = super();

    dialog.caption("Günlük stok,satış raporu");

    dlgTransDate   = dialog.addField(extendedTypeStr(TransDate), "Başlangıç Tarihi");

    return dialog;

}

3- Main methodunu aşağıda ki gibi ayarlıyoruz. Classı yeniden üretip prompt ile ekrana çıkartıyoruz > ve run methoduna yolluyoruz. 4.Adımda Run methodunu override edeceğiz.

public static void main(Args _args)
{
    Test test = new Test();

    if (test.prompt())
    {
        test.run();
    }
}

Şuanda clası çalıştırdığımızda ekrana aşağıda ki gibi dialoğumuzun gelmiş olması gerekiyor.
Dialoğunuz ekrana geldiyse artık Run methoduna geçebiliriz.

Dialog

4- Run methodunu override ediyoruz. İşlemlerimizi bu method altında yapıyoruz. Ben dialogtan aldığımız değeri info ile ekrana bastım.

public void run()
{
    super();
    info(strFmt('%1', dlgTransDate.value()));
}

DialogInfo

Evet arkadaşlar olay budur. Gördüğümüz gibi Temelde 4 methodtan oluşuyor.

1- class Test extends RunBase
2- protected Object dialog()
3- public static void main(Args _args)
4- public void run()

Eğer böyle 1-2 alandan oluşan dialoglar yaptığımız zaman bu methodlar yeterlidir. Ancak daha karmaşık yapılarda dialogtaki verileri çekmek için getFromDialog() methodunu kullanmanızı tavsiye ederimi, bu sayede daha kontrollü bir yapı kurmuş olursunuz.

public boolean getFromDialog()
{
    transDate           = dlgTransDate.value();

    return true;

}

Runbase

Bununla ilgili olarak Pack-Unpack methodlarınıda incelemekte fayda vardır.

Bir Cevap Yazın