⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cgridview.cpp

📁 Gambas is a graphical development environment based on a Basic interpreter, like Visual Basic. It us
💻 CPP
📖 第 1 页 / 共 2 页
字号:
  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(&param);}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 + -