00001
00002
00003
00004
00005
00006 //
00007
00008
00009
00010
00011
00012 #ifndef DBFIELD_H
00013 #define DBFIELD_H
00014
00015 #ifndef FXBASEOBJECT_H
00016 #include "FXBaseObject.h"
00017 #endif
00018 namespace FXEX {
00019
00020
00021
00022
00023 class FXAPI CurrencyField {
00024 private:
00025 void set(const FXString& s);
00026 FXString get() const;
00027 FXdouble currency;
00028 public:
00029 CurrencyField() : currency(0) {}
00030 CurrencyField(const CurrencyField& from) : currency(from.currency) {}
00031 CurrencyField(const FXString& s) { set(s); }
00032 CurrencyField(FXdouble d) : currency(d){}
00033 CurrencyField& operator=(const CurrencyField& from) { currency=from.currency; return *this; }
00034 CurrencyField& operator=(const FXString& s) { set(s); return *this; }
00035 CurrencyField& operator=(const FXdouble d) { currency=d; return *this; }
00036 operator FXString() const { return get(); }
00037 operator FXdouble() const { return currency; }
00038 FXString asString() const { return get(); }
00039 FXdouble asDouble() const { return currency; }
00040 virtual ~CurrencyField() {}
00041 };
00042
00043
00044
00045
00046
00047 class FXAPI DateField {
00048 private:
00049 void set(const FXString& s);
00050 FXString get() const;
00051 void setDate(FXint year, FXint month, FXint day);
00052 void getDate(FXint& year, FXint& month, FXint& day) const;
00053 FXint date;
00054 public:
00055 DateField() : date(0){}
00056 DateField(const DateField& from) : date(from.date){}
00057 DateField(const FXString& s) { set(s); }
00058 DateField(const FXint i) : date(i){}
00059 DateField& operator=(const DateField& from) { date=from.date; return *this; }
00060 DateField& operator=(const FXString& s) { set(s); return *this; }
00061 DateField& operator=(const FXint i) { date=i; return *this; }
00062 operator FXString() const { return get(); }
00063 operator FXint() const { return date; }
00064 FXString asString() const { return get(); }
00065 FXint asInt() const { return date; }
00066 virtual ~DateField() {}
00067 };
00068
00069
00070
00071
00072
00073 class FXAPI DbField : public FXBaseObject {
00074 FXDECLARE(DbField)
00075
00076 private:
00077 FXString name_;
00078 FXString title_;
00079 FXuint type_;
00080
00081 public:
00082 long onCmdValue(FXObject*,FXSelector,void*);
00083 long onUpdValue(FXObject*,FXSelector,void*);
00084 long onCmdOption(FXObject*,FXSelector,void*);
00085 long onUpdOption(FXObject*,FXSelector,void*);
00086 long onFocusIn(FXObject*,FXSelector,void*);
00087 long onFocusOut(FXObject*,FXSelector,void*);
00088
00089 public:
00090 enum {
00091 DT_VOID=0,
00092 DT_CHAR,
00093 DT_UCHAR,
00094 DT_SHORT,
00095 DT_USHORT,
00096 DT_INT,
00097 DT_UINT,
00098 DT_FLOAT,
00099 DT_DOUBLE,
00100 DT_STRING,
00101 DT_DATE,
00102 DT_CURRENCY,
00103 DT_LAST
00104 };
00105
00106 public:
00107 enum {
00108 ID_VALUE=FXBaseObject::ID_LAST,
00109 ID_OPTION=ID_VALUE+10001,
00110 ID_LAST=ID_OPTION+10000
00111 };
00112
00113 public:
00114
00115 DbField() : FXBaseObject(), type_(DT_VOID) { flags|=FLAG_ENABLED; }
00116
00117
00118 DbField(const FXString& name,const FXString& title,FXchar& value,FXObject* tgt=NULL,FXSelector sel=0) : FXBaseObject(tgt,sel), name_(name), title_(title), type_(DT_CHAR) {data=&value; flags|=FLAG_ENABLED;}
00119
00120
00121 DbField(const FXString& name,const FXString& title,FXuchar& value,FXObject* tgt=NULL,FXSelector sel=0) : FXBaseObject(tgt,sel), name_(name), title_(title), type_(DT_UCHAR) {data=&value; flags|=FLAG_ENABLED;}
00122
00123
00124 DbField(const FXString& name,const FXString& title,FXshort& value,FXObject* tgt=NULL,FXSelector sel=0) : FXBaseObject(tgt,sel), name_(name), title_(title), type_(DT_SHORT) {data=&value; flags|=FLAG_ENABLED;}
00125
00126
00127 DbField(const FXString& name,const FXString& title,FXushort& value,FXObject* tgt=NULL,FXSelector sel=0) : FXBaseObject(tgt,sel), name_(name), title_(title), type_(DT_USHORT) {data=&value; flags|=FLAG_ENABLED;}
00128
00129
00130 DbField(const FXString& name,const FXString& title,FXint& value,FXObject* tgt=NULL,FXSelector sel=0) : FXBaseObject(tgt,sel), name_(name), title_(title), type_(DT_INT) {data=&value; flags|=FLAG_ENABLED;}
00131
00132
00133 DbField(const FXString& name,const FXString& title,FXuint& value,FXObject* tgt=NULL,FXSelector sel=0) : FXBaseObject(tgt,sel), name_(name), title_(title), type_(DT_UINT) {data=&value; flags|=FLAG_ENABLED;}
00134
00135
00136 DbField(const FXString& name,const FXString& title,FXfloat& value,FXObject* tgt=NULL,FXSelector sel=0) : FXBaseObject(tgt,sel), name_(name), title_(title), type_(DT_FLOAT) {data=&value; flags|=FLAG_ENABLED;}
00137
00138
00139 DbField(const FXString& name,const FXString& title,FXdouble& value,FXObject* tgt=NULL,FXSelector sel=0) : FXBaseObject(tgt,sel), name_(name), title_(title), type_(DT_DOUBLE) {data=&value; flags|=FLAG_ENABLED;}
00140
00141
00142 DbField(const FXString& name,const FXString& title,FXString& value,FXObject* tgt=NULL,FXSelector sel=0) : FXBaseObject(tgt,sel), name_(name), title_(title), type_(DT_STRING) {data=&value; flags|=FLAG_ENABLED;}
00143
00144
00145 DbField(const FXString& name,const FXString& title,DateField& value,FXObject* tgt=NULL,FXSelector sel=0) : FXBaseObject(tgt,sel), name_(name), title_(title), type_(DT_DATE) {data=&value; flags|=FLAG_ENABLED;}
00146
00147
00148 DbField(const FXString& name,const FXString& title,CurrencyField& value,FXObject* tgt=NULL,FXSelector sel=0) : FXBaseObject(tgt,sel), name_(name), title_(title), type_(DT_CURRENCY) {data=&value; flags|=FLAG_ENABLED;}
00149
00150
00151 FXString getName() const { return name_; }
00152
00153
00154 FXString getTitle() const { return title_; }
00155
00156
00157 FXuint getType() const { return type_; }
00158
00159
00160 FXbool hasFocus() const { return (flags&FLAG_FOCUSED)!=0; }
00161
00162
00163 void setFocus();
00164
00165
00166 void killFocus();
00167
00168
00169 FXbool isEditable() const { return (flags&FLAG_READONLY)==0; }
00170
00171
00172 void setEditable(FXbool edit=TRUE) { if(edit) flags&=~FLAG_READONLY; else flags|=FLAG_READONLY; }
00173
00174
00175 virtual ~DbField(){}
00176 };
00177
00178 }
00179 #endif // DBFIELD_H