Patch level : 2.2
Files correlati : ca0 Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@12527 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
6fce3dd611
commit
a760476caa
@ -21,7 +21,6 @@ public:
|
|||||||
TPiano_conti_anal_msk::TPiano_conti_anal_msk() : TSimple_anal_msk("ca0400a")
|
TPiano_conti_anal_msk::TPiano_conti_anal_msk() : TSimple_anal_msk("ca0400a")
|
||||||
{
|
{
|
||||||
create_key_fields();
|
create_key_fields();
|
||||||
offset_fields();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TPiano_conti_anal_msk::~TPiano_conti_anal_msk()
|
TPiano_conti_anal_msk::~TPiano_conti_anal_msk()
|
||||||
|
@ -1,20 +1,12 @@
|
|||||||
#include "ca0400a.h"
|
#include "ca0400a.h"
|
||||||
|
|
||||||
TOOLBAR "" 0 20 0 2
|
TOOLBAR "" 0 -3 0 3
|
||||||
|
|
||||||
BUTTON DLG_OK 10 2
|
#include <toolbar.h>
|
||||||
BEGIN
|
|
||||||
PROMPT -12 -1 ""
|
|
||||||
END
|
|
||||||
|
|
||||||
BUTTON DLG_QUIT 10 2
|
|
||||||
BEGIN
|
|
||||||
PROMPT -22 -1 ""
|
|
||||||
END
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Piano dei conti" -1 -1 78 10
|
PAGE "Piano dei conti" -1 -1 80 20
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 6
|
GROUPBOX DLG_NULL 78 6
|
||||||
BEGIN
|
BEGIN
|
||||||
|
139
ca/calib01.cpp
139
ca/calib01.cpp
@ -9,44 +9,48 @@ bool TAnal_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TAnal_msk::offset_fields()
|
int TAnal_msk::compute_offset() const
|
||||||
{
|
{
|
||||||
const WINDOW tw = toolwin();
|
int delta = 0;
|
||||||
|
RCT rct; xvt_vobj_get_client_rect(TASK_WIN, &rct);
|
||||||
RCT rct; xvt_vobj_get_client_rect(win(), &rct);
|
if (rct.right > 720)
|
||||||
const int width = rct.right;
|
delta = (rct.right - 720) / 2 / CHARX;
|
||||||
int rightmost = 0;
|
return delta;
|
||||||
|
|
||||||
for (int i = fields()-1; i > 0; i--)
|
|
||||||
{
|
|
||||||
TMask_field& f = fld(i);
|
|
||||||
if (f.dlg() < 1000 && f.parent() != tw)
|
|
||||||
{
|
|
||||||
f.get_rect(rct);
|
|
||||||
if (rct.right > rightmost)
|
|
||||||
rightmost = rct.right;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const int delta = width - rightmost;
|
|
||||||
if (delta > 0)
|
|
||||||
{
|
|
||||||
for (int i = fields()-1; i >= 0; i--)
|
|
||||||
{
|
|
||||||
TMask_field& f = fld(i);
|
|
||||||
if (f.dlg() < 1000 && f.parent() != tw)
|
|
||||||
{
|
|
||||||
f.get_rect(rct);
|
|
||||||
xvt_rect_offset(&rct, delta, 0);
|
|
||||||
f.set_rect(rct);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TAnal_msk::TAnal_msk(const char* name)
|
TAnal_msk::TAnal_msk(const char* name)
|
||||||
{
|
{
|
||||||
read_mask(name, 0, 0);
|
const TFilename outname = "anal.msk";
|
||||||
|
TFilename inpname = name; inpname.ext("msk");
|
||||||
|
inpname.custom_path();
|
||||||
|
|
||||||
|
ofstream out(outname);
|
||||||
|
|
||||||
|
int delta = compute_offset();
|
||||||
|
TString line;
|
||||||
|
|
||||||
|
TScanner inp(inpname);
|
||||||
|
while (!inp.eof())
|
||||||
|
{
|
||||||
|
line = inp.line();
|
||||||
|
if (line.starts_with("PR "))
|
||||||
|
{
|
||||||
|
TToken_string l(line, ' ');
|
||||||
|
l.strip_d_spaces();
|
||||||
|
int x = l.get_int(1);
|
||||||
|
if (x >= 0)
|
||||||
|
{
|
||||||
|
x += delta;
|
||||||
|
l.add(x, 1);
|
||||||
|
line = l;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
out << line << endl;
|
||||||
|
}
|
||||||
|
out.close();
|
||||||
|
|
||||||
|
read_mask(outname, 0, 0);
|
||||||
|
xvt_fsys_removefile(outname);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -64,26 +68,39 @@ void TSimple_anal_msk::get_key_fields(TString& key1, TString& key2) const
|
|||||||
key2 = des.Fd[k2.FieldSeq[0] % MaxFields].Name;
|
key2 = des.Fd[k2.FieldSeq[0] % MaxFields].Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int TSimple_anal_msk::get_key_len(int level, TConfig& cfg) const
|
||||||
|
{
|
||||||
|
int len = 0;
|
||||||
|
for (int i = 1; i <= level; i++)
|
||||||
|
{
|
||||||
|
const TString& picture = cfg.get(get_key_var(), NULL, i);
|
||||||
|
len += picture.len();
|
||||||
|
}
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
void TSimple_anal_msk::create_key_browse(TEdit_field& kfld, int level, TConfig& cfg)
|
void TSimple_anal_msk::create_key_browse(TEdit_field& kfld, int level, TConfig& cfg)
|
||||||
{
|
{
|
||||||
TString16 key1, key2;
|
TString16 key1, key2;
|
||||||
get_key_fields(key1, key2);
|
get_key_fields(key1, key2);
|
||||||
|
|
||||||
|
const TString q(get_key_len(level, cfg), '?');
|
||||||
|
|
||||||
TFilename tmp; tmp.temp();
|
TFilename tmp; tmp.temp();
|
||||||
ofstream out(tmp);
|
ofstream out(tmp);
|
||||||
out << "US " << get_logicnum() << endl;
|
out << "US " << get_logicnum() << " SE " << key1 << "?=\"" << q << '"' << endl;
|
||||||
out << "KE 1" << endl;
|
out << "KE 1" << endl;
|
||||||
|
|
||||||
int from = 1, to = 1;
|
int from = 1, to = 1;
|
||||||
for (int i = 0; i < level; i++)
|
for (int i = 1; i <= level; i++)
|
||||||
{
|
{
|
||||||
const TString& picture = cfg.get(get_key_var(), NULL, i);
|
const TString& picture = cfg.get(get_key_var(), NULL, i);
|
||||||
const TString& prompt = cfg.get(get_des_var(), NULL, i);
|
const TString& prompt = cfg.get(get_des_var(), NULL, i);
|
||||||
to = from + picture.len()-1;
|
to = from + picture.len()-1;
|
||||||
TString field; field.format("%s[%d,%d]", (const char*)key1, from, to);
|
TString field; field.format("%s[%d,%d]", (const char*)key1, from, to);
|
||||||
out << "IN " << field << ' ' << get_key_id(i) << endl;
|
out << "IN " << field << ' ' << get_key_id(i-1) << endl;
|
||||||
out << "DI \"" << prompt << '@' << (from-to+1) << "\" " << field << endl;
|
out << "DI \"" << prompt << '@' << (to-from+1) << "\" " << field << endl;
|
||||||
out << "OU " << get_key_id(i) << ' ' << field << endl;
|
out << "OU " << get_key_id(i-1) << ' ' << field << endl;
|
||||||
from = to+1;
|
from = to+1;
|
||||||
}
|
}
|
||||||
out << "DI \"Descrizione@50\" " << key2 << endl;
|
out << "DI \"Descrizione@50\" " << key2 << endl;
|
||||||
@ -99,6 +116,45 @@ void TSimple_anal_msk::create_key_browse(TEdit_field& kfld, int level, TConfig&
|
|||||||
xvt_fsys_removefile(tmp);
|
xvt_fsys_removefile(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TSimple_anal_msk::create_des_browse(TEdit_field& kfld, int level, TConfig& cfg)
|
||||||
|
{
|
||||||
|
TString16 key1, key2;
|
||||||
|
get_key_fields(key1, key2);
|
||||||
|
|
||||||
|
const TString q(get_key_len(level, cfg), '?');
|
||||||
|
|
||||||
|
TFilename tmp; tmp.temp();
|
||||||
|
ofstream out(tmp);
|
||||||
|
out << "US " << get_logicnum() << " KE 2" << " SE " << key1 << "?=\"" << q << '"' << endl;
|
||||||
|
out << "KE 2" << endl;
|
||||||
|
|
||||||
|
out << "DI \"Descrizione@50\" " << key2 << endl;
|
||||||
|
out << "IN " << key2 << ' ' << kfld.dlg() << endl;
|
||||||
|
out << "OU " << kfld.dlg() << ' ' << key2 << endl;
|
||||||
|
|
||||||
|
int from = 1, to = 1;
|
||||||
|
for (int i = 1; i <= level; i++)
|
||||||
|
{
|
||||||
|
const TString& picture = cfg.get(get_key_var(), NULL, i);
|
||||||
|
const TString& prompt = cfg.get(get_des_var(), NULL, i);
|
||||||
|
to = from + picture.len()-1;
|
||||||
|
TString field; field.format("%s[%d,%d]", (const char*)key1, from, to);
|
||||||
|
out << "DI \"" << prompt << '@' << (to-from+1) << "\" " << field << endl;
|
||||||
|
out << "OU " << get_key_id(i-1) << ' ' << field << endl;
|
||||||
|
from = to+1;
|
||||||
|
}
|
||||||
|
out << "CH NO" << endl;
|
||||||
|
out << "EN" << endl;
|
||||||
|
out.close();
|
||||||
|
|
||||||
|
TScanner scan(tmp);
|
||||||
|
while (scan.pop() != "EN")
|
||||||
|
kfld.parse_item(scan);
|
||||||
|
|
||||||
|
xvt_fsys_removefile(tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int TSimple_anal_msk::create_key_fields()
|
int TSimple_anal_msk::create_key_fields()
|
||||||
{
|
{
|
||||||
TConfig cfg(CONFIG_DITTA, "ca");
|
TConfig cfg(CONFIG_DITTA, "ca");
|
||||||
@ -119,8 +175,8 @@ int TSimple_anal_msk::create_key_fields()
|
|||||||
if (deslen > maxdeslen) maxdeslen = deslen;
|
if (deslen > maxdeslen) maxdeslen = deslen;
|
||||||
}
|
}
|
||||||
maxdeslen++;
|
maxdeslen++;
|
||||||
const int tab0 = 2;
|
const int tab0 = compute_offset()+2;
|
||||||
const int tab1 = tab0 + maxdeslen + maxkeylen + 3;
|
const int tab1 = tab0 + maxdeslen + maxkeylen + 4;
|
||||||
for (int i = 1; i < level; i++)
|
for (int i = 1; i < level; i++)
|
||||||
{
|
{
|
||||||
const short kid = get_key_id(i-1);
|
const short kid = get_key_id(i-1);
|
||||||
@ -135,7 +191,8 @@ int TSimple_anal_msk::create_key_fields()
|
|||||||
const short did = get_des_id(i-1);
|
const short did = get_des_id(i-1);
|
||||||
if (did > kid)
|
if (did > kid)
|
||||||
{
|
{
|
||||||
add_string(did, 0, "", tab1, i, 50, "", 76-tab1);
|
TEdit_field& dfld = add_string(did, 0, "", tab1, i, 50, "B", 72+tab0-tab1);
|
||||||
|
create_des_browse(dfld, i, cfg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,10 +17,10 @@ class TAnal_msk : public TAutomask
|
|||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
virtual int create_key_fields() pure;
|
virtual int create_key_fields() pure;
|
||||||
void offset_fields();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
int compute_offset() const;
|
||||||
TAnal_msk(const char* name);
|
TAnal_msk(const char* name);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -40,7 +40,10 @@ protected:
|
|||||||
virtual short get_des_id(int n) const pure;
|
virtual short get_des_id(int n) const pure;
|
||||||
|
|
||||||
void get_key_fields(TString& key1, TString& key2) const;
|
void get_key_fields(TString& key1, TString& key2) const;
|
||||||
|
int get_key_len(int level, TConfig& cfg) const;
|
||||||
|
|
||||||
void create_key_browse(TEdit_field& kfld, int level, TConfig& cfg);
|
void create_key_browse(TEdit_field& kfld, int level, TConfig& cfg);
|
||||||
|
void create_des_browse(TEdit_field& kfld, int level, TConfig& cfg);
|
||||||
virtual int create_key_fields();
|
virtual int create_key_fields();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user