Character Mode Cookbook: Difference between revisions
From DataFlex Wiki
Jump to navigationJump to search
Hsymington (talk | contribs) m Added to Character Mode category |
|||
(7 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
=Keys and commands= | =Keys and commands= | ||
<source lang="vdf"> | |||
on_key KCLEAR : F5 | on_key KCLEAR : F5 | ||
on_key KCANCEL Send Cancel : Esc | on_key KCANCEL Send Cancel : Esc | ||
on_key KENTER : Enter | on_key KENTER : Enter | ||
on_key KSAVE_RECORD Send Do_Report : F2 | on_key KSAVE_RECORD Send Do_Report : F2 | ||
</source> | |||
Promt commands | Promt commands | ||
Line 15: | Line 17: | ||
=Declaration= | =Declaration= | ||
==Properties and variables== | ==Properties and variables== | ||
<source lang="vdf"> | |||
property integer piCount public 0 | property integer piCount public 0 | ||
set piCount To (piCount+1) | set piCount To (piCount(current_object)+1) | ||
</source> | |||
==Move== | ==Move== | ||
local integer liNumber | local integer liNumber | ||
<source lang="vdf"> | |||
move 0 To liNumber | move 0 To liNumber | ||
Move (key+1) to key key = key++ //Dont forget to use paratheses (a+(b*c))<>a+b*c | Move (key+1) to key key = key++ //Dont forget to use paratheses (a+(b*c))<>a+b*c | ||
</source> | |||
==Set/Get== | ==Set/Get== | ||
<source lang="vdf"> | |||
Set value of (oPop(current_object)) item 0 to sVar // item[0] = sVar | Set value of (oPop(current_object)) item 0 to sVar // item[0] = sVar | ||
Get Value item 0 to sVar // sVar = item[0] | Get Value item 0 to sVar // sVar = item[0] | ||
</source> | |||
==Be aware of the difference== | ==Be aware of the difference== | ||
<source lang="vdf"> | |||
Set A of object to B A=B | Set A of object to B A=B | ||
Get A of object to B B=A | Get A of object to B B=A | ||
Move A to B | Move A to B | ||
</source> | |||
You can only use Get and Set on properties | You can only use Get and Set on properties | ||
=Functions and Procedures= | =Functions and Procedures= | ||
<source lang="vdf"> | |||
get myFunc of (oObj(current_object)) "tmp" to sAnswer // sAnswer = oObj->myFunc("tmp") | get myFunc of (oObj(current_object)) "tmp" to sAnswer // sAnswer = oObj->myFunc("tmp") | ||
</source> | |||
-------------- | -------------- | ||
SET | SET | ||
Line 74: | Line 86: | ||
=Start "windows/console"= | =Start "windows/console"= | ||
<source lang="vdf"> | |||
start_ui // starts a new console | start_ui // starts a new console | ||
ui_accept // has a return value | ui_accept // has a return value | ||
activate_scope // opens a new "window" | activate_scope // opens a new "window" | ||
</source> | |||
=Content layout= | =Content layout= | ||
<source lang="vdf"> | |||
-------------- | -------------- | ||
/Answer.hdr | /Answer.hdr | ||
Line 109: | Line 124: | ||
Send OpenAnswerForm to (oAnswer(current_object)) "test string" | Send OpenAnswerForm to (oAnswer(current_object)) "test string" | ||
-------------- | -------------- | ||
</source> | |||
=Reports= | =Reports= | ||
<source lang="vdf"> | |||
/oReportView1.SectionName | /oReportView1.SectionName | ||
__________________________________________________________________________ | __________________________________________________________________________ | ||
Line 168: | Line 185: | ||
end_procedure | end_procedure | ||
</source> | |||
--------------------------------------------------------------- | --------------------------------------------------------------- | ||
=Objects= | =Objects= | ||
<source lang="vdf"> | |||
Object oOrder is a Entry_View_Client oOrder.hdr | Object oOrder is a Entry_View_Client oOrder.hdr | ||
Set location 5 8 ABSOLUTE | Set location 5 8 ABSOLUTE | ||
Line 216: | Line 235: | ||
End_Object | End_Object | ||
</source> | |||
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 | |||
[[Category:Basics]] | [[Category:Basics]] | ||
[[Category:Cookbook]] | [[Category:Cookbook]] | ||
[[Category:DataFlex (Character Mode)]] |
Latest revision as of 12:39, 8 April 2020
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