From 87fb7279476acf3341ad06aee1ab46cab5f37f55 Mon Sep 17 00:00:00 2001 From: guy Date: Mon, 27 May 1996 15:41:54 +0000 Subject: [PATCH] controls.cpp Aggiustati lisbox dentro gli spreadsheet controls.h Tolti metodi inutili codes e values dalle dropdownlist maskfld.cpp Corretta get_codes dei TListbox_fields msksheet.cpp Corretta creazione colonne con listbox git-svn-id: svn://10.65.10.50/trunk@2915 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/controls.cpp | 74 +++++++++++++++++++++++++++++++++----------- include/controls.h | 6 +--- include/maskfld.cpp | 5 +-- include/maskfld.h | 2 +- include/msksheet.cpp | 7 ++--- 5 files changed, 63 insertions(+), 31 deletions(-) diff --git a/include/controls.cpp b/include/controls.cpp index 8db8d10d8..5c4a896f0 100755 --- a/include/controls.cpp +++ b/include/controls.cpp @@ -92,6 +92,49 @@ XVT_FNTID xvt_default_font(bool bold) if (font_ser_desc.empty()) font_ser_desc << "01\\Courier\\0\\10\\WIN01/-13/0/0/0/400/0/0/0/0/1/2/1/49/Courier"; xvt_font_deserialize(DEF_FONT, (char *)(const char *) font_ser_desc); +/* +#if XVT_OS == XVT_OS_WIN + HFONT NormalFont = (HFONT)GetStockObject(ANSI_FIXED_FONT); + LOGFONT LogFont; + GetObject(NormalFont, sizeof(LOGFONT), &LogFont); + + TConfig font(CONFIG_USER, "Font"); + CHARY = (int)font.get_long("Height"); + if (CHARY > 0) + { + LogFont.lfHeight = CHARY; + LogFont.lfWeight = font.get_int("Weight"); + LogFont.lfPitchAndFamily = font.get_int("Pitch"); + strcpy(LogFont.lfFaceName, font.get("Name")); + } + else + { + LogFont.lfHeight = CHARY = 10; + LogFont.lfWeight = 300; // Normal weight + } + NormalFont = CreateFontIndirect(&LogFont); + + TToken_string desc(128, '/'); + desc.add("WIN01"); // 0 + desc.add(LogFont.lfHeight); // 1 + desc.add(LogFont.lfWidth); // 2 + desc.add(LogFont.lfEscapement); // 3 + desc.add(LogFont.lfOrientation); // 4 + desc.add(LogFont.lfWeight); // 5 + desc.add(LogFont.lfItalic); // 6 + desc.add(LogFont.lfUnderline); + desc.add(LogFont.lfStrikeOut); + desc.add(LogFont.lfCharSet); + desc.add(LogFont.lfOutPrecision); + desc.add(LogFont.lfClipPrecision); + desc.add(LogFont.lfQuality); + desc.add(LogFont.lfPitchAndFamily); + desc.add(LogFont.lfFaceName); + + xvt_font_set_native_desc(DEF_FONT, (char*)(const char*)desc); + CHECK(xvt_font_has_valid_native_desc(DEF_FONT), "Bad font description"); +#endif +*/ xvt_font_map_using_default(DEF_FONT); CHECK(xvt_font_is_mapped(DEF_FONT), "Can't map native font"); @@ -101,6 +144,11 @@ XVT_FNTID xvt_default_font(bool bold) FAT_FONT = xvt_font_create(); xvt_font_copy(FAT_FONT, DEF_FONT, XVT_FA_ALL); xvt_font_set_style(FAT_FONT, XVT_FS_BOLD); +/* + desc.add(600, 5); + xvt_font_set_native_desc(FAT_FONT, (char*)(const char*)desc); + CHECK(xvt_font_has_valid_native_desc(FAT_FONT), "Bad font description"); +*/ xvt_font_map_using_default(FAT_FONT); CHECK(xvt_font_is_mapped(FAT_FONT), "Can't map native font"); // Get true text size @@ -253,11 +301,9 @@ WINDOW create_interface(WINDOW parent, short x, short y, short dx, short dy, def->v.itf->automatic_back_color = FALSE; def->v.itf->back_color = MASK_BACK_COLOR; - def->v.itf->font_id = xvt_default_font(); def->v.itf->tab_on_enter = TRUE; def->v.itf->win = win; - XI_OBJ* itf = xi_create(NULL, def); CHECK(itf, "Can't create an interface"); @@ -331,20 +377,7 @@ void attach_interface(WINDOW win, COLOR back) xi_dequeue(); xi_tree_free(def); } - -short get_focus_id(WINDOW win) -{ - XI_OBJ * itf = xi_get_itf(win); - XI_OBJ * obj = xi_get_focus(itf); - - if (obj == NULL || obj->type == XIT_ITF) - return -1; - if (obj->type == XIT_CELL || (obj->type == XIT_BTN && obj->v.btn->type == XIBT_RADIOBTN)) - obj = obj->parent; - return obj->cid; -} - HIDDEN void xi_event_handler(XI_OBJ* itf, XI_EVENT* xiev) { static bool notify_xvt = TRUE; @@ -1004,8 +1037,6 @@ void TButton_control::create(WINDOW win, short cid, if (width <= 0) width = strlen(t)+3; RCT rct; coord2rct(win, left, top, width, height, rct); - if (wc == WC_CHECKBOX) - rct.right += XI_FU_MULTIPLE / 2 ; if (cid == DLG_F9) { rct.left++; @@ -1571,10 +1602,17 @@ void TDropDownList::select_by_ofs(int i) } TDropDownList::TDropDownList(XI_OBJ* o, const char* codes, const char* values, int width) - : _obj(o), _values(values), _open(FALSE), _xi_lst(NULL), _width(width), + : _obj(o), _codes(codes), _values(values), + _open(FALSE), _xi_lst(NULL), _width(width), _displayed(FALSE), _selected(0) {} +void TDropDownList::set_values(const char* c, const char* v) +{ + _codes = c; + _values = v; +} + void TDropDownList::open() { if (_open) return; diff --git a/include/controls.h b/include/controls.h index a8f726c40..7d4d7c1a4 100755 --- a/include/controls.h +++ b/include/controls.h @@ -21,7 +21,6 @@ WINDOW create_interface(WINDOW parent, short x, short y, short dx, short dy, const char* caption, TWindow* mask, bool tags); void attach_interface(WINDOW win, COLOR back = COLOR_WHITE); -short get_focus_id(WINDOW win); /////////////////////////////////////////////////////////// @@ -293,10 +292,7 @@ public: long row2rec(int) const; int rec2row(long rec) const; void select(int i, bool force = FALSE); - void set_values(const char* c, const char* v) { _codes = c; _values = v; } - - TToken_string& codes() { return _codes; } - TToken_string& values() { return _values; } + void set_values(const char* c, const char* v); TDropDownList(XI_OBJ* o, const char* codes, const char* values, int wid); virtual ~TDropDownList() {} diff --git a/include/maskfld.cpp b/include/maskfld.cpp index b10636217..297612411 100755 --- a/include/maskfld.cpp +++ b/include/maskfld.cpp @@ -3441,13 +3441,14 @@ void TList_field::add_item( // aggiunte tante voci quanti sono gli elementi. { TToken_string t(s); - const TString item(t.get()); + TString item(t.get()); const int pos = _codes.get_pos(item); if (pos < 0) { _codes.add(item); - _values.add(t.get()); + item = t.get(); + _values.add(item); ((TListbox_control*)_ctl)->set_values(_codes, _values); } } diff --git a/include/maskfld.h b/include/maskfld.h index 48381e90b..444c65b33 100755 --- a/include/maskfld.h +++ b/include/maskfld.h @@ -1178,7 +1178,7 @@ public: virtual void set(const char* data); // @cmember Ritorna la tokenstring dei codici ammessi - const char* get_codes() const { return _values; } + const char* get_codes() const { return _codes; } // @cmember Ritorna la tokenstring dei valori ammessi const char* get_values() const { return _values; } diff --git a/include/msksheet.cpp b/include/msksheet.cpp index d9669c937..dc2889936 100755 --- a/include/msksheet.cpp +++ b/include/msksheet.cpp @@ -265,7 +265,7 @@ TSpreadsheet::TSpreadsheet( TString testa(h); const int at = testa.find('@'); - int m = f->size(); // Memory width + const int m = f->is_kind_of(CLASS_LIST_FIELD) ? 2 : f->size(); // Memory width int v = m; // Video width if (at >= 0) { @@ -278,9 +278,6 @@ TSpreadsheet::TSpreadsheet( } testa.cut(at); v = max(at, v+(f->has_query_button() ? 1 : 0)); - - if (v < m && f->is_kind_of(CLASS_LIST_FIELD)) - m = 2; } else { @@ -789,7 +786,7 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev) src = row(rec).get(col); // Set value for cell if (src && *src) { - if (maxlen <= 3 && e->is_kind_of(CLASS_LIST_FIELD)) + if (maxlen == 3 && e->is_kind_of(CLASS_LIST_FIELD)) /* src = src */; // Leave code as is else src = e->raw2win(src); // Get formatted string