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
I45=$(IP)defmask.h
I33=$(IP)mask.h $(I32) $(I19) $(I43)
I34=
I35=
I36=$(IP)printer.h $(I10) $(I3) $(I33) $(I13)
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)
I52=$(IP)colors.h
I53=$(I24) $(I33) $(I39) $(IP)relapp.h
I34=$(IP)brwapp.h $(I53)
I54=$(I33) $(IP)msksheet.h
I55=$(IP)assoc.h
I56=$(IP)config.h
@ -65,4 +65,5 @@ U1=$(IP)default.url $(I43)
E1=$(IP)toolbar.h
E2=$(IP)comdcod.h
E3=$(IP)comdden.h
E4=$(IP)browbar.h

View File

@ -13,6 +13,7 @@ lib: $(LIB) masks
$(UPDLIB) $(LIB) $(TMPF)
$(LIB): $(LIB)(applicat.o) $(LIB)(array.o)\
$(LIB)(brwapp.o)\
$(LIB)(checks.o)\
$(LIB)(date.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)(brwapp.o): brwapp.cpp $(I31) $(I34) $(I47)
$(LIB)(checks.o): checks.cpp $(I23) $(I1) $(I6) $(I24)
$(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)bagn004.msk: bagn004.uml bagn004.h
$(EP)bagn004.msk: bagn004.uml bagn004.h

View File

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