Today i will discuss traversing controls created at run time to get/set their properties or use them in your code.
First, you have to get a reference to the formDesign of your form. This can be done by calling element.design() in your form. don't forget that you can pass this to as a paramter to a method, so you will be able to process the controls in a seperate class. You method has to accapet a formDesign variable as a parameter as shown in the following code:
public void controlsProcessor(FormDesign _formDesign)
{
  FormBuildControl formBuildControl;
  Counter counter;
  FormCheckboxControl formCheckboxControl
  ;
  for (counter = 1; counter <= formDesign.controlCount(); counter++)
  {
    // If current value of counter represent a valid control id in the form
    formBuildControl = formDesign.controlNum(counter);
    // If the current looped control is a textbox
    if (SysFormRun::controlType(classidget(formBuildControl)) == FormcontrolType::CheckBox)
    {
      // Assign it to a formCheckboxControl
      // to get access to properites and methods
      // usually found on checkboxes
      formCheckboxControl = formDesign.controlNum(counter);
      // If the checkbox is checked
      if (formCheckboxControl.value())
      {
      // Do your custom processing
      }
    }
  }
}
Obviously you can use any type of form controls not just checkboxes by using the corresponding control classes.
You could call the above method from a form by using the following line of code:
  myClassInstance.controlsProcessor(element.design);
If you any questions or comments e-mail me on: mirko@mirkobonello.com
No comments:
Post a Comment