Patch level : 12.0 552
Files correlati : sy Commento : Aggiunto filtro da a in manutenzione archivi git-svn-id: svn://10.65.10.50/branches/R_10_00@24427 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
827237fc54
commit
90379c87da
@ -15,6 +15,9 @@
|
|||||||
#include <xml.h>
|
#include <xml.h>
|
||||||
#include <xvtility.h>
|
#include <xvtility.h>
|
||||||
|
|
||||||
|
#define DAFILTRO "DA_"
|
||||||
|
#define AFILTRO "A_"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TSheet_control
|
// TSheet_control
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -1671,40 +1674,51 @@ bool TCursor_sheet::filter_dialog()
|
|||||||
TMask m(TR("Filtro"), 1, 78, kfields+5);
|
TMask m(TR("Filtro"), 1, 78, kfields+5);
|
||||||
m.add_button_tool(DLG_OK, "", TOOL_OK);
|
m.add_button_tool(DLG_OK, "", TOOL_OK);
|
||||||
m.add_button_tool(DLG_CANCEL, "", TOOL_CANCEL);
|
m.add_button_tool(DLG_CANCEL, "", TOOL_CANCEL);
|
||||||
for (int i = 0; i < kfields; i++)
|
int max_len = 0;
|
||||||
{
|
for (int j = 0; j < 2; j++)
|
||||||
const int nf = k0.FieldSeq[i] % MaxFields;
|
{
|
||||||
const char* fname = rec.fieldname(nf);
|
for (int i = 0; i < kfields; i++)
|
||||||
const TFieldtypes ft = rec.type(fname);
|
{
|
||||||
TString16 prompt = fname; prompt.left_just(12);
|
const int nf = k0.FieldSeq[i] % MaxFields;
|
||||||
TString4 flags;
|
const char* fname = rec.fieldname(nf);
|
||||||
switch (ft)
|
const TFieldtypes ft = rec.type(fname);
|
||||||
{
|
TString16 prompt = fname; prompt.left_just(12);
|
||||||
case _alfafld:
|
TString4 flags;
|
||||||
case _charfld:
|
TString ffname = get_tmp_string() << (j ? AFILTRO : DAFILTRO) << fname;
|
||||||
m.add_string(101+i, 0, prompt, 1, i+1, rec.length(fname), flags).set_field(fname);
|
switch (ft)
|
||||||
break;
|
{
|
||||||
case _intzerofld:
|
case _alfafld:
|
||||||
case _longzerofld:
|
case _charfld:
|
||||||
flags << "Z";
|
m.add_string(101 + i + j * 20, 0, prompt, 1 + (j * max_len), i + 1, rec.length(fname), flags).set_field(ffname);
|
||||||
case _wordfld:
|
break;
|
||||||
case _intfld:
|
case _intzerofld:
|
||||||
case _longfld:
|
case _longzerofld:
|
||||||
m.add_number(101+i, 0, prompt, 1, i+1, rec.length(fname), flags).set_field(fname);
|
flags << "Z";
|
||||||
break;
|
case _wordfld:
|
||||||
case _datefld:
|
case _intfld:
|
||||||
m.add_date(101+i, 0, prompt, 1, i+1, flags).set_field(fname);
|
case _longfld:
|
||||||
break;
|
m.add_number(101 + i + j * 20, 0, prompt, 1 + (j * max_len), i + 1, rec.length(fname), flags).set_field(ffname);
|
||||||
default:
|
break;
|
||||||
break;
|
case _datefld:
|
||||||
}
|
m.add_date(101 + i + j * 20, 0, prompt, 1 + (j * max_len), i + 1, flags).set_field(ffname);
|
||||||
}
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
max_len = max_len < rec.length(fname) + strlen(prompt) ? rec.length(fname) + strlen(prompt) : max_len;
|
||||||
|
}
|
||||||
|
max_len += 10;
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < kfields-1; i++)
|
for (int i = 0; i < kfields-1; i++)
|
||||||
{
|
{
|
||||||
const int nf = k0.FieldSeq[i] % MaxFields;
|
const int nf = k0.FieldSeq[i] % MaxFields;
|
||||||
const char* fname = rec.fieldname(nf);
|
const char * fname = rec.fieldname(nf);
|
||||||
TMask_field* f = m.find_by_fieldname(fname);
|
TString ffname = DAFILTRO; ffname << fname;
|
||||||
|
TMask_field* f = &m.field(101 + i);
|
||||||
|
// Non dovrebbe succedere ma lascio il codice vecchio in caso di errori
|
||||||
|
if(f == NULL)
|
||||||
|
f = m.find_by_fieldname(ffname);
|
||||||
if (f)
|
if (f)
|
||||||
f->set(rec.get(fname));
|
f->set(rec.get(fname));
|
||||||
}
|
}
|
||||||
@ -1712,17 +1726,26 @@ bool TCursor_sheet::filter_dialog()
|
|||||||
if (m.run() == K_ENTER)
|
if (m.run() == K_ENTER)
|
||||||
{
|
{
|
||||||
rec.zero();
|
rec.zero();
|
||||||
for (int i = 0; i < kfields; i++)
|
TRectype torec = _cursor->curr();
|
||||||
{
|
torec.zero();
|
||||||
const int nf = k0.FieldSeq[i] % MaxFields;
|
TRectype* prec = &rec;
|
||||||
const char* fname = rec.fieldname(nf);
|
|
||||||
const TMask_field* f = m.find_by_fieldname(fname);
|
for (int j = 0; j < 2; j++)
|
||||||
if (f) rec.put(fname, f->get());
|
{
|
||||||
}
|
for (int i = 0; i < kfields; i++)
|
||||||
|
{
|
||||||
|
const int nf = k0.FieldSeq[i] % MaxFields;
|
||||||
|
const char* fname = rec.fieldname(nf);
|
||||||
|
TString ffname = (j ? AFILTRO : DAFILTRO); ffname << fname;
|
||||||
|
const TMask_field* f = m.find_by_fieldname(ffname);
|
||||||
|
if (f) prec->put(fname, f->get());
|
||||||
|
}
|
||||||
|
prec = &torec;
|
||||||
|
}
|
||||||
|
|
||||||
TWait_cursor hourglass;
|
TWait_cursor hourglass;
|
||||||
_cursor->freeze(false);
|
_cursor->freeze(false);
|
||||||
_cursor->setregion(rec, rec);
|
_cursor->setregion(rec, torec);
|
||||||
_cursor->items();
|
_cursor->items();
|
||||||
_cursor->freeze(true);
|
_cursor->freeze(true);
|
||||||
force_update();
|
force_update();
|
||||||
|
@ -1013,6 +1013,14 @@ TString& TString::insert(
|
|||||||
strcpy_s(&_str[pos+l], _size-(pos+l)+1, spark); // Aggiungi spark
|
strcpy_s(&_str[pos+l], _size-(pos+l)+1, spark); // Aggiungi spark
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
TString & TString::add_front(const char * s)
|
||||||
|
{
|
||||||
|
const int l = strlen(s);
|
||||||
|
lpad(len() + l);
|
||||||
|
overwrite(s);
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Certified 90%
|
// Certified 90%
|
||||||
|
@ -153,6 +153,8 @@ public:
|
|||||||
TString& overwrite(const char* s, int pos = 0, int len = 0);
|
TString& overwrite(const char* s, int pos = 0, int len = 0);
|
||||||
// @cmember Inserisce la stringa s dalla posizione pos
|
// @cmember Inserisce la stringa s dalla posizione pos
|
||||||
TString& insert(const char* s, int pos = 0);
|
TString& insert(const char* s, int pos = 0);
|
||||||
|
// @cmember Aggiunge la stringa passata davanti
|
||||||
|
TString& add_front(const char* s);
|
||||||
|
|
||||||
// @cmember Elimina tutti i caratteri contenuti in k
|
// @cmember Elimina tutti i caratteri contenuti in k
|
||||||
TString& strip(const char* k);
|
TString& strip(const char* k);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user