zoukankan      html  css  js  c++  java
  • 在DBGrid中,怎样判断焦点离开了某个单元格?(100分)

    https://wedelphi.com/t/99347/

    在DBGrid中,怎样判断焦点离开了某个单元格?
    onColexit事件只能判断用键盘到移到另一列,还不能判断mouse离开单元格,
    我想做的是:不论是mouse或用键盘离开某个单元格做点别的事情

    那个应该可以的呀,
    OnColExit/OnAfterScroll
    行列移动,你做处理就可以了

    //获取单元格的行号:DBGrid1.DataSource.DataSet.RecNo
    //获取单元格的列号:DBGrid1.SelectedIndex+1
    //示例如下,注意:此事件在同列时,不响应
    procedure TForm1.DBGrid1ColEnter(Sender: TObject);
    begin
    caption:='('+inttostr(DBGrid1.DataSource.DataSet.RecNo)+'行 : '+inttostr(DBGrid1.SelectedIndex+1)+'列)';
    end;


    //判断是否移到另一列,对mouse和keyboard均有效
    procedure TForm1.DBGrid1ColExit(Sender: TObject);
    begin
    showmessage('移到另一列');
    end;

    //判断是否用键盘移到另一行
    procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
    Shift: TShiftState);
    begin
    if DBGrid1.DataSource.DataSet.RecNo<>i then showmessage('key移到另一行');
    i:=DBGrid1.DataSource.DataSet.RecNo;
    end;

    //判断是否用mouse移到另一行
    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
    if DBGrid1.DataSource.DataSet.RecNo<>i then showmessage('mouse移到另一行');
    i:=DBGrid1.DataSource.DataSet.RecNo;
    end;

    //注: i是private变量 ,integer型

    判断前后所在的行数和列数, 要记录前一次选中的行数和列数
    BlackHand所提供的定位col和Row不太好, 
    提供下法:
    先定义一个类, 从TDBGrid继承
    Type
    TMyGrid=Class(TDBGrid)

    用法:
    行数: r:=TMyGrid(dbgrid1).Row
    列数: c:=TMyGrid(dbgrid1).Col

    如果本次获取单元格的行号、列号与上次获取单元格的行号、列号不同的话,那就说明:
    焦点离开了原来的单元格

    根据twos的说法,经试用.
    dbgrid1.OnColExit及tdataset.OnBeforScroll获得成功.
    blackhand的方法没试过,估计也可以,只是要写一大堆代码.不过也给分,

    好的代码像粥一样,都是用时间熬出来的
  • 相关阅读:
    Angular入门到精通系列教程(3)
    Angular入门到精通系列教程(1)
    Angular入门到精通系列教程(2)
    嵌入在iframe中的Angular站点,如何打开一个新的tab页面
    简单实现无服务器情况下,2个GIT客户端的同步
    QP01 创建检验批计划
    IW31创建维修工单
    屏幕里输入字段值后的检查 SCREEN FIELD CHECK ON INPUT
    elasticsearch 基于文章点赞数计算评分
    script_score(帖子--根据 销量和浏览人数进行相关度提升)
  • 原文地址:https://www.cnblogs.com/jijm123/p/13767120.html
Copyright © 2011-2022 走看看