/ Forums / Advansys Formativ / Creating Solutions with Formativ / Dynamic Form Component Events

  • Creator
    Topic
  • #4464
    jasonchild
    Participant

    Hi,

    I was wondering how to call an event for a dynamically created component. I have created a new form called “MyTestForm” using the forms designer. This form contains a single panel called “pnlTest”.

    Then inside my solution code I have:


    Dim gTestDlg

    Sub Main(Client, GWEvent)

    ' Initialize a new dialog from my test form
    gTestDlg = MyTestForm

    ' Create a dynamic component at run time
    Set testEdit = TEdit.Create(gTestDlg.pnlTest)
    with testEdit
    .Parent = gTestDlg.pnlTest
    .left = 50
    .top = 10
    .height = 21
    .width = 160
    .name = "edtTest"
    .text = ""
    .visible = true
    .onClick = "testSub"
    end with

    ' Show the form
    gTestDlg.ShowModal

    End Sub

    Sub testSub(Sender)
    MsgBox("Called testSub")
    End Sub

    The edit box is created successfully, however the on click event does not get called. I have also tried a number of variations to the .onClick value attempting to pass in the sender variable, but I have not be able to get this event to be called.

    Any thoughts on what I am doing wrong would be greatly appreciated.

    Kind Regards,

    Jason Child

    [This message was edited by jasonchild on January 29, 2012 at 07:52 PM.]

  • Author
    Replies
  • #8240
    jasonchild
    Participant

    Has anyone else needed to do this? I can’t be the only one heh. I’m not sure if my post above was clear.

    Basically I need to create a new component at run time on a pre-existing formativ form, and then assign an event handler to it.

    Any thoughts / feedback would be greatly appreciated.

    Regards,

    Jason

    #8241
    Support 1
    Participant

    Unfortunately this does not seem to be possible. We have not found a way to get VBScript to assign an event handler dynamically.

    A couple of suggestions:

    • Try experimenting with the VBScript function GetRef (designed to support DHTML events), like this:
        .onClick = GetRef("testSub")

    • Develop a COM-enabled component to replace the Form, using a language that supports dynamically assigned event handlers (eg. Delphi, C#, VB.NET). You can create an instance of such a component from a Formativ applet, and pass data between the applet and component. You may find the featured topic .net modules useful.

    I hope this helps.

    Kind regards,
    Advansys Support

    #8238
    jasonchild
    Participant

    Ok, thanks for your feedback. I tried using the GetRef function as suggested, but was unable to get this to call my event sub and I’m not sure I have the time in my project plan required to delvelop a com enabled solution to accomodate this need.

    This is unfortunate, but I guess I can achieve the same functionality using the limited Utilities.NewControlBoxDialog and either use a button to force an event or use chained dialogs for presenting required fields dependant on dynamic field values. A very outdated UI methodology but functional none the less.

    Thank you for your time looking into this, much appreciated.

    Regards,

    Jason

    #8239
    Support 1
    Participant

    OK, thanks for the confirmation about GetRef.

    I suggest you seriously consider the option of a COM component, partly because of the obstacle you mention with NewControlBoxDialog in another thread. Also because it’s relatively easy to COM-enable such a component. The featured topic mentioned above includes a link to a working example.

    Good luck with the project.

    Kind regards,
    Advansys Support

    [This message was edited by Support 1 on February 01, 2012 at 03:33 PM.]

Viewing 4 replies - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.