社区
C++ Builder
帖子详情
求助,关于GRID
yuanque
2002-09-03 01:08:53
我想用CB中的TStringGrid来实现数据的展示(不一定是数据库中的数据,所以没有考虑用TDBGrid),但TStringGrid我感觉有点简单,因为我希望单元格可以有多种样式(如按钮,下拉框,图片,单选框等),不知怎么解决好,希望大家帮忙出主意!
...全文
95
8
打赏
收藏
求助,关于GRID
我想用CB中的TStringGrid来实现数据的展示(不一定是数据库中的数据,所以没有考虑用TDBGrid),但TStringGrid我感觉有点简单,因为我希望单元格可以有多种样式(如按钮,下拉框,图片,单选框等),不知怎么解决好,希望大家帮忙出主意!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yuanreid
2002-09-03
打赏
举报
回复
比如要TStringGrid支持TListBox作为编辑对象(即下拉框),
第一步:可以先从TCustomListBox继承一个自己的类,假如叫TPopupListbox。必须实现两个保护的方法(protected):
void __fastcall CreateParams(Controls::TCreateParams & Params);
void __fastcall CreateWnd(void);
同时还需要处理一些按键和鼠标事件
DYNAMIC void __fastcall KeyPress(char &Key);
DYNAMIC void __fastcall MouseUp(TMouseButton Button, TShiftState Shift, int X, int Y);
第二步:从TInplaceEdit类继承自己的TGridInplaceEdit,并在TPopupListbox类中把TGridInplaceEdit添加为友元。
添加如下代码:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_SETCURSOR, TWMSetCursor, WMSetCursor)
VCL_MESSAGE_HANDLER(WM_PAINT, TWMPaint, WMPaint)
VCL_MESSAGE_HANDLER(WM_LBUTTONDBLCLK, TWMLButtonDblClk, WMLButtonDblClk)
VCL_MESSAGE_HANDLER(WM_KILLFOCUS, TMessage, WMKillFocus)
VCL_MESSAGE_HANDLER(WM_CANCELMODE, TMessage, WMCancelMode)
VCL_MESSAGE_HANDLER(CM_CANCELMODE, TCMCancelMode, CMCancelMode)
END_MESSAGE_MAP(TInplaceEdit)
处理这些消息。
第三步从TStringGrid的父类TCustomGrid继承你的控件,并把
TGridInplaceEdit添加为友元。
在(protected)重载如下:
void __fastcall DrawCell(int ACol, int ARow, const Windows::TRect &ARect, Grids::TGridDrawState AState);
TInplaceEdit* __fastcall CreateEditor(void);
DYNAMIC AnsiString __fastcall GetEditText(int ACol, int ARow);
DYNAMIC int __fastcall GetEditLimit(void);
DYNAMIC void __fastcall SetEditText(int ACol, int ARow, const System::AnsiString Value);
void __fastcall HideEditor(void);
在public中重载:
DYNAMIC bool __fastcall CanEditAcceptKey(char Key);
DYNAMIC bool __fastcall CanEditModify(void);
bool __fastcall CanEditShow(void);
DYNAMIC AnsiString __fastcall GetEditMask(int ACol, int ARow);
这些都是看VCL的源程序得到的灵感,时间长了比较生疏了,框架和实现方式大概就是这样了,有问题可以参考delphi的源程序。祝好运!
yuanque
2002-09-03
打赏
举报
回复
帮帮忙,分不够尽管开口嘛
yuanque
2002-09-03
打赏
举报
回复
楼上是不是指TStringGrid有一个Objects属性?能否简单举个例子,感激不尽
yuanreid
2002-09-03
打赏
举报
回复
如果不用别人的,只能自己编写这种控件,我也尝试过,TStringGrid实际已经预留了扩展的空间,他的每个单元支持用TcomboBox或CheckBox填充。感觉不是很困难,
yuanque
2002-09-03
打赏
举报
回复
当然不能用listview了,是要用表格控件。那不是一个层面的东东。
vixkywx
2002-09-03
打赏
举报
回复
用listview吧
yuanque
2002-09-03
打赏
举报
回复
因为工程的需要不能用别人的控件,有源码吗,请指点一两个网站,谢谢:)
JamesJiang
2002-09-03
打赏
举报
回复
去找几个增强型的Grid控件,网上大把。
求助
grid
的布局问题
博主
求助
关于
grid
布局,希望实现图片中的效果,并希望有实际例子,寻求高人解答。
求助
:关于ext
grid
数据传递
本文探讨了在ExtJS项目中实现
Grid
数据编辑的一种方法:通过点击
Grid
内长数据项时弹出包含Textarea的Panel来修改数据。点击提交后,Panel关闭且
Grid
中的数据更新。
python wxpython wx.
grid
动态增加行_[
求助
]wxpython
grid
表格插入行报错
在尝试使用wxPython的wx.
grid
动态添加行时遇到错误:`wx._core.PyAssertionError: C++ assertion Assert failure ...`。错误源于未覆盖
Grid
TableBase的AppendCols函数。请教如何解决此问题,或在初始化后如何重新生成表格。代码示例中展示了创建
Grid
和尝试添加列的操作。
wxpython表格中可以加按钮吗_[
求助
]wxpython
grid
表格插入行报错
在尝试使用wx.
grid
.AppendCols添加列时遇到错误,错误信息显示C++断言失败,表明所使用的表格类没有重写AppendCols方法。为解决此问题,你需要确保你的
Grid
Data类继承自Py
Grid
TableBase的子类并实现了AppendCols方法,或者考虑在添加列后刷新表格数据的方式。
wxpython 表格 当前位置增加一行_[
求助
]wxpython
grid
表格插入行报错
本文介绍如何处理在使用wxPython创建
Grid
表格时遇到的PyAssertionError,焦点在于理解为何出现'Called
grid
table class function AppendCols but your derived table class does not override this function'错误,并提供修复方法。通过实例代码演示如何正确重写
Grid
TableBase的AppendCols方法以避免此类问题。
C++ Builder
13,872
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章