📄 cgridview.cpp
字号:
CGridView::getItem(WIDGET, THIS->row, THIS->col, false); WIDGET->updateCell(THIS->row, THIS->col);END_METHOD/*************************************************************************** GridRows***************************************************************************/BEGIN_METHOD(CGRIDROWS_get, GB_INTEGER row) CGridView::checkRow(WIDGET, VARG(row)); THIS->row = VARG(row); RETURN_SELF();END_METHODBEGIN_PROPERTY(CGRIDROWS_count) if (READ_PROPERTY) GB.ReturnInteger(WIDGET->numRows()); else { WIDGET->setNumRows(VPROP(GB_INTEGER)); CGridView::fillItems(WIDGET); }END_PROPERTYBEGIN_PROPERTY(CGRIDROWS_height) long row = THIS->row; if (READ_PROPERTY) { if (row < 0) row = 0; GB.ReturnInteger(WIDGET->rowHeight(row)); } else { if (row < 0) { for (row = 0; row < WIDGET->numRows(); row++) WIDGET->setRowHeight(row, VPROP(GB_INTEGER)); } else WIDGET->setRowHeight(row, VPROP(GB_INTEGER)); }END_PROPERTYBEGIN_PROPERTY(CGRIDROWS_resizable) if (READ_PROPERTY) GB.ReturnBoolean(WIDGET->rowMovingEnabled()); else WIDGET->setRowMovingEnabled(VPROP(GB_BOOLEAN));END_PROPERTY/*************************************************************************** GridCols***************************************************************************/BEGIN_METHOD(CGRIDCOLS_get, GB_INTEGER col) CGridView::checkCol(WIDGET, VARG(col)); THIS->col = VARG(col); RETURN_SELF();END_METHODBEGIN_PROPERTY(CGRIDCOLS_count) if (READ_PROPERTY) GB.ReturnInteger(WIDGET->numCols()); else { WIDGET->setNumCols(VPROP(GB_INTEGER)); CGridView::fillItems(WIDGET); }END_PROPERTYBEGIN_PROPERTY(CGRIDCOLS_width) long col = THIS->col; if (READ_PROPERTY) { if (col < 0) col = 0; GB.ReturnInteger(WIDGET->columnWidth(col)); } else { if (col < 0) { for (col = 0; col < WIDGET->numCols(); col++) WIDGET->setColumnWidth(col, VPROP(GB_INTEGER)); } else WIDGET->setColumnWidth(col, VPROP(GB_INTEGER)); }END_PROPERTYBEGIN_PROPERTY(CGRIDCOLS_resizable) if (READ_PROPERTY) GB.ReturnBoolean(WIDGET->columnMovingEnabled()); else WIDGET->setColumnMovingEnabled(VPROP(GB_BOOLEAN));END_PROPERTY/*************************************************************************** Descriptions***************************************************************************/GB_DESC CGridItemDesc[] ={ GB_DECLARE(".GridCell", 0), GB_VIRTUAL_CLASS(), //GB_PROPERTY_READ("Row", "i", CGRIDITEM_row), //GB_PROPERTY_READ("Column", "i", CGRIDITEM_column), GB_PROPERTY("Picture", "Picture", CGRIDITEM_picture), GB_PROPERTY("Text", "s", CGRIDITEM_text), GB_PROPERTY("Alignment", "i", CGRIDITEM_alignment), GB_PROPERTY_READ("X", "i", CGRIDITEM_x), GB_PROPERTY_READ("Y", "i", CGRIDITEM_y), GB_PROPERTY_READ("Left", "i", CGRIDITEM_x), GB_PROPERTY_READ("Top", "i", CGRIDITEM_y), GB_PROPERTY_READ("Width", "i", CGRIDITEM_width), GB_PROPERTY_READ("Height", "i", CGRIDITEM_height), GB_PROPERTY_READ("W", "i", CGRIDITEM_width), GB_PROPERTY_READ("H", "i", CGRIDITEM_height), GB_METHOD("Clear", NULL, CGRIDITEM_clear, NULL), GB_METHOD("EnsureVisible", NULL, CGRIDITEM_ensure_visible, NULL), GB_END_DECLARE};GB_DESC CGridRowDesc[] ={ GB_DECLARE(".GridRow", 0), GB_VIRTUAL_CLASS(), GB_PROPERTY("Height", "i", CGRIDROWS_height), GB_PROPERTY("H", "i", CGRIDROWS_height), GB_END_DECLARE};GB_DESC CGridColumnDesc[] ={ GB_DECLARE(".GridColumn", 0), GB_VIRTUAL_CLASS(), GB_PROPERTY("Width", "i", CGRIDCOLS_width), GB_PROPERTY("W", "i", CGRIDCOLS_width), GB_END_DECLARE};GB_DESC CGridRowsDesc[] ={ GB_DECLARE(".GridRows", 0), GB_VIRTUAL_CLASS(), GB_METHOD("_get", ".GridRow", CGRIDROWS_get, "(Row)i"), GB_PROPERTY("Count", "i", CGRIDROWS_count), GB_PROPERTY("Height", "i", CGRIDROWS_height), GB_PROPERTY("Resizable", "b", CGRIDROWS_resizable), GB_END_DECLARE};GB_DESC CGridColumnsDesc[] ={ GB_DECLARE(".GridColumns", 0), GB_VIRTUAL_CLASS(), GB_METHOD("_get", ".GridColumn", CGRIDCOLS_get, "(Column)i"), GB_PROPERTY("Count", "i", CGRIDCOLS_count), GB_PROPERTY("Width", "i", CGRIDCOLS_width), GB_PROPERTY("Resizable", "b", CGRIDCOLS_resizable), GB_END_DECLARE};GB_DESC CGridViewDesc[] ={ GB_DECLARE("GridView", sizeof(CGRIDVIEW)), GB_INHERITS("Control"), GB_METHOD("_new", NULL, CGRIDVIEW_new, "(Parent)Container;"), GB_PROPERTY_READ("Rows", ".GridRows", CGRIDVIEW_self), GB_PROPERTY_READ("Columns", ".GridColumns", CGRIDVIEW_self), GB_METHOD("_get", ".GridCell", CGRIDVIEW_get, "(Row)i(Column)i"), GB_METHOD("Clear", NULL, CGRIDVIEW_clear, NULL), GB_PROPERTY("Row", "i", CGRIDVIEW_row), GB_PROPERTY("Column", "i", CGRIDVIEW_column), GB_PROPERTY_READ("Current", ".GridCell", CGRIDVIEW_current), GB_PROPERTY("Grid", "b", CGRIDVIEW_grid), GB_PROPERTY("ScrollBar", "i<Scroll>", CWIDGET_scrollbar), GB_PROPERTY("Border", "b", CWIDGET_border_simple), GB_PROPERTY_READ("ClientWidth", "i", CGRIDVIEW_client_width), GB_PROPERTY_READ("ClientW", "i", CGRIDVIEW_client_width), GB_PROPERTY_READ("ClientHeight", "i", CGRIDVIEW_client_height), GB_PROPERTY_READ("ClientH", "i", CGRIDVIEW_client_height), GB_CONSTANT("_Properties", "s", CGRIDVIEW_PROPERTIES), GB_CONSTANT("_DefaultEvent", "s", "Click"), //GB_EVENT("Change", NULL, NULL, &EVENT_Change), GB_EVENT("Activate", NULL, NULL, &EVENT_Activate), GB_EVENT("Click", NULL, NULL, &EVENT_Click), GB_EVENT("Scroll", NULL, NULL, &EVENT_Scroll), GB_END_DECLARE};/*************************************************************************** class CGridView***************************************************************************/CGridView CGridView::manager;bool CGridView::created;bool CGridView::checkRow(QTable *table, long row){ if (row < 0 || row >= table->numRows()) { GB.Error("Bad row index %d", row); return true; } else return false;}bool CGridView::checkCol(QTable *table, long col){ if (col < 0 || col >= table->numCols()) { GB.Error("Bad column index %d", col); return true; } else return false;}bool CGridView::check(QTable *table, long row, long col){ if (checkRow(table, row)) return true; else if (checkCol(table, col)) return true; else return false;}MyTableItem *CGridView::getItem(QTable *table, long row, long col, bool error){ MyTableItem *item; if (error) check(table, row, col); //if (row < 0 || row >= table->numRows()) // return 0; //if (col < 0 || col >= table->numCols()) // return 0; item = (MyTableItem *)table->item(row, col); if (item == 0) { item = new MyTableItem(table); table->setItem(row, col, item); created = true; } else created = false; return item;}void CGridView::fillItems(QTable *table){ long row, col; long cols; MyTableItem *item; row = table->numRows() - 1; cols = table->numCols(); col = cols - 1; if (col < 0) return; for(;;) { if (row < 0) return; if (col < 0) created = false; else item = getItem(table, row, col, false); if (!created) { if (col == (cols - 1)) return; col = cols; row--; } else if (col == 0) table->setRowHeight(row, table->fontMetrics().lineSpacing() + 2); //item->setText("Gambas"); col--; }}/*void CGridView::changed(void){ RAISE_EVENT(EVENT_Change, NULL);}*/void CGridView::activated(void){ RAISE_EVENT(EVENT_Activate);}void CGridView::clicked(void){ RAISE_EVENT(EVENT_Click);}static void send_scroll(void *param){ GB.Raise(param, EVENT_Scroll, 0); GB.Unref(¶m);}void CGridView::scrolled(void){ GET_SENDER(_object); GB.Ref(THIS); GB.Post((void (*)())send_scroll, (long)THIS);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -