Using Xbasic to Control Access to a Form
Description
The Invoice form contains the btnEditItems0 ( Zoom ... ) button. The Xbasic code run by the button's OnPush event creates and sets the value of the global variable varInvoice_Number, then displays the Items form (from the AlphaSports sample database). The result is that the global variable varInvoice_Number only exists when the Items form is called by the Invoice form.
Xbasic Code Run by the btnEnter OnPush Event
if (eval_valid("varInvoice_Number") = .t.) then topparent:invoice_number.enable() topparent.New_Record() topparent:Invoice_Number.text = varInvoice_Number topparent:Invoice_Number.disable() topparent:Product_Id.activate() btnEnter.hide() btnSave.show() else msg = "You can only use this form to enter a new line item if you open it from a button on the Invoice form." ui_msg_box("Error",msg,UI_STOP_SYMBOL) end if
Xbasic Code Run by the btnEnter OnPush Event
The first line of code uses the eval_valid() function to see if the varInvoice_Number variable can be evaluated, which is the same as saying that the variable exists. The variable only exists if the Invoice form created it before opening the Items form.
if (eval_valid("varInvoice_Number") = .t.) then
If the above expression evaluates to true, enable the invoice_number field so it can receive focus and be edited.
topparent:invoice_number.enable()
Create a new record.
topparent.New_Record()
Set the value of the invoice_number field to varInvoice_Number.
topparent:Invoice_Number.text = varInvoice_Number
Disable the invoice_number field so it cannot be edited.
topparent:Invoice_Number.disable()
Set focus to the product_id field so it can accept data.
topparent:Product_Id.activate()
Hide this button, which is named btnEnter (Enter New Item).
btnEnter.hide()
Show the other button in the stack.
btnSave.show()
If we couldn't evaluate the varInvoice_Number variable, display an error message.
else msg = "You can only use this form to enter a new line item if you open it from a button on the Invoice form." ui_msg_box("Error",msg,UI_STOP_SYMBOL) end if
Xbasic Code Run by the btnSave OnPush Event
The btnSave OnPush event is the same as the btnEnter OnPush event, except the it hides btnSave and shows bntEnter.
. ' Show btnEnter (Enter New Item) btnEnter.show() ' Hide btnSave (Save Record) btnSave.hide() . .
See Also