Aggiunta la classe TBrowse_application (brwapp)

git-svn-id: svn://10.65.10.50/trunk@179 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1994-09-07 15:25:47 +00:00
parent dbf10b3937
commit 998f9e637d
6 changed files with 249 additions and 92 deletions

18
include/browbar.h Executable file
View File

@ -0,0 +1,18 @@
BUTTON DLG_FINDREC 8 2
BEGIN
PROMPT -13 -1 "Ri~cerca"
MESSAGE EXIT,K_F9
END
BUTTON DLG_CANCEL 8 2
BEGIN
PROMPT -23 -1 ""
MESSAGE EXIT,K_ESC
END
BUTTON DLG_QUIT 8 2
BEGIN
PROMPT -33 -1 ""
MESSAGE EXIT,K_QUIT
END

105
include/brwapp.cpp Executable file
View File

@ -0,0 +1,105 @@
// $Id: brwapp.cpp,v 1.1 1994-09-07 15:25:40 alex Exp $
#include <brwapp.h>
#include <mailbox.h>
#include <utility.h>
///////////////////////////////////////////////////////////
// TBrowse_application
///////////////////////////////////////////////////////////
bool TBrowse_application::main_loop()
{
long recins = -1;
query_mode();
curr_mask().open_modal();
KEY k;
// Provoca l'autopremimento per il messaggio di LINK
if (lnflag()) curr_mask().send_key(K_AUTO_ENTER, 0);
do
{
// Seleziona il cursore a freccia
set_cursor(TASK_WIN, CURSOR_ARROW);
// Dis/abilita cambio ditta
enable_menu_item(M_FILE_NEW, (curr_mask().mode() == MODE_QUERY));
k = curr_mask().run();
// Seleziona il cursore a clessidra se necessario
if (k != K_QUIT && k != K_F9) set_cursor(TASK_WIN, CURSOR_WAIT);
switch (k)
{
case K_ESC:
if (curr_mask().query_mode())
{
curr_mask().reset();
set_fixed();
}
else query_mode();
if (lnflag()) k = K_QUIT;
break;
case K_QUIT:
if (curr_mask().mode() == MODE_MOD &&
(autoins_caller().not_empty() || lnflag()))
recins = file().recno();
break;
case K_ENTER:
if (find(0)) modify_mode();
else message_box("Registrazione assente"); // ocio
break;
case K_F9:
search_mode();
break;
default:
setkey();
int err = ~NOERR;
switch (k)
{
case K_HOME:
err = file().readat(first(), _testandlock);
break;
case K_NEXT:
err = file().reread();
err = file().next(_testandlock);
break;
case K_PREV:
err = file().reread();
err = file().prev(_testandlock);
break;
case K_END:
err = file().readat(last(), _testandlock);
break;
default:
break;
}
if (err == NOERR || err == _islocked) modify_mode();
else query_mode();
break;
}
} while (k != K_QUIT);
if (curr_mask().is_open())
curr_mask().close_modal();
curr_mask().set_mode(NO_MODE);
if (recins > 0 && autoins_caller().not_empty())
{
TMessage msg(autoins_caller(), MSG_AI, format("%ld", recins));
msg.send();
}
if (recins > 0 && lnflag())
{
TMessage msg(autoins_caller(), MSG_LN, format("%ld", recins));
msg.send();
}
return k != K_QUIT;
}

21
include/brwapp.h Executable file
View File

@ -0,0 +1,21 @@
#ifndef __BRWAPP_H
#define __BRWAPP_H
#ifndef __RELAPP_H
#include <relapp.h>
#endif
class TBrowse_application : public TRelation_application
{
protected:
virtual bool main_loop(); // Ciclo principale
public:
TBrowse_application() {}
virtual ~TBrowse_application() {}
};
#endif

View File

@ -35,7 +35,6 @@ I32=$(IP)window.h $(I23)
I43=$(IP)urldefid.h $(IP)defmask.h I43=$(IP)urldefid.h $(IP)defmask.h
I45=$(IP)defmask.h I45=$(IP)defmask.h
I33=$(IP)mask.h $(I32) $(I19) $(I43) I33=$(IP)mask.h $(I32) $(I19) $(I43)
I34=
I35= I35=
I36=$(IP)printer.h $(I10) $(I3) $(I33) $(I13) I36=$(IP)printer.h $(I10) $(I3) $(I33) $(I13)
I24=$(IP)applicat.h $(S1) $(I10) $(I8) $(I36) I24=$(IP)applicat.h $(S1) $(I10) $(I8) $(I36)
@ -52,6 +51,7 @@ I50=$(IP)printapp.h $(I24) $(I36) $(I39) $(I10)
I51=$(IP)form.h $(I17) $(I36) I51=$(IP)form.h $(I17) $(I36)
I52=$(IP)colors.h I52=$(IP)colors.h
I53=$(I24) $(I33) $(I39) $(IP)relapp.h I53=$(I24) $(I33) $(I39) $(IP)relapp.h
I34=$(IP)brwapp.h $(I53)
I54=$(I33) $(IP)msksheet.h I54=$(I33) $(IP)msksheet.h
I55=$(IP)assoc.h I55=$(IP)assoc.h
I56=$(IP)config.h I56=$(IP)config.h
@ -65,4 +65,5 @@ U1=$(IP)default.url $(I43)
E1=$(IP)toolbar.h E1=$(IP)toolbar.h
E2=$(IP)comdcod.h E2=$(IP)comdcod.h
E3=$(IP)comdden.h E3=$(IP)comdden.h
E4=$(IP)browbar.h

View File

@ -13,6 +13,7 @@ lib: $(LIB) masks
$(UPDLIB) $(LIB) $(TMPF) $(UPDLIB) $(LIB) $(TMPF)
$(LIB): $(LIB)(applicat.o) $(LIB)(array.o)\ $(LIB): $(LIB)(applicat.o) $(LIB)(array.o)\
$(LIB)(brwapp.o)\
$(LIB)(checks.o)\ $(LIB)(checks.o)\
$(LIB)(date.o)\ $(LIB)(date.o)\
$(LIB)(expr.o) $(LIB)(execp.o)\ $(LIB)(expr.o) $(LIB)(execp.o)\
@ -40,6 +41,8 @@ $(LIB)(applicat.o): applicat.cpp $(I6) $(I24) $(I32) $(I43) $(I44) $(I5) $(I
$(LIB)(array.o): array.cpp $(I13) $(LIB)(array.o): array.cpp $(I13)
$(LIB)(brwapp.o): brwapp.cpp $(I31) $(I34) $(I47)
$(LIB)(checks.o): checks.cpp $(I23) $(I1) $(I6) $(I24) $(LIB)(checks.o): checks.cpp $(I23) $(I1) $(I6) $(I24)
$(LIB)(date.o): date.cpp $(I7) $(I10) $(I6) $(I5) $(LIB)(date.o): date.cpp $(I7) $(I10) $(I6) $(I5)
@ -121,4 +124,9 @@ $(EP)bagn002.msk: bagn002.uml bagn002.h
$(EP)bagn003.msk: bagn003.uml bagn003.h $(EP)bagn003.msk: bagn003.uml bagn003.h
$(EP)bagn004.msk: bagn004.uml bagn004.h $(EP)bagn004.msk: bagn004.uml bagn004.h

View File

@ -1,90 +1,94 @@
#ifndef __RELAPP_H #ifndef __RELAPP_H
#define __RELAPP_H #define __RELAPP_H
#ifndef __APPLICAT_H #ifndef __APPLICAT_H
#include <applicat.h> #include <applicat.h>
#endif #endif
#ifndef __RELATION_H #ifndef __RELATION_H
#include <relation.h> #include <relation.h>
#endif #endif
#ifndef __MASK_H #ifndef __MASK_H
#include <mask.h> #include <mask.h>
#endif #endif
class TKey_array; class TKey_array;
class TRelation_application : public TApplication class TRelation_application : public TApplication
{ {
WINDOW _statbar; TMask * _mask;
TMask* _mask; TKey_array* _maskeys;
TKey_array* _maskeys; long _first, _last;
long _first, _last; int _search_id;
int _search_id;
TString _autoins_caller;
TString _autoins_caller; bool _lnflag;
bool _lnflag; TToken_string _fixed;
TToken_string _fixed;
virtual bool create();
virtual bool create(); virtual bool destroy();
virtual bool destroy();
bool filter();
bool filter(); bool test_key(byte k, bool err);
TLocalisamfile& file() const { return *get_relation()->lfile(); } bool save(bool check_dirty);
bool test_key(byte k, bool err); void enable_query();
bool save(bool check_dirty); void set_toolbar(bool all);
void enable_query();
void set_toolbar(bool all); int set_mode(int mode); // Seleziona il nuovo modo e ritorna il vecchio
void set_limits(byte what = 0x3);
void set_fixed(); // Fissa i campi non modificabili void query_insert_mode() { query_mode(TRUE); }
int set_mode(int mode); // Seleziona il nuovo modo e ritorna il vecchio void insert_mode(); // Entra in modo inserimento
void set_limits(byte what = 0x3); virtual bool main_loop(); // Ciclo principale
bool search_mode(); // Attiva la maschera di ricerca TMask_field* get_search_field() const;
void query_mode(bool pre_ins = FALSE); // Entra in modo ricerca
void query_insert_mode() { query_mode(TRUE); } protected:
void insert_mode(); // Entra in modo inserimento TLocalisamfile& file() const { return *get_relation()->lfile(); }
bool modify_mode(); // Entra in modo modifica void set_fixed(); // Fissa i campi non modificabili
bool main_loop(); // Ciclo principale bool search_mode(); // Attiva la maschera di ricerca
TMask_field* get_search_field() const; void query_mode(bool pre_ins = FALSE); // Entra in modo ricerca
void setkey(); bool modify_mode(); // Entra in modo modifica
void setkey();
protected: bool lnflag() const { return _lnflag;}
virtual bool menu(MENU_TAG m); long first() const { return _first;}
long last() const { return _first;}
virtual bool user_create() pure; TMask& curr_mask() const { return *_mask; }
virtual bool user_destroy() pure; const TString& autoins_caller() const { return _autoins_caller;}
virtual TMask* get_mask(int mode) pure; virtual bool menu(MENU_TAG m);
virtual bool changing_mask(int mode) pure;
virtual TRelation* get_relation() const pure; virtual bool user_create() pure;
virtual int read(TMask& m); virtual bool user_destroy() pure;
virtual int write(const TMask& m); virtual TMask* get_mask(int mode) pure;
virtual int rewrite(const TMask& m); virtual bool changing_mask(int mode) pure;
virtual bool remove(); virtual TRelation* get_relation() const pure;
virtual const char* get_next_key() { return ""; } virtual int read(TMask& m);
virtual bool protected_record(TRectype&) { return FALSE; } virtual int write(const TMask& m);
virtual void init_query_mode(TMask&) { } virtual int rewrite(const TMask& m);
virtual void init_query_insert_mode(TMask& m) { init_query_mode(m); } virtual bool remove();
virtual void init_insert_mode(TMask&) { } virtual const char* get_next_key() { return ""; }
virtual void init_modify_mode(TMask&) { } virtual bool protected_record(TRectype&) { return FALSE; }
virtual void write_enable(const bool on = TRUE) { get_relation()->write_enable(-1, on); } virtual void init_query_mode(TMask&) { }
void write_disable() { write_enable(FALSE); } virtual void init_query_insert_mode(TMask& m) { init_query_mode(m); }
virtual void init_insert_mode(TMask&) { }
bool autonum(TMask* m, bool rec); virtual void init_modify_mode(TMask&) { }
void set_search_field(short id) { _search_id = id;} virtual void write_enable(const bool on = TRUE) { get_relation()->write_enable(-1, on); }
bool has_filtered_cursor() const { return filtered() || force_cursor_usage();} void write_disable() { write_enable(FALSE); }
public: bool autonum(TMask* m, bool rec);
TRelation_application(); void set_search_field(short id) { _search_id = id;}
virtual ~TRelation_application(); bool has_filtered_cursor() const { return filtered() || force_cursor_usage();}
bool filtered() const { return _fixed.not_empty(); }
void set_first(long first) { _first = first;} public:
void set_last(long last) { _last = last;} TRelation_application();
bool find(byte key = 0); virtual ~TRelation_application();
virtual bool force_cursor_usage() const { return FALSE;} bool filtered() const { return _fixed.not_empty(); }
}; void set_first(long first) { _first = first;}
void set_last(long last) { _last = last;}
#endif bool find(byte key = 0);
virtual bool force_cursor_usage() const { return FALSE;}
};
#endif