在 c++ 生成器中将控件添加到 StringGrid
Add control to StringGrid in c++ builder
我想在 c++ 构建器中将复选框添加到 stringGrid 的每一行。 据我所知,特定列的每个单元格都不可能有自己的子控件。那我该怎么办
for (int i = 1; i < this->StringGrid1->RowCount; i++) {
this->StringGrid1->Cells[0][i]=IntToStr(i);
TCheckBox *l=new TCheckBox(this->StringGrid1);
l->Name="label"+IntToStr(i);
l->Caption="OK";
l->Visible=true;
}
在技术上可以将子控件放在TStringGrid
中(示例代码只是缺少l->Parent = StringGrid1
赋值(,但管理此类控件并不容易,尤其是在网格可滚动的情况下。
更好的解决方案是通过切换到 TDrawGrid
并使用其 OnDrawCell
事件来所有者绘制网格,以便可以调用 Win32 API DrawFrameControl()
或DrawThemeBackground()
函数将复选框的图像绘制到网格上。 然后,您可以使用单独的数组/列表来跟踪复选框"状态",并根据需要使用网格的OnMouse...
事件来切换这些"状态",每当复选框更改"状态"时调用网格的Invalidate()
方法,以便您可以触发重绘以显示它。 但是,如果您走这条路,最好切换到虚拟列表视图或虚拟树视图,而不是使用网格。
另一种解决方案是切换到其ViewStyle
属性设置为vsReport
模式且其CheckBoxes
属性设置为 true 的TListView
。
相关文章:
- 如何在Qt C++中向自定义控件添加属性?
- MFC CEdit 控件在添加到加速器后不处理按键
- 检测何时使用 WM_PARENTNOTIFY 将子 CButton 控件添加到 CDialog
- 为C /CLI中的所有请求添加自定义的标头到WebBrowser控件
- 如何将选项卡添加到我的选项卡控件(WIN32 API C++ GUI)
- C++ 如何将用户控件添加到窗体,以便我可以在面板之间转换
- MFC Applicaton:如何将一组控件添加到单个文档应用程序中
- 将事件处理程序添加到任何控件都会导致 Visual Studio 中出错
- 在运行时向窗口添加控件
- 动态地将控件添加到wxWidgets对话框
- 将变量添加到 mfc 对话框控件
- 在tizen中的表单类以外的类中添加控件
- 使用 win32 API 向丰富的编辑控件添加格式
- 无法将多媒体控件添加到Qt Creator C++项目中
- Firemonkey:在运行时将子控件添加到TListViewItem
- 向树控件添加项
- 在 c++ 生成器中将控件添加到 StringGrid
- 将子控件添加到Qt中的另一个控件
- 无法向Win32列表框控件添加项
- Visual Studio在试图向MFC窗体上的控件添加处理程序时崩溃