0

In my first event handler, I will collect all the fields I need from the SalesTable form. In this form, I need to get these fields from the SalesLine. Below is my code:

[FormEventHandler(formStr(SalesTable), FormEventType::PostRun)]
public static void SalesTable_OnPostRun(xFormRun sender, FormEventArgs e)
{
      SalesLine   salesLine;
      SalesTable  salesTable = sender.dataSource(formDataSourceStr(SalesTable,salesTable)).cursor();

      select ItemId, SalesId, ShippingDateConfirmed from salesLine
         where salesLine.SalesId == SalesTable.SalesId;
}

After that, this next event handler is the OnClick event of a button found in another form..

[FormControlEventHandler(formControlStr(SalesAvailableDlvDates, TransferToConfirmedButton), FormControlEventType::Clicked)]
public static void TransferToConfirmedButton_OnClicked(FormControl sender, FormControlEventArgs e)
{
    //some code here
}

In this event handler of a different form which is SalesAvailableDlvDates, here I need the fields from my SalesLine table which I obtained from the SalesTable form. Because in here, this is the button needed to be triggered where this will place values into a newly created table.

Is there anyway I can pass the values from the SalesTable event handler to the SalesAvailableDlvDates event handler?

Because in SalesAvailableDlvDates, I COULD NOT obtain the SalesLine data. Is it possible to pass values from one event handler to another?

Il Vic
  • 5,576
  • 4
  • 26
  • 37
m1gs
  • 197
  • 2
  • 17

1 Answers1

1

In SalesAvailableDlvDates form event handler you can obtain the form caller. Then if salesCalcAvailableDlvDates is a SalesCalcAvailableDlvDates_SalesTable or SalesCalcAvailableDlvDates_SalesLine you can get data you needed from the corresponding parm method.

[FormControlEventHandler(formControlStr(SalesAvailableDlvDates, TransferToConfirmedButton), FormControlEventType::Clicked)]
public static void TransferToConfirmedButton_OnClicked(FormControl sender, FormControlEventArgs e)
{
    SalesTable                              salesTable;
    SalesLine                               salesLine;
    SalesCalcAvailableDlvDates              salesCalcAvailableDlvDates;
    SalesCalcAvailableDlvDates_SalesLine    salesCalcAvailableDlvDates_SalesLine;
    SalesCalcAvailableDlvDates_SalesTable   salesCalcAvailableDlvDates_SalesTable;
    FormRun                                 formRun;
    ;

    formRun = sender.formRun() as FormRun;
    salesCalcAvailableDlvDates = formRun.args().caller();

    switch (classIdGet(salesCalcAvailableDlvDates))
    {
        case classNum(SalesCalcAvailableDlvDates_SalesLine):
            salesCalcAvailableDlvDates_SalesLine = salesCalcAvailableDlvDates as SalesCalcAvailableDlvDates_SalesLine;
            salesLine = salesCalcAvailableDlvDates_SalesLine.parmSalesLine();
            salesTable = salesLine.salesTable();
            break;

        case classNum(SalesCalcAvailableDlvDates_SalesTable):
            salesCalcAvailableDlvDates_SalesTable = salesCalcAvailableDlvDates as salesCalcAvailableDlvDates_SalesTable;
            salesTable = salesCalcAvailableDlvDates_SalesTable.parmSalesTable();
            break;

        default:
            break;
    }
} 
Aliaksandr Maksimau
  • 2,251
  • 12
  • 21
  • Hi Sir Aliaksandr! Really appreciate everytime you reply! :) regarding your reply sir, why is salesCalcAvailableDlvDates used? and how can I use the SalesCalcAvailableDlvDates_SalesLine syntax? – m1gs Jun 02 '17 at 13:54
  • Hi sir, SalesCalcAvailableDlvDates is a class, did the salesCalcAvailableDlvDates = sender.args().caller(); but it has an error, it is not valid in this context. – m1gs Jun 02 '17 at 14:08
  • Sorry if i was not clear enough, please check the updated answer. – Aliaksandr Maksimau Jun 02 '17 at 19:04
  • Hi Sir Aliaksandr thank you for this! It worked for my problem. However, is it okay if you could include an explanation? I didn't quite get how it worked and why SalesCalcAvailableDlvDates was used. – m1gs Jun 05 '17 at 10:21
  • Just look into `init` method of `SalesAvailableDlvDates`form. – Aliaksandr Maksimau Jun 05 '17 at 20:41