Patch level : 12.00 1396

Files correlati     : ve0.exe fp0.exe fp0300a.msk cg2.exe cg5.exe
Commento                :
Se non è attiva l'analitica non mostra la pagina relativa
IL ripristino funziona anche senza la data di ultima stampa
Pulsante per segnare fatture come inviate
This commit is contained in:
Alessandro Bonazzi 2025-07-23 08:11:34 +02:00
parent 50d6211398
commit faf43c2a8d
2 changed files with 34 additions and 16 deletions

View File

@ -83,6 +83,7 @@ void TMask::init_mask()
}
_toolwin = _toolbar = _notebook = _single = NULL_WIN;
memset(_pagewin, 0, sizeof(_pagewin)); // Azzero lista pagine
memset(_act_pagewin, 0, sizeof(_act_pagewin)); // Azzero lista pagine
}
WINDOW TMask::page_win(int p) const
@ -90,7 +91,7 @@ WINDOW TMask::page_win(int p) const
if (p >= MAX_PAGES)
return p == MAX_PAGES ? toolwin() : toolbar();
if (p >= 0 && p < _pages)
return _pagewin[p];
return _act_pagewin[p];
return p <= 0 ? win() : NULL_WIN;
}
@ -444,7 +445,7 @@ void TMask::set_focus_field(short id)
if (f.parent() != curr_win()) // Controllo se devo cambiar pagina
{
p = find_parent_page(f);
if (p < 0 || p >= _pages || !page_enabled(p))
if (p < 0 || p >= _pages) // || !page_enabled(p))
p = 0;
}
show_page(p);
@ -535,34 +536,43 @@ void TMask::enable_page(
{
if (page > 0 && page < _pages) // Non posso spegnere la prima pagina
{
if (_enabled[page] != on)
if (_enabled[page] != on)
{
memset(_act_pagewin, 0, sizeof(_act_pagewin)); // Azzero lista pagine
CHECK(_notebook, "Can't find an useful notebook");
const short tabs = xvt_notebk_get_num_tabs(_notebook);
if (on)
{
// Riaggiungo i tab buttons (normalmente tabs == page)
for (short i = tabs; i < _pages; i++)
{
short i;
for (int p = 0; _pagewin[p] != NULL_WIN; p++)
_act_pagewin[p] = _pagewin[p];
for (i = tabs; _pagewin[i] != NULL_WIN; i++)
{
_enabled.set(i, true);
xvt_notebk_add_page(_notebook, _pagewin[i], NULL, NULL, i);
}
_pages = i;
}
else
{
// Elimino i tab buttons (normalmente tabs == _pages)
for (short i = tabs-1; i >= page; i--)
for (int p = 0; p < page; p++)
_act_pagewin[p] = _pagewin[p];
for (short i = tabs-1; i >= page; i--)
{
_enabled.set(i, false);
xvt_notebk_rem_tab(_notebook, i);
}
_page = -1;
_pages = page;
}
}
}
}
// @mfunc Abilita/disabilita una pagina
// @mfunc Abilita/disabilita una pagina
void TMask::enable_single_page(
byte page, // @parm Pagina da abilitare/disabilitare
bool on) // @parm Operazione da svolgere:
@ -574,15 +584,21 @@ void TMask::enable_single_page(
{
CHECK(_notebook, "Can't find an useful notebook");
const short tabs = xvt_notebk_get_num_tabs(_notebook);
int npages = 0;
_enabled.set(page, on);
for (int p = tabs - 1; p >= 0; p--)
memset(_act_pagewin, 0, sizeof(_act_pagewin)); // Azzero lista pagine
for (int p = tabs - 1 ; p >= 0; p--)
xvt_notebk_rem_tab(_notebook, p);
for (int p = 0; p < _pages; p++)
for (int p = 0; _pagewin[p] != NULL_WIN; p++)
if (_enabled[p])
{
xvt_notebk_add_page(_notebook, _pagewin[p], NULL, NULL, p);
_act_pagewin[npages++] = _pagewin[p];
}
if (!on)
_page = -1;
_pages = npages;
}
}
@ -649,8 +665,8 @@ bool TMask::check_fields()
if (f.parent() != curpage)
{
const int pa = find_parent_page(f);
if (!page_enabled(pa))
break; // Page disabled: end of test
// if (!page_enabled(pa))
// break; // Page disabled: end of test
curpage = f.parent(); // Update current page
}
if (sheet) f.set_dirty(); // Force check in sheet masks
@ -1425,7 +1441,7 @@ WINDOW TMask::create_book(bool single)
CHECK(_notebook == NULL_WIN, "Single and notebook?");
_single = create_interface(parent, 0, 0, 0, 0, "", this);
xvt_pane_add(parent, _single, "_MainSingle_", 0, 0);
_pagewin[0] = _single;
_act_pagewin[0] = _pagewin[0] = _single;
_pages = 1;
}
else
@ -1526,19 +1542,20 @@ void TMask::insert_page(WINDOW page, int dove)
create_book(false);
memset(_pagewin, 0, sizeof(_pagewin)); // Azzero lista pagine
memset(_act_pagewin, 0, sizeof(_act_pagewin)); // Azzero lista pagine
if (_notebook != NULL_WIN) // property sheet
{
xvt_notebk_add_page(_notebook, page, NULL, NULL, dove);
_pages = xvt_notebk_get_num_tabs(_notebook);
// Ricostruisco lista pagine
for (short p = 0; p < _pages; p++)
_pagewin[p] = xvt_notebk_get_page(_notebook, p);
_act_pagewin[p] = _pagewin[p] = xvt_notebk_get_page(_notebook, p);
}
else // single page
{
CHECK(win() == NULL_WIN, "One single main page, please!");
set_win(page);
_pagewin[0] = page; // Assegno la prima ed unica pagina
_act_pagewin[0] = _pagewin[0] = page; // Assegno la prima ed unica pagina
_pages = 1;
}
}
@ -1579,7 +1596,7 @@ void TMask::next_page(
if (p != 0)
{
const int k = (p < 1000) ? _page+p : p-1000;
if (k < 0 || k >= _pages || !page_enabled(k))
if (k < 0 || k >= _pages) // || !page_enabled(k))
{
beep();
return;

View File

@ -72,7 +72,8 @@ class TMask : public TWindow
// @cmember:(INTERNAL) Windows delle pagine
WINDOW _toolwin, _notebook, _single, _toolbar;
WINDOW _pagewin[MAX_PAGES];
WINDOW _pagewin[MAX_PAGES + 1];
WINDOW _act_pagewin[MAX_PAGES + 1];
// @cmember:(INTERNAL) Numero della maschera all'interno del file sorgente
int _mask_num;