![]() |
Main Page
Class Hierarchy
Alphabetical List
Compound List
File List
Compound Members
![]() |
00001 ///////////////////////////////////////////////////////////////////////////// 00002 // 00003 // DbField 00004 // 00005 ///////////////////////////////////////////////////////////////////////////// 00006 // 00007 // Hakki Dogusan 00008 // dogusanh@tr.net 00009 // http://www.dynaset.org/dogusanh 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 * CurrencyField is a field type (which holds a currency value) for use with the DB Control object 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 * DateField is a field type (which holds dates) for use with the DB Control object 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 * DbField is the field container for use with the DB Control object 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, /// Will cause the DbField to ask sender for value 00109 ID_OPTION=ID_VALUE+10001, /// ID_OPTION+i will set the value to i where -10000<=i<=10000 00110 ID_LAST=ID_OPTION+10000 00111 }; 00112 00113 public: 00114 /// no data 00115 DbField() : FXBaseObject(), type_(DT_VOID) { flags|=FLAG_ENABLED; } 00116 00117 /// CHAR data 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 /// UCHAR data 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 /// SHORT data 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 /// USHORT data 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 /// INT data 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 /// UINT data 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 /// FLOAT data 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 /// DOUBLE data 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 /// STRING data 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 /// DateField data 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 /// CurrencyField data 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 /// get name of field 00151 FXString getName() const { return name_; } 00152 00153 /// get title of field 00154 FXString getTitle() const { return title_; } 00155 00156 /// get field type 00157 FXuint getType() const { return type_; } 00158 00159 /// is field focused 00160 FXbool hasFocus() const { return (flags&FLAG_FOCUSED)!=0; } 00161 00162 /// set field focused 00163 void setFocus(); 00164 00165 /// stop focus on field 00166 void killFocus(); 00167 00168 /// is field editable 00169 FXbool isEditable() const { return (flags&FLAG_READONLY)==0; } 00170 00171 /// set field editable 00172 void setEditable(FXbool edit=TRUE) { if(edit) flags&=~FLAG_READONLY; else flags|=FLAG_READONLY; } 00173 00174 /// dtor 00175 virtual ~DbField(){} 00176 }; 00177 00178 } // namespace FXEX 00179 #endif // DBFIELD_H