Velocizzati spreadsheet
MOdificata gestione chiave 1 della relapp git-svn-id: svn://10.65.10.50/trunk@1333 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
aa41da6683
commit
32761e46b5
3409
include/cisam.c
3409
include/cisam.c
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
#ifndef APPNAME
|
#ifndef APPNAME
|
||||||
#define APPNAME PRASSI
|
#define APPNAME PRASSI
|
||||||
#define QAPPNAME "PRASSI"
|
#define QAPPNAME "PRASSI"
|
||||||
#define LIBDIR f:\xvt.400\win_x86\ptk\lib
|
#define LIBDIR f:\xvt.45b\w16_x86\ptk\lib
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define NO_STD_EDIT_MENU
|
#define NO_STD_EDIT_MENU
|
||||||
|
@ -1781,13 +1781,6 @@ bool TRectype::get_bool(const char* fieldname) const
|
|||||||
return *_isam_string == 'X';
|
return *_isam_string == 'X';
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
const char* TRectype::get(const char* fieldname) const
|
|
||||||
{
|
|
||||||
return get_str(fieldname);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // FOXPRO
|
#endif // FOXPRO
|
||||||
|
|
||||||
|
|
||||||
@ -2124,8 +2117,8 @@ long TRecfield::operator =(long l)
|
|||||||
|
|
||||||
|
|
||||||
#ifndef FOXPRO
|
#ifndef FOXPRO
|
||||||
|
|
||||||
const real& TRecfield::operator =(const real& r)
|
const real& TRecfield::operator =(const real& r)
|
||||||
|
|
||||||
{
|
{
|
||||||
strcpy(_isam_string, r.string());
|
strcpy(_isam_string, r.string());
|
||||||
__putfieldbuff( _len, _dec, _type, _isam_string, _p);
|
__putfieldbuff( _len, _dec, _type, _isam_string, _p);
|
||||||
@ -2133,29 +2126,10 @@ const real& TRecfield::operator =(const real& r)
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
const char* TRectype::get(const char* fieldname) const
|
|
||||||
{
|
|
||||||
RecDes* rd = rec_des();
|
|
||||||
|
|
||||||
if (CFieldType((char*) fieldname, rd) == _datefld)
|
|
||||||
{
|
|
||||||
const TRecfield f((TRectype&)*this, fieldname);
|
|
||||||
strcpy(_isam_string, (const char*) f);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (CGetFieldBuff((char*) fieldname, rd, _rec, _isam_string) == -1)
|
|
||||||
UNKNOWN_FIELD(num(), fieldname);
|
|
||||||
|
|
||||||
return _isam_string;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // FOXPRO
|
#endif // FOXPRO
|
||||||
|
|
||||||
|
|
||||||
const TDate& TRecfield::operator =(const TDate& d)
|
const TDate& TRecfield::operator =(const TDate& d)
|
||||||
|
|
||||||
{
|
{
|
||||||
strcpy(_isam_string, (const char*)d);
|
strcpy(_isam_string, (const char*)d);
|
||||||
__putfieldbuff( _len, _dec, _type, _isam_string, _p);
|
__putfieldbuff( _len, _dec, _type, _isam_string, _p);
|
||||||
@ -2166,7 +2140,6 @@ const TDate& TRecfield::operator =(const TDate& d)
|
|||||||
|
|
||||||
|
|
||||||
const char* TRecfield::operator =(const char* s)
|
const char* TRecfield::operator =(const char* s)
|
||||||
|
|
||||||
{
|
{
|
||||||
__putfieldbuff( _len, _dec, _type, s, _p);
|
__putfieldbuff( _len, _dec, _type, s, _p);
|
||||||
_rec->setempty(FALSE);
|
_rec->setempty(FALSE);
|
||||||
@ -2175,7 +2148,6 @@ const char* TRecfield::operator =(const char* s)
|
|||||||
|
|
||||||
|
|
||||||
void TRecfield::setptr(TRecnotype r)
|
void TRecfield::setptr(TRecnotype r)
|
||||||
|
|
||||||
{
|
{
|
||||||
if (_p == NULL) return;
|
if (_p == NULL) return;
|
||||||
|
|
||||||
@ -2194,7 +2166,6 @@ void TRecfield::setptr(TRecnotype r)
|
|||||||
|
|
||||||
|
|
||||||
TRecfield::operator int() const
|
TRecfield::operator int() const
|
||||||
|
|
||||||
{
|
{
|
||||||
__getfieldbuff( _len, _type, _p, _isam_string);
|
__getfieldbuff( _len, _type, _p, _isam_string);
|
||||||
return atoi(_isam_string);
|
return atoi(_isam_string);
|
||||||
@ -2202,7 +2173,6 @@ TRecfield::operator int() const
|
|||||||
|
|
||||||
|
|
||||||
TRecfield::operator long() const
|
TRecfield::operator long() const
|
||||||
|
|
||||||
{
|
{
|
||||||
__getfieldbuff( _len, _type, _p, _isam_string);
|
__getfieldbuff( _len, _type, _p, _isam_string);
|
||||||
return atol(_isam_string);
|
return atol(_isam_string);
|
||||||
@ -2211,18 +2181,18 @@ TRecfield::operator long() const
|
|||||||
|
|
||||||
|
|
||||||
#ifndef FOXPRO
|
#ifndef FOXPRO
|
||||||
TRecfield::operator const real() const
|
|
||||||
|
|
||||||
|
TRecfield::operator const real() const
|
||||||
{
|
{
|
||||||
__getfieldbuff( _len, _type, _p, _isam_string);
|
__getfieldbuff( _len, _type, _p, _isam_string);
|
||||||
real r(_isam_string);
|
real r(_isam_string);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // FOXPRO
|
#endif // FOXPRO
|
||||||
|
|
||||||
|
|
||||||
TRecfield::operator TDate() const
|
TRecfield::operator TDate() const
|
||||||
|
|
||||||
{
|
{
|
||||||
static TDate d;
|
static TDate d;
|
||||||
__getfieldbuff( _len, _type, _p, _isam_string);
|
__getfieldbuff( _len, _type, _p, _isam_string);
|
||||||
|
@ -96,8 +96,6 @@ public:
|
|||||||
char get_char(const char* fieldname) const ;
|
char get_char(const char* fieldname) const ;
|
||||||
bool get_bool(const char* fieldname) const ;
|
bool get_bool(const char* fieldname) const ;
|
||||||
real get_real(const char* fieldname) const ;
|
real get_real(const char* fieldname) const ;
|
||||||
#else
|
|
||||||
const char* get(const char* fieldname) const ;
|
|
||||||
#endif
|
#endif
|
||||||
TDate get_date(const char* fieldname) const ;
|
TDate get_date(const char* fieldname) const ;
|
||||||
|
|
||||||
@ -278,8 +276,8 @@ public:
|
|||||||
void put(const char* fieldname, const real& val)
|
void put(const char* fieldname, const real& val)
|
||||||
{ curr().put(fieldname, val);}
|
{ curr().put(fieldname, val);}
|
||||||
#else
|
#else
|
||||||
const char* get(const char* fieldname) const
|
const char* get_str(const char* fieldname) const
|
||||||
{ return curr().get(fieldname);}
|
{ return curr().get_str(fieldname);}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// @DES Put NON tipizzata
|
// @DES Put NON tipizzata
|
||||||
|
@ -145,12 +145,12 @@ void TMask::handler(WINDOW win, EVENT* ep)
|
|||||||
stop_run(K_AUTO_ENTER);
|
stop_run(K_AUTO_ENTER);
|
||||||
break;
|
break;
|
||||||
case DLG_CANCEL :
|
case DLG_CANCEL :
|
||||||
if (test_focus_change(ep->v.ctl.ci.win))
|
// if (test_focus_change(ep->v.ctl.ci.win))
|
||||||
stop_run(K_ESC);
|
stop_run(K_ESC);
|
||||||
break;
|
break;
|
||||||
case DLG_QUIT :
|
case DLG_QUIT :
|
||||||
if (test_focus_change(ep->v.ctl.ci.win))
|
// if (test_focus_change(ep->v.ctl.ci.win))
|
||||||
stop_run(K_FORCE_CLOSE);
|
stop_run(K_FORCE_CLOSE);
|
||||||
break;
|
break;
|
||||||
case DLG_F9:
|
case DLG_F9:
|
||||||
{
|
{
|
||||||
@ -214,6 +214,9 @@ void TMask::read_mask(const char* name, int num, int max)
|
|||||||
_sheetmask = num > 0;
|
_sheetmask = num > 0;
|
||||||
|
|
||||||
long start_t = clock();
|
long start_t = clock();
|
||||||
|
while (clock() == start_t) continue; // Attende scatto timer
|
||||||
|
start_t = clock();
|
||||||
|
|
||||||
if (!_sheetmask)
|
if (!_sheetmask)
|
||||||
_total_time = _build_time = _init_time = 0;
|
_total_time = _build_time = _init_time = 0;
|
||||||
|
|
||||||
@ -786,8 +789,8 @@ bool TMask::on_key(KEY key)
|
|||||||
next_page(+1);
|
next_page(+1);
|
||||||
break;
|
break;
|
||||||
case K_F12:
|
case K_F12:
|
||||||
message_box("Lettura = %ld:\n"
|
message_box("Lettura = %ld\n"
|
||||||
"Creazione = %ld:\n"
|
"Creazione = %ld\n"
|
||||||
"Inizializzazione = %ld",
|
"Inizializzazione = %ld",
|
||||||
_total_time-_build_time, _build_time, _init_time);
|
_total_time-_build_time, _build_time, _init_time);
|
||||||
break;
|
break;
|
||||||
@ -799,15 +802,14 @@ bool TMask::on_key(KEY key)
|
|||||||
next_page(1000 + key - K_F1);
|
next_page(1000 + key - K_F1);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const int last = fields();
|
for (int i = 0; i < fields(); i++)
|
||||||
for (int i = 0; i < last; i++)
|
|
||||||
{
|
{
|
||||||
TMask_field& f = fld(i);
|
TMask_field& f = fld(i);
|
||||||
if (f.class_id() != CLASS_BUTTON_FIELD || !f.active()) continue;
|
if (f.class_id() != CLASS_BUTTON_FIELD || !f.active()) continue;
|
||||||
TButton_field& b = (TButton_field&)f;
|
TButton_field& b = (TButton_field&)f;
|
||||||
if (b.virtual_key() == key)
|
if (b.virtual_key() == key)
|
||||||
{
|
{
|
||||||
bool ok = b.dlg() != DLG_CANCEL && b.dlg() != DLG_QUIT && b.dlg() != DLG_F9;
|
bool ok = b.dlg() == DLG_CANCEL || b.dlg() == DLG_QUIT || b.dlg() == DLG_F9;
|
||||||
if (!ok) ok = test_focus_change(b.win());
|
if (!ok) ok = test_focus_change(b.win());
|
||||||
if (ok)
|
if (ok)
|
||||||
f.on_key(K_SPACE);
|
f.on_key(K_SPACE);
|
||||||
|
@ -730,8 +730,8 @@ bool TMask_field::do_message(int num)
|
|||||||
bool TMask_field::test_focus_change()
|
bool TMask_field::test_focus_change()
|
||||||
{
|
{
|
||||||
bool ok = TRUE;
|
bool ok = TRUE;
|
||||||
if (focusdirty()) on_key(K_TAB); // Comportamento normale
|
if (focusdirty()) ok = on_key(K_TAB); // Comportamento normale
|
||||||
else if (is_edit() && in_key(1)) on_hit(); // Serve per eseguire gli handler autoprementi
|
else if (is_edit() && in_key(1)) ok = on_hit(); // Serve per eseguire gli handler autoprementi
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2123,9 +2123,12 @@ bool TEdit_field::on_key(KEY key)
|
|||||||
const bool query = mask().query_mode();
|
const bool query = mask().query_mode();
|
||||||
|
|
||||||
// check consistency
|
// check consistency
|
||||||
if (_sheet) ok = query || _sheet->check(FINAL_CHECK);
|
if (_sheet)
|
||||||
|
ok = query || _sheet->check(FINAL_CHECK);
|
||||||
else
|
else
|
||||||
if (_browse &&
|
{
|
||||||
|
ok = query || !(check_type() == CHECK_REQUIRED && get().empty());
|
||||||
|
if (_browse && ok &&
|
||||||
check_enabled() &&
|
check_enabled() &&
|
||||||
_validate_func != 21 && // 21 = NOT_EMPTY_CHECK_FIELD
|
_validate_func != 21 && // 21 = NOT_EMPTY_CHECK_FIELD
|
||||||
(!query || forced()))
|
(!query || forced()))
|
||||||
@ -2133,9 +2136,7 @@ bool TEdit_field::on_key(KEY key)
|
|||||||
if (dirty()) ok = _browse->check(FINAL_CHECK); // Check consistency
|
if (dirty()) ok = _browse->check(FINAL_CHECK); // Check consistency
|
||||||
else ok = _browse->empty_check();
|
else ok = _browse->empty_check();
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
ok = query || !(check_type() == CHECK_REQUIRED && get().empty());
|
|
||||||
|
|
||||||
if (!ok)
|
if (!ok)
|
||||||
return default_error_box();
|
return default_error_box();
|
||||||
}
|
}
|
||||||
|
@ -361,16 +361,17 @@ void TSpreadsheet::update_rec(int rec)
|
|||||||
XI_OBJ row;
|
XI_OBJ row;
|
||||||
XI_MAKE_ROW(&row, _list, riga);
|
XI_MAKE_ROW(&row, _list, riga);
|
||||||
xi_cell_request(&row); // Update internal values
|
xi_cell_request(&row); // Update internal values
|
||||||
if (_update)
|
/*
|
||||||
{
|
if (_update)
|
||||||
// xi_set_row_height(&row, CHARY+1); // Force row updating
|
{
|
||||||
XI_OBJ cell;
|
XI_OBJ cell;
|
||||||
for (int c = 1; c < _columns; c++)
|
for (int c = 1; c < _columns; c++)
|
||||||
{
|
{
|
||||||
XI_MAKE_CELL(&cell, _list, riga, c);
|
XI_MAKE_CELL(&cell, _list, riga, c);
|
||||||
xi_set_text(&cell, xi_get_text(&cell, NULL, -1));
|
xi_set_text(&cell, xi_get_text(&cell, NULL, -1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -566,7 +567,7 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
|
|||||||
char* dst = xiev->v.cell_request.s;
|
char* dst = xiev->v.cell_request.s;
|
||||||
if (src && *src)
|
if (src && *src)
|
||||||
{
|
{
|
||||||
const int len = xiev->v.cell_request.len;
|
const int& len = xiev->v.cell_request.len;
|
||||||
strncpy(dst, src, len);
|
strncpy(dst, src, len);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -574,10 +575,11 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case XIE_CHG_CELL:
|
case XIE_CHG_CELL:
|
||||||
if (_edit_field)
|
if (_edit_field && !_cell_dirty)
|
||||||
{
|
{
|
||||||
notify_change();
|
notify_change();
|
||||||
_edit_field->set_focusdirty(_cell_dirty = TRUE);
|
_cell_dirty = TRUE;
|
||||||
|
_edit_field->set_focusdirty();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case XIE_BUTTON:
|
case XIE_BUTTON:
|
||||||
@ -643,7 +645,7 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case XIE_ON_LIST:
|
case XIE_ON_LIST:
|
||||||
if (_firstfocus) // Trick to avoid the sheet to keep the focus forever ...
|
if (_firstfocus) // Trick to avoid the sheet to keep the focus forever ...
|
||||||
{ // .. it costed me two day worth of hard work!
|
{ // .. it costed me two day worth of hard work!
|
||||||
xiev->refused = TRUE;
|
xiev->refused = TRUE;
|
||||||
_firstfocus = FALSE;
|
_firstfocus = FALSE;
|
||||||
@ -683,10 +685,13 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
|
|||||||
ok = notify(_cur_rec, K_ENTER); // Notify edit
|
ok = notify(_cur_rec, K_ENTER); // Notify edit
|
||||||
_update = TRUE; // Reenable update
|
_update = TRUE; // Reenable update
|
||||||
}
|
}
|
||||||
if (!ok)
|
if (ok)
|
||||||
xiev->refused = TRUE;
|
{
|
||||||
else
|
|
||||||
xvt_statbar_refresh();
|
xvt_statbar_refresh();
|
||||||
|
_edit_field = NULL; // Reset current field
|
||||||
|
}
|
||||||
|
else
|
||||||
|
xiev->refused = TRUE;
|
||||||
|
|
||||||
_check_enabled = TRUE;
|
_check_enabled = TRUE;
|
||||||
}
|
}
|
||||||
@ -723,8 +728,6 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
|
|||||||
else
|
else
|
||||||
mask2str(_cur_rec); // Update sheet row
|
mask2str(_cur_rec); // Update sheet row
|
||||||
}
|
}
|
||||||
if (!xiev->refused)
|
|
||||||
_edit_field = NULL; // Reset current field
|
|
||||||
_check_enabled = TRUE;
|
_check_enabled = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -764,10 +767,8 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
|
|||||||
_lastab = k;
|
_lastab = k;
|
||||||
break;
|
break;
|
||||||
case K_UP:
|
case K_UP:
|
||||||
_lastab = K_BTAB;
|
|
||||||
break;
|
|
||||||
case K_DOWN:
|
case K_DOWN:
|
||||||
_lastab = K_TAB;
|
_lastab = _cur_col < 2 ? K_TAB : K_BTAB;
|
||||||
break;
|
break;
|
||||||
case K_F1:
|
case K_F1:
|
||||||
_check_enabled = FALSE; // Disable checks
|
_check_enabled = FALSE; // Disable checks
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// $Id: printapp.cpp,v 1.25 1995-05-09 09:12:14 villa Exp $
|
// $Id: printapp.cpp,v 1.26 1995-05-09 13:33:21 guy Exp $
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
@ -846,9 +846,7 @@ void TPrint_application::print()
|
|||||||
|
|
||||||
if (_cur->items () >= _wthr &&
|
if (_cur->items () >= _wthr &&
|
||||||
(_force_progind || printer ().printtype () != screenvis))
|
(_force_progind || printer ().printtype () != screenvis))
|
||||||
_prind = new TProgind (_cur->items (),
|
_prind = new TProgind (_cur->items (), _wmess, _wcancel, _wbar, 35);
|
||||||
(char *) (const char *) _wmess,
|
|
||||||
_wcancel, _wbar, 35);
|
|
||||||
print_tree (_pr_tree);
|
print_tree (_pr_tree);
|
||||||
_cur->freeze (FALSE);
|
_cur->freeze (FALSE);
|
||||||
|
|
||||||
|
@ -873,3 +873,13 @@ const TImporto& TImporto::normalize()
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int TImporto::compare(const TSortable& s) const
|
||||||
|
{
|
||||||
|
const TImporto& i = (const TImporto&)s;
|
||||||
|
const real d = valore() - i.valore();
|
||||||
|
int res = d.sign();
|
||||||
|
if (res == 0)
|
||||||
|
res = sezione() != i.sezione();
|
||||||
|
return res;
|
||||||
|
}
|
@ -25,6 +25,7 @@ class real : public TObject
|
|||||||
// @END
|
// @END
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
virtual TObject* dup() const;
|
virtual TObject* dup() const;
|
||||||
char* literals() const;
|
char* literals() const;
|
||||||
char* points(int decimals = 0) const;
|
char* points(int decimals = 0) const;
|
||||||
@ -156,10 +157,13 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class TImporto : public TObject
|
class TImporto : public TSortable
|
||||||
{
|
{
|
||||||
char _sezione;
|
char _sezione;
|
||||||
real _valore;
|
real _valore;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual int compare(const TSortable& s) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
char sezione() const { return _sezione; }
|
char sezione() const { return _sezione; }
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// $Id: relapp.cpp,v 1.53 1995-04-06 15:42:50 alex Exp $
|
// $Id: relapp.cpp,v 1.54 1995-05-09 13:33:26 guy Exp $
|
||||||
#include <mailbox.h>
|
#include <mailbox.h>
|
||||||
#include <sheet.h>
|
#include <sheet.h>
|
||||||
#include <urldefid.h>
|
#include <urldefid.h>
|
||||||
@ -22,7 +22,7 @@ HIDDEN bool can_change_firm()
|
|||||||
HTASK ct = GetCurrentTask();
|
HTASK ct = GetCurrentTask();
|
||||||
TaskFindHandle(&te, ct);
|
TaskFindHandle(&te, ct);
|
||||||
TaskFindHandle(&te, te.hTaskParent);
|
TaskFindHandle(&te, te.hTaskParent);
|
||||||
can = strcmp(te.szModule, "BA0") == 0;
|
can = stricmp(te.szModule, "BA0") == 0;
|
||||||
#else
|
#else
|
||||||
can = TRUE;
|
can = TRUE;
|
||||||
#endif
|
#endif
|
||||||
@ -34,7 +34,6 @@ HIDDEN bool can_change_firm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// Array delle chiavi della maschera di ricerca
|
// Array delle chiavi della maschera di ricerca
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -229,11 +228,10 @@ void TRelation_application::set_fixed()
|
|||||||
|
|
||||||
void TRelation_application::enable_query()
|
void TRelation_application::enable_query()
|
||||||
{
|
{
|
||||||
const bool query = _mask->query_mode();
|
const bool query = _mask->query_mode();
|
||||||
const bool noedit = !_mask->edit_mode();
|
const bool keyon = query || get_relation()->status() == _isreinsert;
|
||||||
const byte numkeys = _maskeys->items();
|
|
||||||
|
|
||||||
for (byte k = 1; k <= numkeys; k++)
|
for (byte k = 1; k <= _maskeys->items(); k++)
|
||||||
{
|
{
|
||||||
const TChiave& chiave = _maskeys->key(k);
|
const TChiave& chiave = _maskeys->key(k);
|
||||||
for (int i = 0; i < chiave.items(); i++)
|
for (int i = 0; i < chiave.items(); i++)
|
||||||
@ -243,7 +241,7 @@ void TRelation_application::enable_query()
|
|||||||
if (c.enabled_default())
|
if (c.enabled_default())
|
||||||
{
|
{
|
||||||
if (k == 1)
|
if (k == 1)
|
||||||
c.enable(noedit);
|
c.enable(keyon);
|
||||||
if (c.has_query())
|
if (c.has_query())
|
||||||
((TEdit_field&)c).enable_check(query);
|
((TEdit_field&)c).enable_check(query);
|
||||||
}
|
}
|
||||||
@ -449,7 +447,7 @@ bool TRelation_application::modify_mode()
|
|||||||
if (changing)
|
if (changing)
|
||||||
{
|
{
|
||||||
_mask->open_modal();
|
_mask->open_modal();
|
||||||
delete _maskeys; // May conflict! Keep this one
|
delete _maskeys;
|
||||||
_maskeys = new TKey_array(_mask);
|
_maskeys = new TKey_array(_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -458,7 +456,6 @@ bool TRelation_application::modify_mode()
|
|||||||
err = read(*_mask);
|
err = read(*_mask);
|
||||||
if (err != NOERR)
|
if (err != NOERR)
|
||||||
{
|
{
|
||||||
error_box("Errore di caricamento dati: %d", err);
|
|
||||||
query_mode();
|
query_mode();
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -488,12 +485,18 @@ bool TRelation_application::search_mode()
|
|||||||
if (_mask->mode() != MODE_QUERY)
|
if (_mask->mode() != MODE_QUERY)
|
||||||
query_mode();
|
query_mode();
|
||||||
|
|
||||||
TMask_field* f = get_search_field();
|
TMask_field* prima = get_search_field();
|
||||||
if (f)
|
while (prima)
|
||||||
if (f->on_key(K_F9))
|
{
|
||||||
|
if (prima->on_key(K_F9))
|
||||||
|
{
|
||||||
if (find(1))
|
if (find(1))
|
||||||
return modify_mode();
|
return modify_mode();
|
||||||
|
}
|
||||||
|
|
||||||
|
TMask_field* dopo = &_mask->fld(_mask->focus_field());
|
||||||
|
prima = (dopo == prima) ? NULL : dopo;
|
||||||
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -645,7 +648,10 @@ bool TRelation_application::save(bool check_dirty)
|
|||||||
{
|
{
|
||||||
changed = autonum(_mask, TRUE);
|
changed = autonum(_mask, TRUE);
|
||||||
if (!changed)
|
if (!changed)
|
||||||
|
{
|
||||||
_mask->disable_starting_check();
|
_mask->disable_starting_check();
|
||||||
|
enable_query(); // Abilita chiave 1 per rinumerazione manuale
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
changed = FALSE;
|
changed = FALSE;
|
||||||
|
@ -12,15 +12,19 @@ HIDDEN const char* strlwr (const char* str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline bool string_start(char c)
|
inline bool string_start(char c)
|
||||||
{ return c == '"' || c == '\'' || c == '{' || c == '\''; }
|
{ return c == '"' || c == '\'' || c == '{'; }
|
||||||
|
|
||||||
inline char match(char c)
|
inline char match(char c)
|
||||||
{ return (c == '{') ? '}' : c; }
|
{ return (c == '{') ? '}' : c; }
|
||||||
|
|
||||||
TScanner::TScanner(const char* filename)
|
TScanner::TScanner(const char* filename)
|
||||||
: ifstream(strlwr(filename)), _token(128), _key(2), _pushed(FALSE), _line(0)
|
: _pushed(FALSE), _line(0),
|
||||||
{
|
_token(128), _key(2), _buffer(1024*16)
|
||||||
if (bad()) fatal_box("Impossibile aprire %s", filename);
|
{
|
||||||
|
setbuf((char*)(const char*)_buffer, _buffer.size());
|
||||||
|
open(filename);
|
||||||
|
if (bad())
|
||||||
|
fatal_box("Impossibile aprire %s", filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
const TString& TScanner::pop()
|
const TString& TScanner::pop()
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
class TScanner : private ifstream
|
class TScanner : private ifstream
|
||||||
{
|
{
|
||||||
// @DPRIV
|
// @DPRIV
|
||||||
TString _token, _key;
|
TString _token, _key, _buffer;
|
||||||
bool _pushed;
|
bool _pushed;
|
||||||
word _line;
|
word _line;
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ TSheet::TSheet(short x, short y, short dx, short dy,
|
|||||||
flags = WSF_VSCROLL;
|
flags = WSF_VSCROLL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dx == 0) // Calculates window width
|
if (dx == 0) // Compute window width
|
||||||
{
|
{
|
||||||
RCT r; xvt_vobj_get_client_rect(parent, &r);
|
RCT r; xvt_vobj_get_client_rect(parent, &r);
|
||||||
dx = r.right/CHARX -6;
|
dx = r.right/CHARX -6;
|
||||||
@ -72,7 +72,7 @@ TSheet::TSheet(short x, short y, short dx, short dy,
|
|||||||
const int larg = width();
|
const int larg = width();
|
||||||
if (dx > larg) dx = larg;
|
if (dx > larg) dx = larg;
|
||||||
}
|
}
|
||||||
if (dy == 0) dy = 20; // Calculates window height
|
if (dy == 0) dy = 20; // Compute window height
|
||||||
|
|
||||||
create(x, y, dx, dy, title, flags, wt, parent);
|
create(x, y, dx, dy, title, flags, wt, parent);
|
||||||
if (wt != W_PLAIN) // If normal sheet add buttons
|
if (wt != W_PLAIN) // If normal sheet add buttons
|
||||||
@ -139,6 +139,10 @@ void TSheet::open()
|
|||||||
{
|
{
|
||||||
// Abilita selezione se c'e' almeno un elemento
|
// Abilita selezione se c'e' almeno un elemento
|
||||||
xvt_enable_control(_button[0], items() > 0 && _disabled.ones() < items());
|
xvt_enable_control(_button[0], items() > 0 && _disabled.ones() < items());
|
||||||
|
|
||||||
|
if (_checkable)
|
||||||
|
xvt_enable_control(_button[1], items() > 0 && _check_enabled);
|
||||||
|
|
||||||
repos_buttons();
|
repos_buttons();
|
||||||
}
|
}
|
||||||
TScroll_window::open();
|
TScroll_window::open();
|
||||||
@ -200,8 +204,8 @@ void TSheet::handler(WINDOW win, EVENT* ep)
|
|||||||
const short f = head_on() ? 1 : 0;
|
const short f = head_on() ? 1 : 0;
|
||||||
if (y >= f)
|
if (y >= f)
|
||||||
{
|
{
|
||||||
long vec = selected();
|
const long vec = selected();
|
||||||
long nuo = first()+y-f;
|
const long nuo = first()+y-f;
|
||||||
select(nuo);
|
select(nuo);
|
||||||
if (ep->type == E_MOUSE_DBL)
|
if (ep->type == E_MOUSE_DBL)
|
||||||
dispatch_e_char(win, K_ENTER);
|
dispatch_e_char(win, K_ENTER);
|
||||||
@ -746,7 +750,7 @@ TBrowse_sheet::TBrowse_sheet(TCursor* cursor, const char* fields,
|
|||||||
CTL_FLAG_DISABLED, 0L, DLG_EDIT);
|
CTL_FLAG_DISABLED, 0L, DLG_EDIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s && s->items() > 2)
|
if (s && s->items() > 0)
|
||||||
{
|
{
|
||||||
int maxlen = 0;
|
int maxlen = 0;
|
||||||
SLIST lst = xvt_slist_create();
|
SLIST lst = xvt_slist_create();
|
||||||
@ -764,8 +768,8 @@ TBrowse_sheet::TBrowse_sheet(TCursor* cursor, const char* fields,
|
|||||||
xvt_slist_destroy(lst);
|
xvt_slist_destroy(lst);
|
||||||
|
|
||||||
TString16 id; id << f->dlg();
|
TString16 id; id << f->dlg();
|
||||||
const int sel = s->get_pos(id) >> 1;
|
_sel = s->get_pos(id) >> 1;
|
||||||
xvt_list_set_sel(listbox, sel, TRUE);
|
xvt_list_set_sel(listbox, _sel, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -864,7 +868,7 @@ void TBrowse_sheet::handler(WINDOW win, EVENT* ep)
|
|||||||
if (ep->type == E_CONTROL && ep->v.ctl.id == DLG_FINDREC)
|
if (ep->type == E_CONTROL && ep->v.ctl.id == DLG_FINDREC)
|
||||||
{
|
{
|
||||||
const int what = xvt_list_get_sel_index(ep->v.ctl.ci.win);
|
const int what = xvt_list_get_sel_index(ep->v.ctl.ci.win);
|
||||||
if (what >= 0)
|
if (what >= 0 && what != _sel)
|
||||||
stop_run(K_CTRL + what);
|
stop_run(K_CTRL + what);
|
||||||
else
|
else
|
||||||
set_focus();
|
set_focus();
|
||||||
|
@ -148,7 +148,8 @@ public:
|
|||||||
|
|
||||||
class TBrowse_sheet : public TCursor_sheet
|
class TBrowse_sheet : public TCursor_sheet
|
||||||
{
|
{
|
||||||
TEdit_field* const _field;
|
TEdit_field* const _field; // Linked edit field
|
||||||
|
int _sel; // Current listbox selection
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void handler(WINDOW win, EVENT* ep);
|
virtual void handler(WINDOW win, EVENT* ep);
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
extern "C" { long nap(long period); }
|
extern "C" { long nap(long period); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// ERROR HOOK che intercetta errori XVT
|
// ERROR HOOK che intercetta errori XVT
|
||||||
// put breakpoint here
|
// put breakpoint here
|
||||||
|
|
||||||
@ -117,7 +116,7 @@ bool allow_another_instance()
|
|||||||
GlobalLock(GetModuleHandle((const char*)MAKELP(0,hInstance))));
|
GlobalLock(GetModuleHandle((const char*)MAKELP(0,hInstance))));
|
||||||
|
|
||||||
if ( hModuleSel == 0 ) // Make sure we succeeded.
|
if ( hModuleSel == 0 ) // Make sure we succeeded.
|
||||||
return 0;
|
return FALSE;
|
||||||
|
|
||||||
// Make pointers to the resident names table and the OFSTRUCT
|
// Make pointers to the resident names table and the OFSTRUCT
|
||||||
LPSTR moduleName = (LPSTR)MAKELP( hModuleSel, *(WORD FAR *)MAKELP(hModuleSel, 0x26));
|
LPSTR moduleName = (LPSTR)MAKELP( hModuleSel, *(WORD FAR *)MAKELP(hModuleSel, 0x26));
|
||||||
@ -147,7 +146,7 @@ bool allow_another_instance()
|
|||||||
{
|
{
|
||||||
// Stop when we come to a directory separator or colon
|
// Stop when we come to a directory separator or colon
|
||||||
if ( (*fileName=='\\') || (*fileName=='/') || (*fileName==':') )
|
if ( (*fileName=='\\') || (*fileName=='/') || (*fileName==':') )
|
||||||
return 0;
|
return FALSE;
|
||||||
|
|
||||||
if ( isupper(*fileName) )
|
if ( isupper(*fileName) )
|
||||||
{
|
{
|
||||||
@ -175,10 +174,6 @@ static BOOLEAN event_hook(HWND hwnd,
|
|||||||
break;
|
break;
|
||||||
case WM_CTLCOLOR:
|
case WM_CTLCOLOR:
|
||||||
{
|
{
|
||||||
#ifdef __CTL3D__
|
|
||||||
*ret = Ctl3dCtlColorEx(msg, wparam, lparam);
|
|
||||||
return FALSE; // Non fare altro
|
|
||||||
#else
|
|
||||||
const word type = HIWORD(lparam);
|
const word type = HIWORD(lparam);
|
||||||
if (type == CTLCOLOR_LISTBOX || type == CTLCOLOR_EDIT ||
|
if (type == CTLCOLOR_LISTBOX || type == CTLCOLOR_EDIT ||
|
||||||
type == CTLCOLOR_MSGBOX)
|
type == CTLCOLOR_MSGBOX)
|
||||||
@ -206,6 +201,14 @@ static BOOLEAN event_hook(HWND hwnd,
|
|||||||
*ret = focus ? FocusBrush : NormalBrush;
|
*ret = focus ? FocusBrush : NormalBrush;
|
||||||
return FALSE; // Non fare altro
|
return FALSE; // Non fare altro
|
||||||
}
|
}
|
||||||
|
#ifdef __CTL3D__
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*ret = Ctl3dCtlColorEx(msg, wparam, lparam);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -577,6 +580,7 @@ void customize_controls(bool on)
|
|||||||
xvt_vobj_set_attr(NULL_WIN,ATTR_WIN_PM_DRAWABLE_TWIN, TRUE);
|
xvt_vobj_set_attr(NULL_WIN,ATTR_WIN_PM_DRAWABLE_TWIN, TRUE);
|
||||||
xvt_vobj_set_attr(NULL_WIN,ATTR_EVENT_HOOK, (long)event_hook);
|
xvt_vobj_set_attr(NULL_WIN,ATTR_EVENT_HOOK, (long)event_hook);
|
||||||
xvt_vobj_set_attr(NULL_WIN,ATTR_WIN_CREATEWINDOW_HOOK, (long)createwindow_hook);
|
xvt_vobj_set_attr(NULL_WIN,ATTR_WIN_CREATEWINDOW_HOOK, (long)createwindow_hook);
|
||||||
|
|
||||||
allow_another_instance();
|
allow_another_instance();
|
||||||
|
|
||||||
HINSTANCE _hInstance = (HINSTANCE)xvt_vobj_get_attr(NULL_WIN, ATTR_WIN_INSTANCE);
|
HINSTANCE _hInstance = (HINSTANCE)xvt_vobj_get_attr(NULL_WIN, ATTR_WIN_INSTANCE);
|
||||||
@ -797,7 +801,7 @@ WINDOW xvt_create_control(WIN_TYPE wt,
|
|||||||
if (wt == WC_GROUPBOX)
|
if (wt == WC_GROUPBOX)
|
||||||
{
|
{
|
||||||
win = xvt_create_text(r.left, r.top, r.right, r.top+CHARY,
|
win = xvt_create_text(r.left, r.top, r.right, r.top+CHARY,
|
||||||
caption, parent, flags, app_data, id);
|
caption, parent, 0, app_data, id);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -860,7 +864,7 @@ void xvt_set_title(WINDOW win, const char* cap)
|
|||||||
TControl* c = TControl::WINDOW2TControl(win);
|
TControl* c = TControl::WINDOW2TControl(win);
|
||||||
c->set_caption(cap);
|
c->set_caption(cap);
|
||||||
#else
|
#else
|
||||||
xvt_vobj_set_title(win, cap);
|
xvt_vobj_set_title(win, (char*)cap);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user