I started using the c_object just recently and am finding more and more places 
to adapt it’s use. I thought my latest revelation was interesting, at least to 
me. I was creating a process that involves several levels of user interaction. 
In other words the user is presented with a list with options that create a 
different list with options that create a different list, etc. All when 
completed returning back to the previous list.

I like to use local variables as much as possible and I soon found myself 
creating too many local variables like $button, $button2, $button3, etc. I was 
also stepping on local variables  too often when I forgot to create a unique 
variable for the list being displayed. At first blush I was going to just push 
each list off to it’s own method. I hate doing this as too many methods in a 
unique process just gets too messy.

Then it dawned on me to use c_object for the parameters and keep all the lists 
in the same method. To me and my simple mind I thought this was pretty cool, 
perhaps someone else might find the thought process interesting or even useful 
so I have pasted a code snippet below….

John

--------------------------------------------
//Initial call from another method…
C_OBJECT($oParams)
$oParams:=New object("action";"DoProcedures";"date";$aDate{Size of 
array($aDate)}) //plus other paams...
AptLenghtMigrate_Procedures ($oParams)

------------------------------------------
// *** Method: AptLenghtMigrate_Procedures ***
C_OBJECT($oParams)
ARRAY LONGINT($aProcedureSeq;0)  //need this because the array will be put in a 
c_object later
ARRAY LONGINT($aProcedureMIgrationLength;0)  //need this because the array will 
be put in a c_object later

$oParams:=$1
$action:=$oParams.action
$startDate:=Date($oParams.date)

Case of 
   : ($action="DoProcedures")
        ALL RECORDS([Procedure])
        SELECTION TO 
ARRAY([Procedure]_Procedure_Sequence;$aProcedureSeq;[Procedure]Migration_Procedure_Length;$aProcedureMIgrationLength)
 //plus more arrays…

        Repeat 
            //Display the procedures to the user and provide options
           Case of 
                 : ($button=4) //user selected option 4 to list appointments 
scheduled after $startDate
                        OB SET 
ARRAY($oParams;"procedure_sequences";$aProcedureSeq)
                        OB SET 
ARRAY($oParams;"procedure_m_lengths";$aProcedureMIgrationLength)
                        $oParams.action:="ListAppointments"
                        AptLenghtMigrate_Procedures ($oParams)
              End case 
         Until ($Button=1)

  : ($action="ListAppointments")
        QUERY([Appointment];[Appointment]Appointment_Date>=$startDate)
        SELECTION TO 
ARRAY([Appointment]Appointment_Date;$aAppointmentDate;[Appointment]_Chair_Sequence;$aChairSequence)
  //plus more arrays...         

        Repeat 
             //Display the scheduled appointments to the user and provide 
options

             If ($Button=1) //user selected option 1 to list appointments 
scheduled on a selected date and chair with procedure lengths
                   $oParams.chair_date:=$aAppointmentDate{$line}
                   $oParams.chair_sequence:=$aChairSequence{$line}
                  $oParams.action:="ListChairAppointments"
                  AptLenghtMigrate_Procedures ($oParams)

             End if 

          Until ($done)

   : ($action="ListChairAppointments")
          OB GET ARRAY($oParams;"procedure_sequences";$aProcedureSeq)
          OB GET 
ARRAY($oParams;"procedure_m_lengths";$aProcedureMIgrationLength)
          //will use the 2 arrays created in the initial call to get migration 
lengths for each scheduled procedure

          
QUERY([Appointment];[Appointment]Appointment_Date=Date($oParams.chair_date);*)
          QUERY([Appointment]; & 
;[Appointment]_Chair_Sequence=$oParams.chair_sequence)
          SELECTION TO ARRAY(….

          Repeat 
               //Display the chair appointments to the user and provide options
               Case of 
                      : ($Button=3)  //etc...
               End case 
          Until ($Done)

    :($action=“etc….")
               //etc…

    :($action=“etc….")
               //etc…

End case 



John Baughman
Kailua, Hawaii
(808) 262-0328
john...@hawaii.rr.com





**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**********************************************************************

Reply via email to