;; | -------------------------------------------------------------------------------- ;; | DL_DataView ;; | -------------------------------------------------------------------------------- ;; | Function : Dialog box that displays a list of data in a block ;; | type dialog box ;; | Arguments : 'Title' - Dialog box title ;; | 'DataLst' - List of data in the following format nested list: ;; | (list Fieldname DataValue Precision ValidationFlags) ;; | 'FieldName' - the fieldname to display before each ;; | data edit box. ;; | 'DataValue' - Value to display ;; | 'Precision' - Precision to use for floating point ;; | values ;; | 'ValidationFlags' - Defines allowed values ;; | "Plus" - Plus Only ;; | "Minus" - Minus Only ;; | "ZeroPlus" - Zero + Plus ;; | "ZeroMinus" - Zero + Minus ;; | "All" - All Values ;; | Returns : The 'DataLst' ;; | Author : Rakesh Rao, (C) 2001, Four Dimension Technologies, Bangalore-India ;; | Updated : March 22, 2001 ;; | ;; | e-mail : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | -------------------------------------------------------------------------------- (defun DL_DataView( Title DataLst / RetVal len ) (if (not (new_dialog "dview_dlg" #dcl_id)) (exit) ) (set_tile "title" Title) (setq #DTV_CurStart 1 #DTV_DataLst DataLst DataLst nil ) (DL_PopulateDataView 0) (setq len (length #DTV_DataLst)) (if (<= len 12) (progn (mode_tile "next" 1) (mode_tile "previous" 1) )) (action_tile "row1" "(Disp_DTV)") (action_tile "row2" "(Disp_DTV)") (action_tile "row3" "(Disp_DTV)") (action_tile "row4" "(Disp_DTV)") (action_tile "row5" "(Disp_DTV)") (action_tile "row6" "(Disp_DTV)") (action_tile "row7" "(Disp_DTV)") (action_tile "row8" "(Disp_DTV)") (action_tile "row9" "(Disp_DTV)") (action_tile "row10" "(Disp_DTV)") (action_tile "row11" "(Disp_DTV)") (action_tile "row12" "(Disp_DTV)") (action_tile "next" "(Disp_DTV)") (action_tile "previous" "(Disp_DTV)") (action_tile "cancel" "(done_dialog 99)") (action_tile "accept" "(done_dialog 100)") (setq #DataLst #DTV_DataLst #DTV_CurStart 1 RetVal (start_dialog) ) (if (= RetVal 100) (setq DataLst #DTV_DataLst #DTV_DataLst nil #DataLst nil #DTV_CurStart nil ) (setq DataLst nil) ) DataLst ) (defun DL_PopulateDataView ( Idx / tmp cnt More Data FieldName DataValue Prec ValueFlag Str) (setq cnt 1) (repeat 12 (set_tile (strcat "row" (itoa cnt) "_title") "") (set_tile (strcat "row" (itoa cnt)) "") (mode_tile (strcat "row" (itoa cnt) "_title") 0) (mode_tile (strcat "row" (itoa cnt)) 0) (setq cnt (1+ cnt)) ) (setq cnt 0 More T ) (while More (setq Data (nth Idx #DTV_DataLst)) (if Data (progn (setq FieldName (nth 0 Data) DataValue (nth 1 Data) Prec (nth 2 Data) ValueFlag (nth 3 Data) cnt (1+ cnt) ) (if (<= cnt 12) (progn (setq Str (ST_FormatStr DataValue Prec)) (set_tile (strcat "row" (itoa cnt) "_title") FieldName) (set_tile (strcat "row" (itoa cnt)) Str) (setq Idx (1+ Idx)) ) (setq More nil) ) ) (setq More nil) ) ) (setq tmp (- 12 cnt) cnt (1+ cnt) ) (repeat tmp (mode_tile (strcat "row" (itoa cnt) "_title") 1) (mode_tile (strcat "row" (itoa cnt)) 1) (setq cnt (1+ cnt)) ) ) (defun Disp_DTV( / Val Idx tmp ) (cond ((= $key "row1") (setq Idx (1- #DTV_CurStart) Val (nth Idx #DTV_DataLst) tmp (DL_DTV_ProcessValue Val $key Idx) Val (LI_RepList Val 2 tmp) #DTV_DataLst (LI_RepList #DTV_DataLst (1+ Idx) Val) ) ) ((= $key "row2") (setq Idx #DTV_CurStart Val (nth Idx #DTV_DataLst) tmp (DL_DTV_ProcessValue Val $key Idx) Val (LI_RepList Val 2 tmp) #DTV_DataLst (LI_RepList #DTV_DataLst (1+ Idx) Val) ) ) ((= $key "row3") (setq Idx (+ #DTV_CurStart 1) Val (nth Idx #DTV_DataLst) tmp (DL_DTV_ProcessValue Val $key Idx) Val (LI_RepList Val 2 tmp) #DTV_DataLst (LI_RepList #DTV_DataLst (1+ Idx) Val) ) ) ((= $key "row4") (setq Idx (+ #DTV_CurStart 2) Val (nth Idx #DTV_DataLst) tmp (DL_DTV_ProcessValue Val $key Idx) Val (LI_RepList Val 2 tmp) #DTV_DataLst (LI_RepList #DTV_DataLst (1+ Idx) Val) ) ) ((= $key "row5") (setq Idx (+ #DTV_CurStart 3) Val (nth Idx #DTV_DataLst) tmp (DL_DTV_ProcessValue Val $key Idx) Val (LI_RepList Val 2 tmp) #DTV_DataLst (LI_RepList #DTV_DataLst (1+ Idx) Val) ) ) ((= $key "row6") (setq Idx (+ #DTV_CurStart 4) Val (nth Idx #DTV_DataLst) tmp (DL_DTV_ProcessValue Val $key Idx) Val (LI_RepList Val 2 tmp) #DTV_DataLst (LI_RepList #DTV_DataLst (1+ Idx) Val) ) ) ((= $key "row7") (setq Idx (+ #DTV_CurStart 5) Val (nth Idx #DTV_DataLst) tmp (DL_DTV_ProcessValue Val $key Idx) Val (LI_RepList Val 2 tmp) #DTV_DataLst (LI_RepList #DTV_DataLst (1+ Idx) Val) ) ) ((= $key "row8") (setq Idx (+ #DTV_CurStart 6) Val (nth Idx #DTV_DataLst) tmp (DL_DTV_ProcessValue Val $key Idx) Val (LI_RepList Val 2 tmp) #DTV_DataLst (LI_RepList #DTV_DataLst (1+ Idx) Val) ) ) ((= $key "row9") (setq Idx (+ #DTV_CurStart 7) Val (nth Idx #DTV_DataLst) tmp (DL_DTV_ProcessValue Val $key Idx) Val (LI_RepList Val 2 tmp) #DTV_DataLst (LI_RepList #DTV_DataLst (1+ Idx) Val) ) ) ((= $key "row10") (setq Idx (+ #DTV_CurStart 8) Val (nth Idx #DTV_DataLst) tmp (DL_DTV_ProcessValue Val $key Idx) Val (LI_RepList Val 2 tmp) #DTV_DataLst (LI_RepList #DTV_DataLst (1+ Idx) Val) ) ) ((= $key "row11") (setq Idx (+ #DTV_CurStart 9) Val (nth Idx #DTV_DataLst) tmp (DL_DTV_ProcessValue Val $key Idx) Val (LI_RepList Val 2 tmp) #DTV_DataLst (LI_RepList #DTV_DataLst (1+ Idx) Val) ) ) ((= $key "row12") (setq Idx (+ #DTV_CurStart 10) Val (nth Idx #DTV_DataLst) tmp (DL_DTV_ProcessValue Val $key Idx) Val (LI_RepList Val 2 tmp) #DTV_DataLst (LI_RepList #DTV_DataLst (1+ Idx) Val) ) ) ((= $key "next") (setq #DTV_CurStart (+ #DTV_CurStart 12)) (DL_PopulateDataView (1- #DTV_CurStart)) ) ((= $key "previous") (setq #DTV_CurStart (- #DTV_CurStart 12)) (if (< #DTV_CurStart 1) (setq #DTV_CurStart 1) ) (DL_PopulateDataView (1- #DTV_CurStart)) ) ) ) (defun DL_DTV_ProcessValue( Val key Idx / FieldName DataValue Prec ValueFlag tmp tmp1 ) (setq FieldName (nth 0 Val) DataValue (nth 1 Val) Prec (nth 2 Val) ValueFlag (nth 3 Val) tmp nil tmp1 (type DataValue) ) (cond ((= tmp1 'INT) (setq tmp (DL_ProcTile1 $key DataValue "Integer" ValueFlag Prec)) ) ((= tmp1 'REAL) (setq tmp (DL_ProcTile1 $key DataValue "Real" ValueFlag Prec)) ) ((= tmp1 'STR) (setq tmp (DL_ProcTile1 $key DataValue "String" ValueFlag Prec)) ) ((= tmp1 'LIST) (setq tmp (DL_ProcTile1 $key (ST_FormatStr DataValue Prec) "String" ValueFlag Prec)) (if (/= tmp "") (setq tmp (mapcar 'atof (ST_Str2Lst tmp ","))) (setq tmp nil) ) ) ) tmp )