【发布时间】:2013-03-10 17:41:08
【问题描述】:
我正在尝试构建一个从数据库读取数据并使用 Firemonkey 中的 TGrid 将其显示为表格的工具。我需要使用不同类型的列,例如 TCheckColumn 和 TPopupColumn,但找不到任何关于如何在 C++ Builder 中使用它们的好的指南或示例。
无论如何,我设法理解了在 TGrid 的事件 onGetValue 中设置单元格值的 TStringColumn、TProgressColumn 的用法。
有谁知道如何为 TCheckColumn、TImageColumn 和 TPopupColumn 类型的列设置 Value?
谢谢 丹尼尔
---更新---
我设法使用了 TProgressColumn。这就是我在表单的构造函数中所做的:
// TStringColumn
Grid1->AddObject(new TStringColumn(this));
// TCheckColumn
TCheckColumn* c = new TCheckColumn(this);
Grid1->AddObject(c);
// TPopupColumn
// list of values
TStringList * l = new TStringList(NULL);
l->Add(L"First");
l->Add(L"Second");
l->Add(L"Third");
TPopupColumn* p = new TPopupColumn(this);
// adding the list to the PopupColumn
p->Items = l;
Grid1->AddObject(p);
// TProgressColumn
Grid1->AddObject(new TProgressColumn (this));
Grid1->RowCount = 3 ;
这是 Grid1GetValue 方法:
// TStringColumn
if(Col == 0) Value = TValue::From<String>(Row);
// TCheckColumn !! Can't make it work
if(Col == 1) Value = TValue::From<Boolean>(true);
// TPopupColumn
if(Col == 2) Value = TValue::From<int>(2);
// TProgressColumn
if(Col == 3) Value = TValue::From<double>(50.0);
---更新---
如果我使用 OnSetValue 方法保存列的值
void __fastcall TForm1::Grid1SetValue(...)
{
if(Col == 1) check = Value;
}
然后用 OnGetValue 方法设置:
void __fastcall TForm1::Grid1GetValue(...)
{
// TCheckColumn !! Can't make it work
if(Col == 1) Value = check;// TValue::From<Boolean>(true);
}
单击一个复选框后,所有其他复选框都会更改状态。所以组件可以正常工作...现在的重点是如何以正确的方式将 Value 设置为 true 或 false。
【问题讨论】:
标签: c++builder firemonkey c++builder-xe firemonkey-fm2 tgrid