cxGrid能否每个Cell都是一个按钮(button),这个按钮的Caption值就是数据表对应的行的字段值?其实我尝试过用cxgrid的CardView,如果每个Card都能显示成一个大按钮(点击效果要与Button一样)就是我最想要的效果,可是未能成功,请问各位大侠有没办法?cxgrid可以将列属性更改为Button,但是每个列(字段)的button的caption都是一样的,这个就恨郁闷了,我想每个Cell的button的caption都对应从数据库里面取值,可是也没成功,呵呵,请高手指点指点,多谢了
而且我觉得cxgrid应该有这个能力。to bdmh:请赏赐一段代码。to caowm:我看了那个扫雷游戏,包含了四五个单元,额外的代码太多了,也没认真去分析:)
我想这样的东西应该几十行代码就Ok的,只是我没找到方法。
还请多赐教。
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;