1996-09-05 14:14:31 +00:00
|
|
|
#include <varmask.h>
|
|
|
|
|
1996-05-08 12:27:33 +00:00
|
|
|
const TString& TVariable_mask::get(short fld_id) const
|
|
|
|
{
|
|
|
|
if (present( fld_id ))
|
|
|
|
return TMask::get( fld_id );
|
1996-09-05 14:14:31 +00:00
|
|
|
else
|
1998-01-28 08:45:59 +00:00
|
|
|
return EMPTY_STRING;
|
1996-05-08 12:27:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void TVariable_mask::set_handler(short fld_id, CONTROL_HANDLER handler)
|
|
|
|
{
|
|
|
|
if(present( fld_id ))
|
|
|
|
TMask::set_handler( fld_id, handler );
|
|
|
|
}
|
|
|
|
|
2007-03-06 16:37:44 +00:00
|
|
|
void TVariable_mask::set(short fld_id, const char* str, byte hit)
|
1996-05-08 12:27:33 +00:00
|
|
|
{
|
|
|
|
if(present( fld_id ))
|
|
|
|
TMask::set( fld_id, str, hit );
|
|
|
|
}
|
|
|
|
|
|
|
|
void TVariable_mask::show(short fld_id, bool on )
|
|
|
|
{
|
2001-04-30 15:04:10 +00:00
|
|
|
if(fld_id < 0 || present( fld_id ) )
|
1996-05-08 12:27:33 +00:00
|
|
|
TMask::show( fld_id, on );
|
|
|
|
}
|
|
|
|
|
2006-12-13 16:22:33 +00:00
|
|
|
void TVariable_mask::reset(short fld_id)
|
|
|
|
{
|
|
|
|
if(fld_id <= 0 || present( fld_id ) )
|
|
|
|
TMask::reset( fld_id);
|
|
|
|
}
|
|
|
|
|
1996-05-08 12:27:33 +00:00
|
|
|
void TVariable_mask::enable(short fld_id, bool on )
|
|
|
|
{
|
2001-04-30 15:04:10 +00:00
|
|
|
if(fld_id < 0 ||present( fld_id ))
|
1996-05-08 12:27:33 +00:00
|
|
|
TMask::enable( fld_id, on );
|
|
|
|
}
|
|
|
|
|
|
|
|
void TVariable_mask::check_field( short fld_id )
|
|
|
|
{
|
|
|
|
if (present( fld_id ))
|
|
|
|
TMask::check_field(fld_id);
|
|
|
|
}
|
|
|
|
|
|
|
|
TMask_field* TVariable_mask::parse_field(TScanner& scanner)
|
|
|
|
{
|
|
|
|
if (scanner.key() == "SP")
|
|
|
|
return new TVariable_sheet_field(this);
|
|
|
|
|
|
|
|
return TMask::parse_field(scanner);
|
|
|
|
}
|
|
|
|
|
|
|
|
TVariable_mask::TVariable_mask(const char* name, int num, int max) : TMask()
|
|
|
|
{
|
|
|
|
if (name && *name)
|
|
|
|
read_mask(name, num, max);
|
|
|
|
}
|
|
|
|
|
1998-11-04 18:04:26 +00:00
|
|
|
TVariable_mask::TVariable_mask() : TMask()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
1996-05-08 12:27:33 +00:00
|
|
|
TMask& TVariable_sheet_field::sheet_mask() const
|
2008-11-14 00:40:30 +00:00
|
|
|
{
|
|
|
|
return sheet_row_mask(selected());
|
|
|
|
}
|
|
|
|
|
|
|
|
TMask& TVariable_sheet_field::sheet_row_mask(int row) const
|
1996-05-08 12:27:33 +00:00
|
|
|
{
|
1996-09-05 14:14:31 +00:00
|
|
|
TMask & m = TSheet_field::sheet_mask();
|
2008-11-14 00:40:30 +00:00
|
|
|
|
|
|
|
if (_getmask != NULL && row >= 0 && row < items())
|
1996-09-05 14:14:31 +00:00
|
|
|
{
|
2008-11-14 00:40:30 +00:00
|
|
|
TMask & vm = *_getmask(row, m);
|
1996-09-05 14:14:31 +00:00
|
|
|
|
|
|
|
vm.set_sheet((TSheet_field *) this);
|
|
|
|
return vm;
|
|
|
|
}
|
1996-05-08 12:27:33 +00:00
|
|
|
return m;
|
2008-11-14 00:40:30 +00:00
|
|
|
}
|
|
|
|
|
1996-09-05 14:14:31 +00:00
|
|
|
void TVariable_sheet_field::post_insert(int r)
|
|
|
|
{
|
|
|
|
if (!active() || _getmask == NULL || r < 0 || r >= items())
|
|
|
|
return;
|
|
|
|
const TMask& m = *_getmask(r, TSheet_field::sheet_mask());
|
|
|
|
|
|
|
|
for (short id = FIRST_FIELD; id <= _last_column_id ; id++)
|
|
|
|
{
|
|
|
|
const int col = cid2index(id);
|
|
|
|
if (column_enabled(col))
|
|
|
|
{
|
|
|
|
int pos = m.id2pos(id);
|
|
|
|
|
|
|
|
if (pos >= 0)
|
|
|
|
{
|
|
|
|
for(int dlg = id; pos >= 0; pos = m.id2pos(dlg += 100))
|
|
|
|
{
|
|
|
|
const TMask_field& f = m.fld(pos);
|
|
|
|
if (f.shown() || f.ghost())
|
|
|
|
{
|
|
|
|
const bool on = f.enabled();
|
|
|
|
enable_cell(r, col, on);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
disable_cell(r, col);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1996-05-08 12:27:33 +00:00
|
|
|
TVariable_sheet_field::~TVariable_sheet_field()
|
|
|
|
{
|
2004-03-12 15:35:52 +00:00
|
|
|
TSheet_field::sheet_mask();
|
1996-05-08 12:27:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|