社区
C++ Builder
帖子详情
求助,关于GRID
yuanque
2002-09-03 01:08:53
我想用CB中的TStringGrid来实现数据的展示(不一定是数据库中的数据,所以没有考虑用TDBGrid),但TStringGrid我感觉有点简单,因为我希望单元格可以有多种样式(如按钮,下拉框,图片,单选框等),不知怎么解决好,希望大家帮忙出主意!
...全文
65
8
打赏
收藏
求助,关于GRID
我想用CB中的TStringGrid来实现数据的展示(不一定是数据库中的数据,所以没有考虑用TDBGrid),但TStringGrid我感觉有点简单,因为我希望单元格可以有多种样式(如按钮,下拉框,图片,单选框等),不知怎么解决好,希望大家帮忙出主意!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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控件,网上大把。
新手
求助
RBF神经网络数据预测问题-数据.xls
新手
求助
RBF神经网络数据预测问题-数据.xls 本程序用前六个数据预测下一数据,前200组数据用于训练,用后80组数据进行预测,可预测结果为一个值,请大家指教: 源程序为: clc clear close all %%%%%%%%%%...
新手
求助
RBF神经网络数据预测问题-历史开奖数据.xlsx
新手
求助
RBF神经网络数据预测问题-历史开奖数据.xlsx 本程序用前六个数据预测下一数据,前200组数据用于训练,用后80组数据进行预测,可预测结果为一个值,请大家指教: 源程序为: clc clear close all %...
求助
反应谱滤波程序-11.doc
grid
on; ``` 5. **评估结果**:通过对比两个曲线,你可以判断滤波是否成功地去除了噪声,同时保持了重要特征。 在用户尝试的代码中,他们使用了`ellip`滤波器,这是一种IIR(无限冲激响应)滤波器,对于特定的...
waterfallFlow.rar
在"waterfallFlow.rar"这个压缩包中,很可能是包含了关于如何实现瀑布流布局的示例代码或者教程资料。瀑布流布局常用于图片展示、商品列表等场景,因为它可以有效地利用屏幕空间,让内容以美观且易于浏览的方式呈现...
未完成的网页有问题
5. 使用
Grid
或Flexbox的特定属性:如`
grid
-auto-flow`或`flex-wrap`,以控制元素如何在容器内排列。 6. 调试工具:利用浏览器的开发者工具查看元素的盒模型和布局,找出导致问题的具体样式。 通过以上分析和解决...
C++ Builder
13,870
社区成员
102,693
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章