📄 category.c
字号:
/* -*-Mode:C; tab-width:4; indent-tabs-mode:t; c-file-style:"stroustrup";-*- *///// Project : progect// Desc. : category support module// $Id: category.c,v 1.3 2003/07/27 18:22:32 rick_price Exp $//// +++ FIX THIS +++#define ALLOW_ACCESS_TO_INTERNALS_OF_FIELDS#define ALLOW_ACCESS_TO_INTERNALS_OF_TABLES#include <Table.h>// +++ FIX THIS +++#include "progect.h"#include "progectRsc.h"UInt16* g_pCategoryBits = NULL;/**************************************************************************** * Name : onDrawCategoriesColumn * Desc : Custom draw procedure for categories select table * Parm : all parameters is pass from PalmOS * -> table object * -> row, column * -> clipping rect * Out : * Auth : seagull, 04.11.2000 JST ***************************************************************************/static void onDrawCategoriesColumn(void *tableP, Int16 row, Int16 column, RectangleType *bounds){ UInt16 id = TblGetItemInt(tableP, row, column); Char label[dmCategoryLength]; // erase the row if (! OSCaps.ver35) WinEraseRectangle(bounds, 0); if (id >= 16) // empty column return ; CategoryGetName(gdbP, id, label); FntSetFont(stdFont); DrawTruncText(label, bounds->topLeft.x, bounds->topLeft.y, bounds->extent.x);}/**************************************************************************** * Name : FrmCategoriesSelectHandleEvent * Desc : event hander for category select dialog * Parm : * -> event object * Out : * Auth : seagull, 03.11.2000 JST ***************************************************************************/Boolean FrmCategoriesSelectHandleEvent(EventPtr e){ FormPtr frm; TablePtr table; UInt8 rows; frm = FrmGetActiveForm(); table = GetObjectPtr(CategoriesSelectTable); rows = TblGetNumberOfRows(table); switch (e->eType) { case frmOpenEvent: { ScrollBarPtr scrollbar = GetObjectPtr(Scr_SelectCategories); int i; UInt16 bits = *g_pCategoryBits; UInt16 row = 0; for (i = 0; i < 16; i++) { Char label[dmCategoryLength]; CategoryGetName(gdbP, i, label); if (label[0]) { TblSetItemStyle(table, i, 0, checkboxTableItem); TblSetItemInt(table, i, 0, bits >> 15); TblSetItemStyle(table, i, 1, customTableItem); TblSetCustomDrawProcedure(table, 1, onDrawCategoriesColumn); TblSetItemInt(table, i, 1, i); TblSetRowUsable(table, i, true); TblSetRowSelectable(table, i, true); row++; } else TblSetRowUsable(table, i, false); bits <<= 1; } TblSetColumnUsable(table, 0, true); TblSetColumnUsable(table, 1, true); if (row > TblGetNumberOfRows(table)) { TblHasScrollBar(table, true); SclSetScrollBar(scrollbar, 0, 0, row - TblGetNumberOfRows(table), 1); } } FrmDrawForm(frm); TblDrawTable(table); return true; case sclRepeatEvent:// +++ FIX THIS +++ table->topRow = e->data.sclRepeat.newValue;// +++ FIX THIS +++ TblDrawTable(table); return true; case ctlSelectEvent: switch (e->data.ctlSelect.controlID) { case Btn_Ok: { UInt16 bits = 0; while (rows--) { UInt16 mask = 0x8000 >> TblGetItemInt(table, rows, 1); if (TblGetItemInt(table, rows, 0)) bits |= mask; else bits &= ~mask; } *g_pCategoryBits = bits; } case Btn_Cancel: FrmReturnToForm(0); return true; case Btn_All: while (rows--) TblSetItemInt(table, rows, 0, 1); TblDrawTable(table); return true; case Btn_Toggle: while (rows--) TblSetItemInt(table, rows, 0, (TblGetItemInt(table, rows, 0)? 0 : 1) ); TblDrawTable(table); return true; } default: break; } return false;}// Boolean FrmCategoriesSelectHandleEvent(EventPtr e)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -