Patch level : 12.0 900

Files correlati     : ca0.exe ca0400a.msk
Commento            :

Sistemato il pulsante ricerca avanti, inietro nelle anagrafiche dell'analitica
This commit is contained in:
Alessandro Bonazzi 2019-11-17 21:02:29 +01:00
parent 466c4bad25
commit 2456f926be
5 changed files with 104 additions and 35 deletions

View File

@ -97,6 +97,7 @@ class TAnalisi_app : public TAnal_app
TAnalisi_rec * _rows; TAnalisi_rec * _rows;
int _maxlev; int _maxlev;
bool _riclassificato; bool _riclassificato;
TPiano_conti_anal_msk * _msk;
protected: protected:
virtual const char * extra_modules() const {return "ci|cm";} //funziona anche con autorizzazione CM virtual const char * extra_modules() const {return "ci|cm";} //funziona anche con autorizzazione CM
@ -119,6 +120,9 @@ protected:
virtual bool create(); virtual bool create();
virtual bool user_create(); virtual bool user_create();
virtual bool user_destroy(); virtual bool user_destroy();
virtual bool has_filtered_cursor() const { return true; }
TPiano_conti_anal_msk & mask() const { return *_msk; };
virtual TCursor * get_filtered_cursor() const { return mask().efield(F_KEY1 + _maxlev - 1).browse()->cursor();}
}; };
void TAnalisi_app::rec2row(const TMask& m) void TAnalisi_app::rec2row(const TMask& m)
@ -243,7 +247,7 @@ void TAnalisi_app::init_indbil(TMask& mask)
int level = 0; int level = 0;
for (level = _maxlev; level > 0; level--) for (level = _maxlev; level > 0; level--)
{ {
if (mask.field(F_KEY1+level).shown()) if (mask.field(F_KEY1 + level - 1).shown())
break; break;
} }
enabled = level < _maxlev || _riclassificato; // Le foglie sono sempre disabilitate enabled = level < _maxlev || _riclassificato; // Le foglie sono sempre disabilitate
@ -269,7 +273,7 @@ void TAnalisi_app::init_indbil(TMask& mask)
void TAnalisi_app::init_modify_mode(TMask& mask) void TAnalisi_app::init_modify_mode(TMask& mask)
{ {
const short id = ((TPiano_conti_anal_msk &)mask).get_field_id(_maxlev, 1); const short id = ((TPiano_conti_anal_msk &)mask).get_field_id(_maxlev - 1, 1);
mask.enable_page(1, mask.get(id).not_empty()); mask.enable_page(1, mask.get(id).not_empty());
TAnal_app::init_modify_mode(mask); TAnal_app::init_modify_mode(mask);
@ -278,7 +282,7 @@ void TAnalisi_app::init_modify_mode(TMask& mask)
void TAnalisi_app::init_insert_mode(TMask& mask) void TAnalisi_app::init_insert_mode(TMask& mask)
{ {
const short id = ((TPiano_conti_anal_msk &)mask).get_field_id(_maxlev, 1); const short id = ((TPiano_conti_anal_msk &)mask).get_field_id(_maxlev - 1, 1);
mask.enable_page(1, mask.get(id).not_empty()); mask.enable_page(1, mask.get(id).not_empty());
TAnal_app::init_insert_mode(mask); TAnal_app::init_insert_mode(mask);
@ -321,16 +325,21 @@ bool TAnalisi_app::user_create()
if (ok) if (ok)
{ {
_rows = new TAnalisi_rec(); _rows = new TAnalisi_rec();
TPiano_conti_anal_msk * m = (TPiano_conti_anal_msk * ) get_mask(0); const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_PCONANA);
for (int i = 0; i < 4; i++) _msk = (TPiano_conti_anal_msk *)get_mask(0);
_maxlev = mci.levels();
set_search_field(F_KEY1 + _maxlev - 1);
if (_maxlev > 1)
{ {
const short id = m->get_field_id(i, 1); TBrowse * b = mask().efield(F_KEY1 + _maxlev - 1).browse();
if (id <= 0 || m->id2pos(id) < 0) TString inp(b->get_input_fields());
break;
_maxlev = i; b->set_filter("");
inp.strip("@");
b->set_input_fields(inp);
} }
set_search_field(F_DES1 + _maxlev - 1);
} }
return ok; return ok;
} }

View File

@ -35,7 +35,7 @@ BEGIN
ITEM "2|2. Passivita'" ITEM "2|2. Passivita'"
ITEM "3|3. Costi" ITEM "3|3. Costi"
ITEM "4|4. Ricavi" ITEM "4|4. Ricavi"
// ITEM "5|5. Conti d'ordine" ITEM "5|5. Conti d'ordine"
FIELD INDBIL FIELD INDBIL
END END

View File

@ -6,6 +6,7 @@
#include "calib01.h" #include "calib01.h"
#include "ca0500a.h" #include "ca0500a.h"
#include "cdc.h" #include "cdc.h"
#include "calibmsk.h"
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
//MASCHERA //MASCHERA
@ -55,6 +56,7 @@ class TCdC_app : public TAnal_app
{ {
int _maxlev; int _maxlev;
bool _has_filter; bool _has_filter;
TCdC_anal_msk * _msk;
protected: protected:
virtual bool filtered() const; virtual bool filtered() const;
@ -63,6 +65,8 @@ protected:
virtual void init_insert_mode(TMask& mask); virtual void init_insert_mode(TMask& mask);
virtual bool protected_record(TRectype& record); virtual bool protected_record(TRectype& record);
virtual TSimple_anal_msk* create_mask() const { return new TCdC_anal_msk; } virtual TSimple_anal_msk* create_mask() const { return new TCdC_anal_msk; }
TCdC_anal_msk & mask() const { return *_msk; };
virtual TCursor * get_filtered_cursor() const { return mask().efield(F_KEY1 + _maxlev - 1).browse()->cursor(); }
virtual bool user_create(); virtual bool user_create();
}; };
@ -108,6 +112,10 @@ void TCdC_app::init_insert_mode(TMask& mask)
bool TCdC_app::user_create() bool TCdC_app::user_create()
{ {
const bool ok = TAnal_app::user_create();
if (ok)
{
const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_CDC); const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_CDC);
_maxlev = mci.levels(); _maxlev = mci.levels();
@ -116,9 +124,21 @@ bool TCdC_app::user_create()
//eventuali filtri per utente //eventuali filtri per utente
_has_filter = cache().get("%AUC", user(), "S1").full(); _has_filter = cache().get("%AUC", user(), "S1").full();
// set_search_field(F_CDCPDA1 + _maxlev - 1);
return TAnal_app::user_create(); _msk = (TCdC_anal_msk *)get_mask(0);
set_search_field(F_KEY1 + _maxlev - 1);
if (_maxlev > 1)
{
TBrowse * b = mask().efield(F_KEY1 + _maxlev - 1).browse();
TString inp(b->get_input_fields());
inp.strip("@");
b->set_input_fields(inp);
}
}
return ok;
} }
int ca0500(int argc, char* argv[]) int ca0500(int argc, char* argv[])

View File

@ -7,6 +7,8 @@
#include "ca0600a.h" #include "ca0600a.h"
#include "commesse.h" #include "commesse.h"
#include "cfcms.h" #include "cfcms.h"
#include "calibmsk.h"
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
//MASCHERA //MASCHERA
@ -56,6 +58,7 @@ class TCms_app : public TAnal_app
{ {
int _maxlev; int _maxlev;
bool _has_filter; bool _has_filter;
TCms_anal_msk * _msk;
protected: protected:
void fin2row(const TMask& m); void fin2row(const TMask& m);
@ -76,6 +79,8 @@ protected:
virtual void init_insert_mode(TMask& mask); virtual void init_insert_mode(TMask& mask);
virtual bool protected_record(TRectype& record); virtual bool protected_record(TRectype& record);
virtual TSimple_anal_msk* create_mask() const { return new TCms_anal_msk; } virtual TSimple_anal_msk* create_mask() const { return new TCms_anal_msk; }
TCms_anal_msk & mask() const { return *_msk; };
virtual TCursor * get_filtered_cursor() const { return mask().efield(F_KEY1 + _maxlev - 1).browse()->cursor(); }
virtual bool user_create(); virtual bool user_create();
public: public:
@ -398,6 +403,10 @@ void TCms_app::init_insert_mode(TMask& mask)
bool TCms_app::user_create() bool TCms_app::user_create()
{ {
const bool ok = TAnal_app::user_create();
if (ok)
{
const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_COMMESSE); const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_COMMESSE);
_maxlev = mci.levels(); _maxlev = mci.levels();
@ -407,7 +416,19 @@ bool TCms_app::user_create()
//eventuali filtri per utente //eventuali filtri per utente
_has_filter = cache().get("%AUC", user(), "S0").full(); _has_filter = cache().get("%AUC", user(), "S0").full();
return TAnal_app::user_create(); _msk = (TCms_anal_msk *)get_mask(0);
set_search_field(F_KEY1 + _maxlev - 1);
if (_maxlev > 1)
{
TBrowse * b = mask().efield(F_KEY1 + _maxlev - 1).browse();
TString inp(b->get_input_fields());
inp.strip("@");
b->set_input_fields(inp);
}
}
return ok;
} }
int ca0600(int argc, char* argv[]) int ca0600(int argc, char* argv[])

View File

@ -67,6 +67,8 @@ TFsc_anal_msk::TFsc_anal_msk()
class TFsc_app : public TAnal_app class TFsc_app : public TAnal_app
{ {
bool _has_filter; bool _has_filter;
int _maxlev;
TFsc_anal_msk * _msk;
protected: protected:
virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM
@ -74,6 +76,8 @@ protected:
virtual bool filtered() const; virtual bool filtered() const;
virtual bool protected_record(TRectype& record); virtual bool protected_record(TRectype& record);
virtual TSimple_anal_msk* create_mask() const { return new TFsc_anal_msk; } virtual TSimple_anal_msk* create_mask() const { return new TFsc_anal_msk; }
TFsc_anal_msk & mask() const { return *_msk; };
virtual TCursor * get_filtered_cursor() const { return mask().efield(F_KEY1 + _maxlev - 1).browse()->cursor(); }
virtual bool user_create(); virtual bool user_create();
}; };
@ -120,14 +124,29 @@ bool TFsc_app::protected_record(TRectype& record)
bool TFsc_app::user_create() bool TFsc_app::user_create()
{ {
const bool ok = TAnal_app::user_create();
if (ok)
{
const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_FASI); const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_FASI);
_maxlev = mci.levels();
if (mci.levels() <= 0) if (mci.levels() <= 0)
return error_box(TR("Le fasi non sono state configurate")); return error_box(TR("Le fasi non sono state configurate"));
//eventuali filtri per utente //eventuali filtri per utente
_has_filter = cache().get("%AUC", user(), "S2").full(); _has_filter = cache().get("%AUC", user(), "S2").full();
return TAnal_app::user_create(); _msk = (TFsc_anal_msk *)get_mask(0);
set_search_field(F_KEY1 + _maxlev - 1);
TBrowse * b = mask().efield(F_KEY1 + _maxlev - 1).browse();
TString inp(b->get_input_fields());
inp.strip("@");
b->set_input_fields(inp);
}
return ok;
} }
int ca0700(int argc, char* argv[]) int ca0700(int argc, char* argv[])