Character Mode Cookbook
From DataFlex Wiki
Jump to navigationJump to search
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