00001
00002
00003
00004
00005
00006 //
00007
00008
00009
00010
00011
00012 #ifndef DBCONTROL_H
00013 #define DBCONTROL_H
00014
00015 #ifndef FXBASEOBJECT_H
00016 #include "FXBaseObject.h"
00017 #endif
00018 namespace FXEX {
00019 class DbField;
00020
00021
00022
00023
00024 class FXAPI DbControl : public FXBaseObject {
00025 FXDECLARE(DbControl)
00026 typedef FXObjectListOf<DbField> DbFields;
00027
00028 public:
00029 enum {
00030 ID_DB_FIRST=50000,
00031 ID_OPEN,
00032 ID_CLOSE,
00033 ID_FIELD,
00034 ID_FOCUSIN,
00035 ID_FOCUSOUT,
00036 ID_INSERT,
00037 ID_EDIT,
00038 ID_KILL,
00039 ID_POST,
00040 ID_CANCEL,
00041 ID_QUERY,
00042 ID_SCROLL,
00043 ID_FIRST,
00044 ID_PRIOR,
00045 ID_NEXT,
00046 ID_LAST,
00047 ID_PRINT,
00048 ID_DB_LAST,
00049 };
00050
00051 public:
00052
00053 enum DbMode {
00054 DB_INACTIVE,
00055 DB_BROWSE,
00056 DB_INSERT,
00057 DB_EDIT
00058 };
00059
00060
00061 enum DbPosition {
00062 DB_BOF = -4,
00063 DB_EOF = -3,
00064 DB_FIRST = -2,
00065 DB_PRIOR = -1,
00066 DB_CURRENT = 0,
00067 DB_NEXT = 1,
00068 DB_LAST = 2,
00069 DB_FIND = 3
00070 };
00071
00072 public:
00073
00074 DbControl(FXWindow* own,FXObject* tgt=NULL,FXSelector sel=0);
00075
00076
00077 virtual ~DbControl();
00078
00079 public:
00080
00081 FXbool open();
00082 FXbool close();
00083 FXbool insert();
00084 FXbool post();
00085 FXbool cancel();
00086 FXbool kill();
00087 FXbool edit();
00088 FXbool query();
00089 FXbool first();
00090 FXbool prior();
00091 FXbool next();
00092 FXbool last();
00093 FXbool print();
00094
00095
00096 FXbool isBof() const;
00097
00098
00099 FXbool isEof() const;
00100
00101 public:
00102
00103 DbMode getMode() const { return mode; }
00104
00105
00106 DbField* getField(FXint i=-1) const;
00107
00108
00109 DbField* getField(const FXString&) const;
00110
00111
00112 FXString getQuery() const { return query_; }
00113
00114
00115 void setQuery(const FXString& q) { query_=q; }
00116
00117 protected:
00118
00119 void addField(DbField* field) { fields.append(field); }
00120
00121
00122 void addField(const FXString& name,const FXString& title,FXchar& value) { fields.append(new DbField(name,title,value,this,ID_FIELD)); }
00123
00124
00125 void addField(const FXString& name,const FXString& title,FXuchar& value) { fields.append(new DbField(name,title,value,this,ID_FIELD)); }
00126
00127
00128 void addField(const FXString& name,const FXString& title,FXshort& value) { fields.append(new DbField(name,title,value,this,ID_FIELD)); }
00129
00130
00131 void addField(const FXString& name,const FXString& title,FXushort& value) { fields.append(new DbField(name,title,value,this,ID_FIELD)); }
00132
00133
00134 void addField(const FXString& name,const FXString& title,FXint& value) { fields.append(new DbField(name,title,value,this,ID_FIELD)); }
00135
00136
00137 void addField(const FXString& name,const FXString& title,FXuint& value) { fields.append(new DbField(name,title,value,this,ID_FIELD)); }
00138
00139
00140 void addField(const FXString& name,const FXString& title,FXfloat& value) { fields.append(new DbField(name,title,value,this,ID_FIELD)); }
00141
00142
00143 void addField(const FXString& name,const FXString& title,FXdouble& value) { fields.append(new DbField(name,title,value,this,ID_FIELD)); }
00144
00145
00146 void addField(const FXString& name,const FXString& title,FXString& value) { fields.append(new DbField(name,title,value,this,ID_FIELD)); }
00147
00148
00149 void addField(const FXString& name,const FXString& title,DateField& value) { fields.append(new DbField(name,title,value,this,ID_FIELD)); }
00150
00151
00152 void addField(const FXString& name,const FXString& title,CurrencyField& value) { fields.append(new DbField(name,title,value,this,ID_FIELD)); }
00153
00154 protected:
00155
00156
00157 FXWindow* getOwner() const { return owner; }
00158
00159
00160 DbFields& getFields() { return fields; }
00161
00162 private:
00163
00164 virtual FXbool doOpen() { return FALSE; }
00165 virtual FXbool doClose() { return FALSE; }
00166 virtual FXbool doClear() { return FALSE; }
00167 virtual FXbool doInsert() { return FALSE; }
00168 virtual FXbool doPost() { return FALSE; }
00169 virtual FXbool doCancel() { return FALSE; }
00170 virtual FXbool doKill() { return FALSE; }
00171 virtual FXbool doEdit() { return FALSE; }
00172 virtual FXbool doQuery() { return FALSE; }
00173 virtual FXbool doFetch(DbPosition&) { return FALSE; }
00174 virtual FXbool doPrint() { return FALSE; }
00175 virtual FXbool doShowError(const FXString&) { return FALSE; }
00176
00177 public:
00178 long onFieldChanged(FXObject*, FXSelector, void*);
00179 long onFieldUpdate(FXObject*, FXSelector, void*);
00180 long onFieldFocusIn(FXObject*, FXSelector, void*);
00181 long onFieldFocusOut(FXObject*, FXSelector, void*);
00182 long onCmdOpen(FXObject*, FXSelector, void*);
00183 long onUpdOpen(FXObject*, FXSelector, void*);
00184 long onCmdClose(FXObject*, FXSelector, void*);
00185 long onUpdClose(FXObject*, FXSelector, void*);
00186 long onCmdInsert(FXObject*, FXSelector, void*);
00187 long onUpdInsert(FXObject*, FXSelector, void*);
00188 long onCmdKill(FXObject*, FXSelector, void*);
00189 long onUpdKill(FXObject*, FXSelector, void*);
00190 long onCmdPost(FXObject*, FXSelector, void*);
00191 long onUpdPost(FXObject*, FXSelector, void*);
00192 long onCmdCancel(FXObject*, FXSelector, void*);
00193 long onUpdCancel(FXObject*, FXSelector, void*);
00194 long onCmdQuery(FXObject*, FXSelector, void*);
00195 long onUpdQuery(FXObject*, FXSelector, void*);
00196 long onCmdFirst(FXObject*, FXSelector, void*);
00197 long onUpdFirst(FXObject*, FXSelector, void*);
00198 long onCmdPrior(FXObject*, FXSelector, void*);
00199 long onUpdPrior(FXObject*, FXSelector, void*);
00200 long onCmdNext(FXObject*, FXSelector, void*);
00201 long onUpdNext(FXObject*, FXSelector, void*);
00202 long onCmdLast(FXObject*, FXSelector, void*);
00203 long onUpdLast(FXObject*, FXSelector, void*);
00204 long onCmdPrint(FXObject*, FXSelector, void*);
00205 long onUpdPrint(FXObject*, FXSelector, void*);
00206
00207 private:
00208 FXWindow* owner;
00209 DbMode mode;
00210 DbFields fields;
00211 DbField* focusedField;
00212 FXString query_;
00213 DbPosition position;
00214 void setMode(DbMode m) { mode=m; }
00215 FXbool before(FXuint sel, void* ptr);
00216 FXbool after(FXuint sel, void* ptr);
00217
00218 protected:
00219
00220 DbControl(){}
00221
00222 private:
00223
00224 DbControl(const DbControl&);
00225 DbControl& operator=(const DbControl&);
00226 };
00227
00228 }
00229 #endif // DBCONTROL_H