• How to create a OnCellDblClick for Delphi's TDBGrid


    I'm a newbie when it comes to creating new events to components... and I noticed that TDBGrid has a OnCellClick, but sadly it doesnt have an OnCellDblClick event and it bothers me a lot the fact that if I double click anywhere in my grid the selected row will be used...

    So, I wanted to create the OnCellDblClick event, but as I've said earlier, I don't know how to do it.

    I noticed that a lot of people want this same event, but I can't find the answerd to it.

    Is it possible to know if the double click was on a record, if it was, then do all the stuff I want with it?

    Maybe you can use the DblClick together with the MouseDown event of the DBGrid
    But this will only work if the Options.dgRowSelect is false

    for example

    type
      TForm1 = class(TForm)
      private
        FEmptySpace : boolean;
     ...
    
    procedure TForm1.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      // in my test I only get here when clicked on empty part of the dbgrid
      FEmptySpace := TRUE;
    end;
    
    procedure TForm1.DBGrid1DblClick(Sender: TObject);
    begin
      if FEmptySpace then
        showmessage('clicked in the middle of nowhere...')
      else
        showmessage(DBGrid1.Fields[DBGrid1.SelectedField.Index].AsString);
    
      FEmptySpace := FALSE;
    end;

    I have not tested this in all situations

    In my test

    • Options.Editing := false
    • Options.dgRowSelect := false
    • Readonly := true
  • 相关阅读:
    宏定义中的#
    HDU1506 Largest Rectangle in a Histogram 动态规划
    HDU1864 最大报销额 DP
    POJ2771 Guardian of Decency 最大独立子集
    POJ1698 Alice's Chance 最大流
    HDU1003 Max Sum 动态规划
    eval格式化事件类型的字符串
    C#虚方法virtual详解
    c# 利用反射获得某个类或者对象的所有属性
    windows服务的通常写法
  • 原文地址:https://www.cnblogs.com/jijm123/p/12364814.html
Copyright © 2020-2023  润新知