Forums
Lawson Smart Office
Script: element.IsReadOnly applies to field on the wrong panel
Author
Messages
Kent Klein
New Member
Posts: 2
3/20/2013 3:23 PM
Hi.
I have a problem with some of my scripts i hope someone could help me with.
In order to get rid of a modification I have made a script i Smart Office (Version 10.05038) that saves the users department (WWDEPT from MNS150) i the field OAFRE1 on my orders i OIS100/G.
We use this information for statistic purposes.
My script does the following:
Write DEPT to field FRE1 if the field is empty
Make the field Readonly
Problem
When I move to the next panel it seems that "Readonly" applies to a field on that panel to. For instance OAORNO on OIS100/A or OBPONR on OIS101/B. It does not seem occour every time I run the script, but i'm not sure.
What do I do wrong? Do I have to remove the rule before i exit the script the same way i do when i have an eventhandlet. Like: controller.remove_Requested(OnRequested). If so. How do I do that?
Script:
import System;
import System.Windows;
import System.Windows.Controls;
import MForms;
import Mango.Services;
import Mango.UI.Services;
package MForms.JScript {
class AO_OIS100V_FRE1 {
public function Init(element: Object, args: Object, controller : Object, debug : Object) {
debug.WriteLine("Script Initializing.");
if(element != null) {
debug.WriteLine("Connected element: " + element.Name);
}
var content : Object = controller.RenderEngine.Content;
var user = ApplicationServices.UserContext;
var profile = ApplicationServices.SystemProfile;
if(element.Text == ""){
element.Text = UserContext.Department;
}
element.IsReadOnly = true;
element.Background = ScriptUtil.FindChild(content, 'OACUNO').Background;
element.Foreground = ScriptUtil.FindChild(content, 'OACUNO').Foreground;
}
}
}
I hope someone outthere can hel
p me with my problem.
Kind regards
-
K
ent Klein
Jean-Robert
New Member
Posts: 1
4/19/2013 11:17 AM
Hi Kent,
One suggestion I have for you is to try checking for the program name first and only have it execute when your in the right program.
program = controller.RenderEngine.PanelHeader;
I hope that helps.