Character Mode Cookbook

From DataFlex Wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Keys and commands

 on_key KCLEAR                      : F5
 on_key KCANCEL      Send Cancel    : Esc
 on_key KENTER                      : Enter
 on_key KSAVE_RECORD Send Do_Report : F2
Promt commands
df32
dfcomp ex.src -pfv1    p=precompile
dfcomp ex.src -fv1     fv1 creates prn-file (check errors)
dfrun ex
dfruncon ex            with mouse support

Declaration

Properties and variables

 property integer piCount public 0
 set piCount To (piCount(current_object)+1)

Move

local integer liNumber
 move 0 To liNumber

 Move (key+1) to key    key = key++ //Dont forget to use paratheses (a+(b*c))<>a+b*c

Set/Get

 Set value of (oPop(current_object)) item 0 to sVar      // item[0] = sVar
 Get Value item 0 to sVar                                // sVar    = item[0]

Be aware of the difference

 Set A of object to B  A=B
 Get A of object to B  B=A
 Move A to B
You can only use Get and Set on properties

Functions and Procedures

 get myFunc of (oObj(current_object)) "tmp" to sAnswer // sAnswer = oObj->myFunc("tmp")
--------------
SET
   value of OBJ ITEM to VAL
   location X Y [ABSOLUTE/RELATIVE]
   focus_mode to POINTER_ONLY
--------------
Procedure MyProcedure
End_Procedure
Send MyProcedure
------------------
Procedure DisplayResult String lsValue1 String lsValue2 String lsValue3
   set value of (oOutput(self)) item 0 to lsValue1
   set value of (oOutput(self)) item 1 to lsValue2
   set value of (oOutput(self)) item 2 to lsValue3
end_procedure
send DisplayResult lsValue1 "" ""
--------------
Procedure_Section // used in reports to handle paging in a smarter way
--------------
Function MyFunction integer i returns Integer

End_Function

get MyFunction(self) as iRet
--------------
function myFunc string test returns string
 local string lsRval
 move test to lsRval
 function_return lsRval
end_function
get myFunc of (oObj(current_object)) "tmp string" to sAnswer

Start "windows/console"

 start_ui       // starts a new console
 ui_accept      // has a return value
 activate_scope // opens a new "window"

Content layout

 --------------
 /Answer.hdr
 +--------------------+
 /Answer.dat
 ¦ Answer:_________   ¦
 +--------------------+
 /*
 register_object oAnswer
 Object oAnswer is a Client Answer.hdr
   Set location 7 30 ABSOLUTE
   On_Key kcancel Send cancel 

  Object oAnswData is a Form Answer.dat
    Set location 1 0 RELATIVE
    Set focus_mode to POINTER_ONLY
    item_list
      On_Item "" Send none
    end_item_list
  End_Object

  Procedure OpenAnswerForm string sValue
    local Integer iRval
    Set value of (oAnswData(current_object)) item 0 to sValue
    ui_accept current_object to iRval
  End_Procedure

 End_Object

 Send OpenAnswerForm to (oAnswer(current_object)) "test string"
 --------------

Reports

 /oReportView1.SectionName
    __________________________________________________________________________
 /oReportView1.body
   ____________________  ______________________
 /*


 //Activate_View Activate_Report1 for oReportView
 Object oReportView1 is a Report_View NO_IMAGE

    Object oMainReport is a seq.Report NO_IMAGE

        Set Main_File to customer.file_number
        //set Ordering to 2 // Order by name
        Set Report_Title to "Report 1 - Show position of sections"

        set Page_End to 18 // Page length set to screen length

        Procedure _PrintSectionName String lsValue
            Print lsValue to oReportView1.SectionName.1
            Output_Pagecheck oReportView1.SectionName
        End_Procedure

        // Procedures Page_Top thru Page_Bottom ONLY get used by the outermost report
        // object... All other objects delegate messages to this ultimate parent.
        // creating these procedures in child reports will have NO effect.

        // Procedure_Section Page_Top as oReportView1.SectionName
        // Procedure_Section Report_Header as oReportView1.SectionName
        // Procedure_Section Page_Header as oReportView1.SectionName
        // Procedure_Section Page_Title as oReportView1.SectionName
        // Procedure_Section Page_Total as oReportView1.SectionName
        // Procedure_Section Page_Footer as oReportView1.SectionName
        // Procedure_Section Report_Footer as oReportView1.SectionName
        Procedure_Section Page_Bottom as oReportView1.SectionName
            Send _PrintSectionName "Page_Bottom             (last thing printed on every page)"
        End_Procedure

        Procedure_Section Body as oReportView1.body      // or Procedure_Section Body
            Print customer.name to oReportView1.body.1   // Sets the data fields
            Print customer.city to oReportView1.body.2
            Output_Pagecheck oReportView1.body           // Prints the data to screen
        End_Procedure

        //Procedure_Section Total as oReportView1.SectionName

    End_Object

    Procedure run_report
        send run_report to (oMainReport(self))
    End_Procedure
 End_Object

 procedure Activate_Report_View_1
  send run_report to (oReportView1(self))
 end_procedure

---------------------------------------------------------------

Objects

 Object oOrder is a Entry_View_Client oOrder.hdr
    Set location 5 8 ABSOLUTE 

    Object Orderhea_DD is a Data_Set NO_IMAGE
        Set main_file to Orderhea.file_number
    End_Object       

    Object Orderdtl_DD is a Data_Set NO_IMAGE
        Set main_file to Orderdtl.file_number     
        Send attach_server (Orderhea_DD(current_object))
        //Set constrain_file to orderhea.file_number
        begin_constraints                    
             Constrain orderdtl relates to orderhea
        end_constraints
    End_Object   
    
    Object oForm is a Entry_Form oOrder.frm
        Set location 1 0 RELATIVE
        Set Server to (Orderhea_DD(current_object)) 

        item_list
          Entry_Item ORDERHEA.ORDER_NUMBER         { AutoClear AutoFind }
          Entry_Item ORDERHEA.ORDER_DATE           { AutoClear NoEnter }
          Entry_Item ORDERHEA.SHIP_VIA             { AutoClear NoEnter }
          Entry_Item ORDERHEA.ORDERED_BY           { AutoClear NoEnter }
          Entry_Item ORDERHEA.ORDER_TOTAL          { AutoClear NoEnter }          
        end_item_list
        
    End_Object

    Object oList is a Selection_List oOrder.lst
        Set location 13 0 RELATIVE
        Set Server to (Orderdtl_DD(current_object))
        
        Begin_Row    
          Entry_Item ORDERDTL.DETAIL_NUMBER      { AutoClear AutoFind NoPut}
          Entry_Item ORDERDTL.ITEM_ID            { AutoClear }
          Entry_Item ORDERDTL.QTY_ORDERED        { AutoClear }
          Entry_Item ORDERDTL.PRICE              { AutoClear }
          Entry_Item ORDERDTL.EXTENDED_PRICE     { AutoClear }
        End_Row

    End_Object
                                                                 
 End_Object
An object can be of different types
Containers
 - Entry_View_Client  : 
 - View_Client        : 
 - ModalClient        : Needs UI and brakes the flow
Controles
 - Entry_Form         : Data Aware
 - Form               : Non Data Aware
 - List               : Non Data Aware
 - Table              : Data Aware