~~Title: Script Dialog Example ~~
This is an example of a [[..:script_dialogs|script dialog]]; it implements the dialog shown at the start of the [[..:script_dialogs|Script Dialogs]] section. It makes use of a //Tab control// to host two child dialogs, and also demonstrates how to add and remove strings from a //List Box// control.
{{:media:image057.png?nolink|}}
The //Tab control// has been configured to host two child dialogs; //Interests// and //Favorite Books//. Clicking the tabs lets you switch back and forth between the two pages.
Most of the dialog’s controls don’t actually do anything – only the //Favorite Books// tab has been implemented. If you switch to that tab you can enter a string in the //Enter title// field and click the **Add** button to add it to the list. Click an item in the list and click the **Delete** button to remove it.
This dialog also provides an example of a resizable dialog. You can make any dialog resizable, but it’s particularly useful when working with tabs, as it means the //Tab control// and the parent dialog can automatically size to fit the content displayed inside the tabs.
If you want to experiment with this example, create a new toolbar button (with the type to //Script Function//) and paste the script code into the **Script Code** tab of the command editor, and the resources XML into the **Resources** tab.
The following example is provided in both VBScript and JScript. Use whichever you prefer.
==Code - VBScript==
Function OnClick(ByRef clickData)
Set dlg = DOpus.Dlg
dlg.window = clickData.func.sourcetab
dlg.template = "person"
dlg.detach = true
dlg.Show
Do While True
Set msg = dlg.GetMsg()
If Not msg.Result Then Exit Do
Select Case msg.control
Case "add"
' get the string the user has entered
str = dlg.Control("title", "books").value
If Len(str) > 0 Then
' add to the list box and clear the edit field
dlg.Control("books", "books").AddItem(str)
dlg.Control("title", "books").value = ""
End If
Case "del"
' get the selection from the list box
sel = dlg.Control("books", "books").value
If sel > -1 Then
' remove it from the list
dlg.Control("books", "books").RemoveItem(sel)
End If
End Select
Loop
End Function
==Code - JScript==
function OnClick(clickData)
{
var dlg = DOpus.Dlg();
dlg.window = clickData.func.sourcetab;
dlg.template = "person";
dlg.detach = true;
dlg.Show();
while (true)
{
var msg = dlg.GetMsg();
if (!msg.Result) break;
switch(msg.control)
{
case "add":
// get the string the user has entered
var str = dlg.Control("title", "books").value;
if (str.length > 0)
{
// add to the list box and clear the edit field
dlg.Control("books", "books").AddItem(str);
dlg.Control("title", "books").value = "";
}
case "del":
// get the selection from the list box
var sel = dlg.Control("books", "books").value;
if (sel > -1)
{
// remove it from the list
dlg.Control("books", "books").RemoveItem(sel);
}
}
}
}
==Resources==