Contents - Index - Top


PowerBuilder - Fill form example

 

This example shows how-to use the document interface with PowerBuilder.

As it is very difficult in PowerBuilder to use events for an automation interface, we have added synchronized wrapper methods to the asynchronous methods.

 

In event open we configure our web control (edgewebbrowser) and create the document object instance.

 

event open;

// Create the webview2 control

edgewebbrowser.object.CreateWebView()

 

int i

 

io_Document = CREATE OLEObject

i = io_Document.ConnectToNewObject("AntViewAx2.AntViewDocument") // i should be 0

// connect the document interface to the current browser object

io_Document.BrowserDispatch(edgewebbrowser.object.IDispatchPointer)

 

// example on how you can unlock the control once you acquired a license.

edgewebbrowser.Object.UnlockControl("ExampleCompany", "WI5PO2-2KSU3Q-HWFXFU-IUMU2V-QF8P2F")

end event

 

It is required to connect the document object with the browser object. This can be done with the BrowserDispatch method like above.

 

 

First press the "Go" button in the view to open the web page.

The relevant part in the html looks like this:

    <form id="login" class="login" action="thankYou.html">

        <div class="loginName">

            <label for="username">UserName</label>

            <input type="text" name="username" placeholder="User Name" required />

        </div>

 

        <div class="loginPassword">

            <label for="password">Password</label>

            <input type="password" name="password" placeholder="Password" required />

        </div>

 

        <div class="loginBtn">

            <button id="submit" type="submit" name="submit">Login</button>

        </div>

    </form>

 

Then via the "Fill Form" button you can add data to the html inputs in the screen.

 

The click event in the "Fill Form" button has this code:

string is_formValue

integer ii_error

 

is_formName = "username" 

is_formValue = "Mr.Smith"

ii_error = io_Document.SetElementValueByNameSync(is_formName,is_formValue)

if ii_error <> 0 then

  MessageBox("setting username", "The returned error =  " + string(ii_error))

end if 

 

is_formName = "password" 

is_formValue = "supersecret"

ii_error = io_Document.SetElementValueByNameSync(is_formName,is_formValue)

if ii_error <> 0 then

  MessageBox("setting password", "The returned error =  " + string(ii_error))

end if 

 

The function SetElementValueByNameSync takes both the form name as well as the value as parameters and will return 0 if it was able to execute that function.

 

You can also read the contents of any of the html inputs in a similar way.

 

See the click event of the "Read Form" button for this:

event clicked;string is_formName

string is_username

string is_password

integer ii_error

 

is_formName = "username" 

is_username = ""

ii_error = io_Document.requestelementvaluebynamesync(is_formName,REF is_username)

if ii_error <> 0 then

  MessageBox("username", "The returned error =  " + string(ii_error))

end if 

 

is_formName = "password" 

is_password = ""

ii_error = io_Document.requestelementvaluebynamesync(is_formName,REF is_password)

if ii_error <> 0 then

  MessageBox("password", "The returned error =  " + string(ii_error))

end if 

 

MessageBox("Result", "username =  " + is_username + "~r~npassword = " + is_password)

 

end event

 

Here we use the RequestElementValueByNameSync function and the result of that function is immediately passed back in the Value parameter. For example in "is_username". 

That parameter is passed by reference via the "REF" keyword.

 


AntView - The MS Edge WebView2 ActiveX control Date last changed: 09/30/2024