Aggiunta picture_data ai campi TDate_field in modo da funzionare bene
anche negli spreadsheet (Ora si puo' scrivere 'domani' anche in una cella: che figata! git-svn-id: svn://10.65.10.50/trunk@1222 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
d04c365081
commit
ed35f80b87
include
@ -2449,72 +2449,87 @@ TDate_field::TDate_field(TMask* m) : TEdit_field(m)
|
||||
}
|
||||
|
||||
|
||||
const char* TDate_field::format_data(const char* datum, bool* ch)
|
||||
{
|
||||
bool changed = FALSE;
|
||||
// TFixed_string data(get_window_data(), 15);
|
||||
TFixed_string data(datum, 15);
|
||||
data.trim();
|
||||
if (data.not_empty())
|
||||
{
|
||||
if (isdigit(data[0]))
|
||||
{
|
||||
if (data.len() == 6) // Fix century (for this millenium only)
|
||||
{
|
||||
data.insert("19", 4);
|
||||
changed = TRUE;
|
||||
}
|
||||
for (int meno = 2; meno <= 5; meno += 3)
|
||||
if (data[meno] != '-')
|
||||
{
|
||||
data.insert("-", meno);
|
||||
changed = TRUE;
|
||||
}
|
||||
if (data.len() == 8) // Fix century (for this millenium only)
|
||||
{
|
||||
data.insert("19", 6);
|
||||
changed = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TDate g(TODAY);
|
||||
data.upper();
|
||||
if (data == "IERI")
|
||||
{
|
||||
--g;
|
||||
changed = TRUE;
|
||||
}
|
||||
else
|
||||
if (data == "DOMANI")
|
||||
{
|
||||
++g;
|
||||
changed = TRUE;
|
||||
}
|
||||
TString16 gstring(g.string());
|
||||
if (data == "PRIMO")
|
||||
{
|
||||
gstring.overwrite("01-01", 0);
|
||||
changed = TRUE;
|
||||
}
|
||||
else
|
||||
if (data == "NATALE")
|
||||
{
|
||||
gstring.overwrite("25-12", 0);
|
||||
changed = TRUE;
|
||||
}
|
||||
else
|
||||
if (data == "ULTIMO")
|
||||
{
|
||||
gstring.overwrite("31-12", 0);
|
||||
changed = TRUE;
|
||||
}
|
||||
else
|
||||
if (data == "OGGI") changed = TRUE;
|
||||
if (changed) data = gstring;
|
||||
}
|
||||
}
|
||||
if (ch)
|
||||
*ch = changed;
|
||||
fpark = data;
|
||||
return fpark;
|
||||
}
|
||||
|
||||
bool TDate_field::on_key(KEY key)
|
||||
{
|
||||
if (to_check(key))
|
||||
{
|
||||
TFixed_string data(get_window_data(), 15);
|
||||
bool changed = FALSE;
|
||||
|
||||
TFixed_string data(format_data(get_window_data(),&changed), 15);
|
||||
data.trim();
|
||||
if (data.not_empty())
|
||||
{
|
||||
bool changed = FALSE;
|
||||
if (isdigit(data[0]))
|
||||
{
|
||||
if (data.len() == 6) // Fix century (for this millenium only)
|
||||
{
|
||||
data.insert("19", 4);
|
||||
changed = TRUE;
|
||||
}
|
||||
for (int meno = 2; meno <= 5; meno += 3)
|
||||
if (data[meno] != '-')
|
||||
{
|
||||
data.insert("-", meno);
|
||||
changed = TRUE;
|
||||
}
|
||||
if (data.len() == 8) // Fix century (for this millenium only)
|
||||
{
|
||||
data.insert("19", 6);
|
||||
changed = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TDate g(TODAY);
|
||||
data.upper();
|
||||
if (data == "IERI")
|
||||
{
|
||||
--g;
|
||||
changed = TRUE;
|
||||
}
|
||||
else
|
||||
if (data == "DOMANI")
|
||||
{
|
||||
++g;
|
||||
changed = TRUE;
|
||||
}
|
||||
TString16 gstring(g.string());
|
||||
if (data == "PRIMO")
|
||||
{
|
||||
gstring.overwrite("01-01", 0);
|
||||
changed = TRUE;
|
||||
}
|
||||
else
|
||||
if (data == "NATALE")
|
||||
{
|
||||
gstring.overwrite("25-12", 0);
|
||||
changed = TRUE;
|
||||
}
|
||||
else
|
||||
if (data == "ULTIMO")
|
||||
{
|
||||
gstring.overwrite("31-12", 0);
|
||||
changed = TRUE;
|
||||
}
|
||||
else
|
||||
if (data == "OGGI") changed = TRUE;
|
||||
if (changed) data = gstring;
|
||||
}
|
||||
|
||||
TDate d(data);
|
||||
if (!d.ok())
|
||||
{
|
||||
@ -2552,6 +2567,24 @@ void TDate_field::set_window_data(const char * data)
|
||||
TEdit_field::set_window_data(data);
|
||||
}
|
||||
|
||||
const char* TDate_field::picture_data(const char* data, bool video)
|
||||
{
|
||||
if (video)
|
||||
{
|
||||
// data = format(data);
|
||||
data = format_data(data);
|
||||
xvt_vobj_set_title(win(), (char*)data);
|
||||
return get_window_data();
|
||||
}
|
||||
|
||||
set_window_data(data);
|
||||
TMask_field::get_window_data();
|
||||
|
||||
if (_flags.trim) fpark.trim();
|
||||
return fpark;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Real_field
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: maskfld.h,v 1.26 1995-02-28 10:44:16 villa Exp $ */
|
||||
/* $Id: maskfld.h,v 1.27 1995-04-10 15:10:08 nik Exp $ */
|
||||
#ifndef __MASKFLD_H
|
||||
#define __MASKFLD_H
|
||||
|
||||
@ -406,15 +406,18 @@ public:
|
||||
//@END
|
||||
|
||||
class TDate_field : public TEdit_field
|
||||
{
|
||||
{
|
||||
protected:
|
||||
// @FPROT
|
||||
const char* format_data(const char* data,bool* changed=NULL);
|
||||
|
||||
virtual word class_id() const;
|
||||
virtual void create(WINDOW parent);
|
||||
virtual bool on_key(KEY key);
|
||||
virtual const char* get_window_data() const;
|
||||
virtual void set_window_data(const char* data);
|
||||
|
||||
virtual const char* picture_data(const char* data, bool video);
|
||||
|
||||
public:
|
||||
// @FPUB
|
||||
void parse_head(TScanner& scanner);
|
||||
|
Loading…
x
Reference in New Issue
Block a user