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 <xvtility.h>
|
||||
|
||||
#define DAFILTRO "DA_"
|
||||
#define AFILTRO "A_"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TSheet_control
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -1671,40 +1674,51 @@ bool TCursor_sheet::filter_dialog()
|
||||
TMask m(TR("Filtro"), 1, 78, kfields+5);
|
||||
m.add_button_tool(DLG_OK, "", TOOL_OK);
|
||||
m.add_button_tool(DLG_CANCEL, "", TOOL_CANCEL);
|
||||
for (int i = 0; i < kfields; i++)
|
||||
{
|
||||
const int nf = k0.FieldSeq[i] % MaxFields;
|
||||
const char* fname = rec.fieldname(nf);
|
||||
const TFieldtypes ft = rec.type(fname);
|
||||
TString16 prompt = fname; prompt.left_just(12);
|
||||
TString4 flags;
|
||||
switch (ft)
|
||||
{
|
||||
case _alfafld:
|
||||
case _charfld:
|
||||
m.add_string(101+i, 0, prompt, 1, i+1, rec.length(fname), flags).set_field(fname);
|
||||
break;
|
||||
case _intzerofld:
|
||||
case _longzerofld:
|
||||
flags << "Z";
|
||||
case _wordfld:
|
||||
case _intfld:
|
||||
case _longfld:
|
||||
m.add_number(101+i, 0, prompt, 1, i+1, rec.length(fname), flags).set_field(fname);
|
||||
break;
|
||||
case _datefld:
|
||||
m.add_date(101+i, 0, prompt, 1, i+1, flags).set_field(fname);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
int max_len = 0;
|
||||
for (int j = 0; j < 2; j++)
|
||||
{
|
||||
for (int i = 0; i < kfields; i++)
|
||||
{
|
||||
const int nf = k0.FieldSeq[i] % MaxFields;
|
||||
const char* fname = rec.fieldname(nf);
|
||||
const TFieldtypes ft = rec.type(fname);
|
||||
TString16 prompt = fname; prompt.left_just(12);
|
||||
TString4 flags;
|
||||
TString ffname = get_tmp_string() << (j ? AFILTRO : DAFILTRO) << fname;
|
||||
switch (ft)
|
||||
{
|
||||
case _alfafld:
|
||||
case _charfld:
|
||||
m.add_string(101 + i + j * 20, 0, prompt, 1 + (j * max_len), i + 1, rec.length(fname), flags).set_field(ffname);
|
||||
break;
|
||||
case _intzerofld:
|
||||
case _longzerofld:
|
||||
flags << "Z";
|
||||
case _wordfld:
|
||||
case _intfld:
|
||||
case _longfld:
|
||||
m.add_number(101 + i + j * 20, 0, prompt, 1 + (j * max_len), i + 1, rec.length(fname), flags).set_field(ffname);
|
||||
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++)
|
||||
{
|
||||
const int nf = k0.FieldSeq[i] % MaxFields;
|
||||
const char* fname = rec.fieldname(nf);
|
||||
TMask_field* f = m.find_by_fieldname(fname);
|
||||
const char * fname = rec.fieldname(nf);
|
||||
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)
|
||||
f->set(rec.get(fname));
|
||||
}
|
||||
@ -1712,17 +1726,26 @@ bool TCursor_sheet::filter_dialog()
|
||||
if (m.run() == K_ENTER)
|
||||
{
|
||||
rec.zero();
|
||||
for (int i = 0; i < kfields; i++)
|
||||
{
|
||||
const int nf = k0.FieldSeq[i] % MaxFields;
|
||||
const char* fname = rec.fieldname(nf);
|
||||
const TMask_field* f = m.find_by_fieldname(fname);
|
||||
if (f) rec.put(fname, f->get());
|
||||
}
|
||||
TRectype torec = _cursor->curr();
|
||||
torec.zero();
|
||||
TRectype* prec = &rec;
|
||||
|
||||
for (int j = 0; j < 2; j++)
|
||||
{
|
||||
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;
|
||||
_cursor->freeze(false);
|
||||
_cursor->setregion(rec, rec);
|
||||
_cursor->setregion(rec, torec);
|
||||
_cursor->items();
|
||||
_cursor->freeze(true);
|
||||
force_update();
|
||||
|
@ -1013,6 +1013,14 @@ TString& TString::insert(
|
||||
strcpy_s(&_str[pos+l], _size-(pos+l)+1, spark); // Aggiungi spark
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
TString & TString::add_front(const char * s)
|
||||
{
|
||||
const int l = strlen(s);
|
||||
lpad(len() + l);
|
||||
overwrite(s);
|
||||
return *this;
|
||||
}
|
||||
|
||||
// Certified 90%
|
||||
|
@ -153,6 +153,8 @@ public:
|
||||
TString& overwrite(const char* s, int pos = 0, int len = 0);
|
||||
// @cmember Inserisce la stringa s dalla posizione pos
|
||||
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
|
||||
TString& strip(const char* k);
|
||||
|
Loading…
x
Reference in New Issue
Block a user