cxGrid能否实现这种效果?

破网 2011-10-19 11:09:00
cxGrid能否每个Cell都是一个按钮(button),这个按钮的Caption值就是数据表对应的行的字段值?

其实我尝试过用cxgrid的CardView,如果每个Card都能显示成一个大按钮(点击效果要与Button一样)就是我最想要的效果,可是未能成功,请问各位大侠有没办法?

cxgrid可以将列属性更改为Button,但是每个列(字段)的button的caption都是一样的,这个就恨郁闷了,我想每个Cell的button的caption都对应从数据库里面取值,可是也没成功,呵呵,请高手指点指点,多谢了
...全文
208 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jfhyn 2011-10-25
  • 打赏
  • 举报
回复
3楼说得不错,楼主可以参考一下!
wm86 2011-10-24
  • 打赏
  • 举报
回复
设置cxGridTableView的三个事件:OnCustomDrawCell,OnMouseDown,OnMouseUp,代码如下:

procedure TMainForm.cxGrid1TableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
PaintRect: TRect;
DrawFlags: Integer;
begin
PaintRect := AViewInfo.Bounds;

DrawFlags := DFCS_BUTTONPUSH or DFCS_ADJUSTRECT;

if AViewInfo = FViewInfo then
DrawFlags := DrawFlags or DFCS_PUSHED;

DrawFrameControl(ACanvas.Canvas.Handle, PaintRect, DFC_BUTTON, DrawFlags);
ACanvas.Canvas.Brush.Style := bsClear;
ACanvas.Canvas.Font := Font;
DrawText(ACanvas.Canvas.Handle, PChar(AViewInfo.Text), Length(AViewInfo.Text),
PaintRect, DT_CENTER or DT_VCENTER);

ADone := True;
end;

procedure TMainForm.cxGrid1TableView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
FViewInfo := cxGrid1TableView1.GetHitTest(X, Y).ViewInfo;
//FViewInfo是窗体字段
if FViewInfo <> nil then
FViewInfo.Invalidate;
end;

procedure TMainForm.cxGrid1TableView1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if FViewInfo <> nil then
FViewInfo.Invalidate;
FViewInfo := nil;
end;
破网 2011-10-21
  • 打赏
  • 举报
回复
首先要解决让所有的Cell都变成button吧,并且Button的Caption值来源于数据的对应值。

请问有什么办法?
破网 2011-10-21
  • 打赏
  • 举报
回复
to:D_Parent确实动态创建不是非常麻烦,但数据表内容非常多(有几千个Btn),还分很多层级。
而且我觉得cxgrid应该有这个能力。

to bdmh:请赏赐一段代码。

to caowm:我看了那个扫雷游戏,包含了四五个单元,额外的代码太多了,也没认真去分析:)
我想这样的东西应该几十行代码就Ok的,只是我没找到方法。
还请多赐教。
wm86 2011-10-20
  • 打赏
  • 举报
回复
cxGrid里面自动一个扫雷游戏,非常好的一个例子
bdmh 2011-10-20
  • 打赏
  • 举报
回复
动态创建,然后在自画cell事件中,将按钮绑定到cell,setbound
D_Parent 2011-10-19
  • 打赏
  • 举报
回复
动态建立按钮和根据记录值命名并不是什么难事,何必纠缠着用什么cxGrid的方法。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧