TMyListView = class(TListView)
  private
  protected
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Click;override;
    procedure DragDrop(Source: TObject; X, Y: Integer);override;
    procedure DragOver(Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);override;
    procedure ColumnClick(Sender:TObject;Column: TListColumn);//*************
  published
  end;举例:
Click,DragDrop如上声明,
实现为
procedure TMyListView.Click;
begin
  inherited;
//一些我自己的代码
end;procedure TMyListView.DragDrop(Source: TObject; X, Y: Integer);
begin
  inherited;
//一些我自己的代码
end;可是,ColumnClick该怎样声明?才会被Delphi认可。

解决方案 »

  1.   

    认可是指什么?编译报错了吗?ColumnClick是干什么用的?
      

  2.   

    procedure ColClick(Column: TListColumn); override;
      published
      

  3.   

    据说:授人鱼不如授人渔
    想想TListView.OnColumnClick是怎么触发的
    打开TListView声明的单元搜索OnColumnClick调用的地方
    发现线索:
    procedure TCustomListView.ColClick(Column: TListColumn);
    begin
      if Assigned(FOnColumnClick) then FOnColumnClick(Self, Column);
    end;
      

  4.   

    大家一定忽略了ColumnClick的父类中不是Virtual或者dynamic
    我查了一下,如果是静态的就不能用override覆盖。
    所以,这个问题是很难的。
    如果有人能搞定,我整体转分100,
    决不食言,另会加100,给各位顶的朋友。
      

  5.   

    //没有实践就没发言权
    //自己点点,看看有没有效果
    type
      TMyListView = class(TListView)
      private
      protected
        procedure ColClick(Column: TListColumn); override;
      published
      end;{ TMyListView }procedure TMyListView.ColClick(Column: TListColumn);
    begin
      inherited;
      ShowMessage('ok');
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      with TMyListView.Create(Self) do
      begin
        Parent := Self;
        with Columns.Add do Caption := 'Name';
        ViewStyle := vsReport;
      end;
    end;
      

  6.   

    //这样也能触发事件,不知道你期望是什么结果???
    type
      TMyListView = class(TListView)
      private
      protected
        procedure ColClick(Column: TListColumn); override;
      published
      end;{ TMyListView }procedure TMyListView.ColClick(Column: TListColumn);
    begin
      inherited;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      with TMyListView.Create(Self) do
      begin
        Parent := Self;
        with Columns.Add do Caption := 'Name';
        ViewStyle := vsReport;
        OnColumnClick := ListView1ColumnClick;
      end;
    end;procedure TForm1.ListView1ColumnClick(Sender: TObject;
      Column: TListColumn);
    begin
      ShowMessage('ok');
    end;
      

  7.   

    1
    property ColumnClick: Boolean read FColumnClick write SetColumnClick default True;
    可以看出,ColumnClick是属性.可以忽略了.2
    procedure ColClick(Column: TListColumn); dynamic;
    是一个动态方法. (可以override);3
    property OnColumnClick: TLVColumnClickEvent read FOnColumnClick
        write FOnColumnClick;4
    OnColumnClick事件的触发.
    procedure TCustomListView.ColClick(Column: TListColumn);
    begin
      if Assigned(FOnColumnClick) then FOnColumnClick(Self, Column);
    end;//-----
    zswangII(伴水清清)(一贴不灌,何以灌天下?) 
    的思路是没错的.对于楼主的
    "大家一定忽略了ColumnClick的父类中不是Virtual或者dynamic",
    估计楼主看错了----没有这个方法.
    另:
    或许误会楼主的意思了.
      

  8.   

    哦,各位不好意思。
    我漏说了我的目的。
    我一直认为,我自己编程的新境界是“代码与界面相分离”。
    而实现这种境界的方式,就是“自制控件”。
    我的ColumnClick是为了在该Column上显示一个上/下箭头的图片,就象资源管理器一样。
    不想在form中去写,太乱太难看了。要写到自制控件里去。另:to zswangII。原来,你的意思是ColClick,可以实现ColumnClick吗?让我试试看。
      

  9.   

    这回没有看错。jjwwang 也提供正确。
    呵呵。
    多谢各位。