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 _rule;
|
||||||
int _clipboard_row;
|
int _clipboard_row;
|
||||||
|
long _clipboard_ndoc;
|
||||||
|
char _clipboard_provv;
|
||||||
|
TString8 _clipboard_codnum;
|
||||||
|
int _clipboard_anno;
|
||||||
TString16 _field_costo;
|
TString16 _field_costo;
|
||||||
|
|
||||||
protected:
|
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();
|
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;
|
mask._clipboard_row = mask.sfield(F_SHEET).selected() + 1;
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
@ -485,12 +493,22 @@ bool TGestione_preventivo_msk::pe_incolla_handler(TMask_field& f, KEY k)
|
|||||||
|
|
||||||
if (mask._clipboard_row > 0)
|
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);
|
TSheet_field & sh = mask.sfield(F_SHEET);
|
||||||
const int selected_row = sh.selected() + 1;
|
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 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 = next_level > 0 ? next_level - 1 : orig_level;
|
||||||
const int level_offset = level - orig_level;
|
const int level_offset = level - orig_level;
|
||||||
int i;
|
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++)
|
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)
|
if (level == row_level)
|
||||||
start_row = i;
|
start_row = i;
|
||||||
}
|
}
|
||||||
if (start_row > 0)
|
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)
|
if (i > mask._clipboard_row && orig_level >= row_level)
|
||||||
break;
|
break;
|
||||||
const TRiga_documento & row = doc[i];
|
const TRiga_documento & row = orig[i];
|
||||||
|
|
||||||
sh.insert(start_row - 1, false, true);
|
sh.insert(start_row - 1, false, true);
|
||||||
TRiga_documento & new_row = doc[start_row];
|
TRiga_documento & new_row = dest[start_row];
|
||||||
doc.copy_data(new_row, row);
|
dest.copy_data(new_row, row);
|
||||||
row_level += level_offset;
|
row_level += level_offset;
|
||||||
new_row.put(RDOC_LEVEL, row_level);
|
new_row.put(RDOC_LEVEL, row_level);
|
||||||
new_row.put(RDOC_TREE, mask.build_tree_string(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();
|
mask.highlight();
|
||||||
sh.force_update();
|
sh.force_update();
|
||||||
}
|
}
|
||||||
mask._clipboard_row = -1;
|
// mask._clipboard_row = -1;
|
||||||
|
if (different_doc)
|
||||||
|
delete newdoc;
|
||||||
mask.reset(F_LIVELLO);
|
mask.reset(F_LIVELLO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user