Patch level : 10.0 364

Files correlati     : pe0.exe
Ricompilazione Demo : [ ]
Commento

Copia e incolla da un documento all' altro (Preventivi)


git-svn-id: svn://10.65.10.50/trunk@19091 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2009-07-01 22:53:41 +00:00
parent a1b323ce4c
commit b9e31ee28c

@ -35,6 +35,10 @@ class TGestione_preventivo_msk : public TDocumento_mask
{
int _rule;
int _clipboard_row;
long _clipboard_ndoc;
char _clipboard_provv;
TString8 _clipboard_codnum;
int _clipboard_anno;
TString16 _field_costo;
protected:
@ -471,6 +475,10 @@ bool TGestione_preventivo_msk::pe_copia_handler(TMask_field& f, KEY k)
{
TGestione_preventivo_msk& mask = (TGestione_preventivo_msk&)f.mask();
mask._clipboard_ndoc = mask.get_long(F_NDOC);
mask._clipboard_provv = mask.get(F_PROVV)[0];
mask._clipboard_codnum = mask.get(F_CODNUM);
mask._clipboard_anno = mask.get_int(F_ANNO);
mask._clipboard_row = mask.sfield(F_SHEET).selected() + 1;
}
return ok;
@ -485,12 +493,22 @@ bool TGestione_preventivo_msk::pe_incolla_handler(TMask_field& f, KEY k)
if (mask._clipboard_row > 0)
{
TDocumento & doc = mask.doc();
TDocumento & dest = mask.doc();
TDocumento * newdoc = &mask.doc();
bool different_doc = dest.get_char(DOC_PROVV) != mask._clipboard_provv ||
dest.get_int(DOC_ANNO) != mask._clipboard_anno ||
dest.get(DOC_CODNUM) != mask._clipboard_codnum ||
dest.get_long(DOC_NDOC) != mask._clipboard_ndoc;
if (different_doc)
newdoc = new TDocumento(mask._clipboard_provv, mask._clipboard_anno, mask._clipboard_codnum, mask._clipboard_ndoc);
TDocumento & orig = *newdoc;
TSheet_field & sh = mask.sfield(F_SHEET);
const int selected_row = sh.selected() + 1;
const int rows = doc.physical_rows();
const int rows = dest.physical_rows();
const int next_level = mask.get_int(F_LIVELLO);
const int orig_level = doc[mask._clipboard_row].get_int(RDOC_LEVEL);
const int orig_level = orig[mask._clipboard_row].get_int(RDOC_LEVEL);
const int level = next_level > 0 ? next_level - 1 : orig_level;
const int level_offset = level - orig_level;
int i;
@ -498,26 +516,26 @@ bool TGestione_preventivo_msk::pe_incolla_handler(TMask_field& f, KEY k)
for (i = selected_row; start_row < 0 && i <= rows; i++)
{
const int row_level = doc[i].get_int(RDOC_LEVEL);
const int row_level = dest[i].get_int(RDOC_LEVEL);
if (level == row_level)
start_row = i;
}
if (start_row > 0)
{
const bool shift_source_rows = start_row <= mask._clipboard_row;
const bool shift_source_rows = (!different_doc) && start_row <= mask._clipboard_row;
for (i = mask._clipboard_row; i <= doc.physical_rows(); i++)
for (i = mask._clipboard_row; i <= orig.physical_rows(); i++)
{
int row_level = doc[i].get_int(RDOC_LEVEL);
int row_level = orig[i].get_int(RDOC_LEVEL);
if (i > mask._clipboard_row && orig_level >= row_level)
break;
const TRiga_documento & row = doc[i];
const TRiga_documento & row = orig[i];
sh.insert(start_row - 1, false, true);
TRiga_documento & new_row = doc[start_row];
doc.copy_data(new_row, row);
TRiga_documento & new_row = dest[start_row];
dest.copy_data(new_row, row);
row_level += level_offset;
new_row.put(RDOC_LEVEL, row_level);
new_row.put(RDOC_TREE, mask.build_tree_string(level));
@ -531,7 +549,9 @@ bool TGestione_preventivo_msk::pe_incolla_handler(TMask_field& f, KEY k)
mask.highlight();
sh.force_update();
}
mask._clipboard_row = -1;
// mask._clipboard_row = -1;
if (different_doc)
delete newdoc;
mask.reset(F_LIVELLO);
}
}