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")
|
||||
{
|
||||
create_key_fields();
|
||||
offset_fields();
|
||||
}
|
||||
|
||||
TPiano_conti_anal_msk::~TPiano_conti_anal_msk()
|
||||
|
@ -1,20 +1,12 @@
|
||||
#include "ca0400a.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
TOOLBAR "" 0 -3 0 3
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Piano dei conti" -1 -1 78 10
|
||||
PAGE "Piano dei conti" -1 -1 80 20
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
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;
|
||||
}
|
||||
|
||||
void TAnal_msk::offset_fields()
|
||||
int TAnal_msk::compute_offset() const
|
||||
{
|
||||
const WINDOW tw = toolwin();
|
||||
|
||||
RCT rct; xvt_vobj_get_client_rect(win(), &rct);
|
||||
const int width = rct.right;
|
||||
int rightmost = 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);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
int delta = 0;
|
||||
RCT rct; xvt_vobj_get_client_rect(TASK_WIN, &rct);
|
||||
if (rct.right > 720)
|
||||
delta = (rct.right - 720) / 2 / CHARX;
|
||||
return delta;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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() << endl;
|
||||
out << "US " << get_logicnum() << " SE " << key1 << "?=\"" << q << '"' << endl;
|
||||
out << "KE 1" << endl;
|
||||
|
||||
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& 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 << "IN " << field << ' ' << get_key_id(i) << endl;
|
||||
out << "DI \"" << prompt << '@' << (from-to+1) << "\" " << field << endl;
|
||||
out << "OU " << get_key_id(i) << ' ' << field << endl;
|
||||
out << "IN " << field << ' ' << get_key_id(i-1) << endl;
|
||||
out << "DI \"" << prompt << '@' << (to-from+1) << "\" " << field << endl;
|
||||
out << "OU " << get_key_id(i-1) << ' ' << field << endl;
|
||||
from = to+1;
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
TConfig cfg(CONFIG_DITTA, "ca");
|
||||
@ -119,8 +175,8 @@ int TSimple_anal_msk::create_key_fields()
|
||||
if (deslen > maxdeslen) maxdeslen = deslen;
|
||||
}
|
||||
maxdeslen++;
|
||||
const int tab0 = 2;
|
||||
const int tab1 = tab0 + maxdeslen + maxkeylen + 3;
|
||||
const int tab0 = compute_offset()+2;
|
||||
const int tab1 = tab0 + maxdeslen + maxkeylen + 4;
|
||||
for (int i = 1; i < level; i++)
|
||||
{
|
||||
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);
|
||||
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:
|
||||
virtual int create_key_fields() pure;
|
||||
void offset_fields();
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
int compute_offset() const;
|
||||
TAnal_msk(const char* name);
|
||||
|
||||
public:
|
||||
@ -40,7 +40,10 @@ protected:
|
||||
virtual short get_des_id(int n) const pure;
|
||||
|
||||
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_des_browse(TEdit_field& kfld, int level, TConfig& cfg);
|
||||
virtual int create_key_fields();
|
||||
|
||||
protected:
|
||||
|
Loading…
x
Reference in New Issue
Block a user