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:
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);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user