5,392
社区成员
发帖
与我相关
我的任务
分享
//未详细测试过代码,仅供参考
unit MycxGrid;
interface
uses
Winapi.Windows, Winapi.Messages, System.Classes, Vcl.Controls,
cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxStyles,
cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator,
cxDataControllerConditionalFormattingRulesManagerDialog, Data.DB, cxDBData,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel,
cxClasses, cxGridCustomView, cxGrid;
const
WM_AFTERCREATE = WM_USER + 10001;
type
TcxGrid = class(cxGrid.TcxGrid)
private
NewCellDblClick: TcxGridCellClickEvent;
procedure DefaultCellDblClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
procedure WmAfterCreate(var Msg: TMessage); Message WM_AFTERCREATE;
public
constructor Create(AOwner: TComponent); override;
end;
implementation
constructor TcxGrid.Create(AOwner: TComponent);
begin
inherited;
PostMessage(Handle, WM_AFTERCREATE, 0, 0);
end;
procedure TcxGrid.WmAfterCreate(var Msg: TMessage);
var
I: Integer;
GridDBTableView: TcxGridDBTableView;
begin
for I := 0 to ComponentCount-1 do
begin
if Components[I] is TcxGridDBTableView then
begin
GridDBTableView := TcxGridDBTableView(Components[I]);
NewCellDblClick := GridDBTableView.OnCellDblClick;
GridDBTableView.OnCellDblClick := DefaultCellDblClick;
end;
end;
end;
procedure TcxGrid.DefaultCellDblClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
begin
begin
{执行双击事件的代码}
end;
if Assigned(NewCellDblClick) then
NewCellDblClick(Sender, ACellViewInfo, AButton, AShift, AHandled);
end;
end.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxStyles,
cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator,
cxDataControllerConditionalFormattingRulesManagerDialog, Data.DB, cxDBData,
cxGridLevel, cxClasses, cxGridCustomView, cxGridCustomTableView,
cxGridTableView, cxGridDBTableView, cxGrid, MycxGrid;
type
TForm1 = class(TForm)
cxGrid1DBTableView1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid;
private
{ Private declarations }
public
{ Public declarations }
end;