Modifiche a BA1 per usare i campi memo, che naturalmente non funzionano

ma intanto eccole qua


git-svn-id: svn://10.65.10.50/trunk@1492 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-06-22 09:28:46 +00:00
parent 95edf6412b
commit dd837f0172
3 changed files with 82 additions and 2 deletions

View File

@ -50,10 +50,10 @@ protected:
virtual void print();
virtual void do_print(TPrinter & p, TRec_sheet & r);
const char* dumpfilename(const FileDes& dep) const;
public:
TManutenzione_app() : _browse(NULL), _rec(NULL), _mask(NULL), _firm(0) {}
TManutenzione_app() : _browse(NULL), _rec(NULL), _mask(NULL), _firm(0) {}
};
HIDDEN void build_filelist(const char *path, TArray & list)

View File

@ -9,6 +9,10 @@
#include <config.h>
#endif
#ifndef __MASKFLD_H
class TMask_field;
#endif
#include "ba1100a.h"
///////////////////////////////////////////////////////////
@ -69,7 +73,11 @@ public:
class TEdit_file : public TObject
{
static bool memo_handler(TMask_field& f, KEY k);
protected:
KEY edit_record(TRectype& rec, bool readonly = FALSE);
public:

View File

@ -7,6 +7,63 @@
#include "ba1100.h"
// ORRIBILERRIMO
// ma chemmefotte?
HIDDEN TRectype* __rec;
HIDDEN TRelation* __rel;
HIDDEN TMask* __msk;
HIDDEN int __mid;
bool TEdit_file::memo_handler(TMask_field& f, KEY k)
{
bool ok = TRUE;
if (k == K_SPACE)
{
int memoidx = f.dlg() - 400;
// recuperate memo id and god (it.: godi)
int mcnt = 0;
long val = -1l;
for (int i = 0; i < __rec->items(); i++)
{
if (__rec->type(__rec->fieldname(i)) == _memofld)
{
if (memoidx == mcnt++)
{
val = __rec->get_long(__rec->fieldname(i));
break;
}
}
}
ok = val != -1l;
if (ok)
{
// edit memo with apposit maskerings
TMask mm("Edit campo memo", 1, 78, 20);
mm.add_memo(501, 0, __rec->fieldname(i), 1, 1, 76,16);
mm.add_button(DLG_OK, 0, "", -12, -1, 9, 2);
mm.add_button(DLG_CANCEL, 0, "", -22, -1, 9, 2);
// build fieldref
TString80 fref;
// UARNIN! Non funziona necessariamente per le tabelle
// ma non abbiamo tabelle coi memo e quindi camm' ifottamme'
fref << __rec->num() << "->" << __rec->fieldname(i);
mm.field(501).set_field(fref);
// se tutto va bene basta fare cosi'
mm.autoload(__rel);
if (mm.run() == K_ENTER)
{
mm.autosave(__rel);
__msk->set (__mid,__rec->get(__rec->fieldname(i)));
}
// se invece va male, l'e' istes
}
}
return ok;
}
bool TEdit_file::browse(int logicnum, const char* name)
{
@ -18,6 +75,10 @@ bool TEdit_file::browse(int logicnum, const char* name)
TToken_string head(256);
TToken_string trac(256);
// DIO CHE ORRORE! MA CHECCEPOSSOFA'?
__rel = &relation;
// E POI, DICIAMOLO, CHEMMEFOTTAMME'?
const char* n;
trac.add("");
head.add("@1");
@ -137,6 +198,7 @@ KEY TEdit_file::edit_record(TRectype& rec, bool readonly)
int curpage = 0, currow = 1, nid = 100;
const char* cp;
int mcnt =0;
for(int i = 0; (cp = rec.fieldname(i)) != NULL; i++)
{
@ -165,6 +227,16 @@ KEY TEdit_file::edit_record(TRectype& rec, bool readonly)
case _longzerofld:
m.add_number(nid++, curpage, s, 3, currow, len, "Z", rec.ndec(cp));
break;
case _memofld:
m.add_number(nid++, curpage, s, 3, currow, len, "Z", rec.ndec(cp));
m.enable(nid-1, FALSE);
// memo del caz: add bottone per l'editing etc
m.add_button (400+(mcnt++), curpage, "Edit", 35, currow, 9, 1);
__rec = &rec;
__msk = &m;
__mid = nid-1;
m.set_handler(400+(mcnt-1), memo_handler);
break;
default:
break;
}