From 1a55d4ab99f09a5f72d8b711257b984f32e9ec0b Mon Sep 17 00:00:00 2001 From: alex Date: Sat, 31 Jul 2010 23:02:21 +0000 Subject: [PATCH] Patch level : 10,0 nopatch Files correlati : ci0.exe ci2.exe Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/branches/R_10_00@20741 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ca/calib01.cpp | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++ ca/calib01.h | 2 + 2 files changed, 101 insertions(+) diff --git a/ca/calib01.cpp b/ca/calib01.cpp index f1fd93e15..65b5ba652 100755 --- a/ca/calib01.cpp +++ b/ca/calib01.cpp @@ -660,6 +660,105 @@ int ca_create_fields(TMask& msk, int page, int logicnum, int x, int y, return mci.levels(); } +int ca_create_fields_compact(TMask& msk, int page, int logicnum, int x, int y, + short key_id, short des_id, unsigned int mode, const char* fieldname, int from ) +{ + TWait_cursor hourglass; + const TMultilevel_code_info& mci = ca_multilevel_code_info(logicnum); + int par_items = 0; + + if (logicnum == LF_FASI) + { + if (mci.parent() == LF_CDC) + par_items = ca_multilevel_code_info(LF_CDC).levels(); + else + if (mci.parent() == LF_COMMESSE) + par_items = ca_multilevel_code_info(LF_COMMESSE).levels(); + } + + int maxkeylen = 0, maxdeslen = 0; + for (int level = 0; level < mci.levels(); level++) + { + const TString& prompt = mci.prompt(level); + const TString& picture = mci.picture(level); + const int keylen = picture.len(); + const int deslen = (level == 0 || level == par_items) ? prompt.len() : 0 ; + if (keylen > maxkeylen) maxkeylen = keylen; + if (deslen > maxdeslen) maxdeslen = deslen; + } + + maxdeslen++; + const int tab0 = x; + int offset = 0; + int desc_offset = 0; + int row_offset = 0; + + if (key_id > 0 && (mode == 0 || (mode & 0x1) != 0)) + { + for (int i = 0; i < mci.levels(); i++) + { + const short kid = key_id+i; + + const TString& picture = mci.picture(i); + TString80 prompt = (i == 0 || i == par_items) ? mci.prompt(i) : ""; + + if (prompt.full()) + prompt.left_just(maxdeslen); + + const char* flags = picture[0] == '0' || picture[0] == '9' ? "BUZ" : "BU"; + + TEdit_field* kfld = NULL; + + if (mci.is_numeric_picture(i)) // Numeric + kfld = &msk.add_number(kid, page, prompt, tab0 + offset, y + row_offset, picture.len(), flags); + else + kfld = &msk.add_string(kid, page, prompt, tab0 + offset, y + row_offset, picture.len(), flags); + ca_create_browse1(*kfld, i, logicnum, key_id, des_id); + if ((mode & 0x1) != 0 && fieldname == NULL) + kfld->set_key(1); + + // Ho specificato un nome di campo speciale + if (fieldname && *fieldname) + { + const TFieldref& fr = *kfld->field(); + + TString80 str; + str.format("%s[%d,%d]", fieldname, fr.from()+from+1, fr.to()+from); + kfld->set_field(str); + } + kfld->set_warning(mci.prompt(i)); + offset += prompt.len() + picture.len() + 4; + if (desc_offset < offset) + desc_offset = offset; + if (i == par_items - 1) + { + row_offset++; + offset = 0; + } + } + } + row_offset = 0; + const int tab1 = tab0 + desc_offset + 4; + if (des_id > 0 && (mode == 0 || (mode & 0x2) != 0)) + { + for (int i = 0; i < mci.levels(); i++) + { + const short did = des_id+i; + TEdit_field& dfld = (i < mci.levels() - 1) && (i != par_items -1) ? msk.add_string(did, page, "", 50, 50, 50, "B") + : msk.add_string(did, page, "", tab1, y + row_offset, 50, "B", 72+tab0-tab1); + ca_create_browse2(dfld, i, logicnum, key_id); + if ((mode & 0x2) != 0 && fieldname == NULL) + dfld.set_key(2); + else + dfld.set_field(""); + if (i == par_items - 1) + row_offset++; + } + } + + return mci.levels(); +} + /////////////////////////////////////////////////////////// // TAnal_tree_pos /////////////////////////////////////////////////////////// diff --git a/ca/calib01.h b/ca/calib01.h index 5048eb76a..321a935f4 100755 --- a/ca/calib01.h +++ b/ca/calib01.h @@ -68,6 +68,8 @@ const TMultilevel_code_info* ca_multilevel_code_info_by_index(int level); bool ca_test_multilevel_field(TEdit_field& fld, int level); int ca_create_fields(TMask& msk, int page, int logicnum, int x, int y, short key_id, short des_id, unsigned int mode = 0x0, const char* fieldname = NULL, int from = 0); +int ca_create_fields_compact(TMask& msk, int page, int logicnum, int x, int y, + short key_id, short des_id, unsigned int mode = 0x0, const char* fieldname = NULL, int from = 0); /////////////////////////////////////////////////////////// // TSimple_anal_msk