DBGrid中用光标键控制Cell

街角2257896509

街角2257896509

2016-02-19 18:51

下面是个超简单的DBGrid中用光标键控制Cell教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~
 

  {////////////////////////
  //                     //
  //     Grids549        //
  //                     //
  //   14:33 2005-2-17   //
  //                     //
  }////////////////////////
  unit Grids549;

  interface

  uses
    DBGrids, Classes, Windows;

  type
    TDBGrid549 = class(TDBGrid)
    public
      property InPlaceEditor;
    end ;
   
  procedure CursorCtrl(Sender: TObject; var Key: Word; Shift: TShiftState); 

  implementation

  { TDBGrid549 }

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  procedure CursorCtrl(Sender: TObject; var Key: Word;
    Shift: TShiftState);
  {
  Warn: This procedure may change VK_RIGHT and VK_LEFT to 0

  Call this in DBGridKeyDown procedrue
  eg:
  procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
    Shift: TShiftState);
  begin
    Grids549.CursorCtrl(Sender, Key, Shift);
  end;
  }
  var
    GridEditorMode: Boolean;
  begin
    if Shift [] then Exit;
    if (Key VK_RIGHT) and (Key VK_LEFT) then
      Exit;
    GridEditorMode := TDBGrid(Sender).EditorMode;
    if not GridEditorMode then
      TDBGrid(Sender).EditorMode := True;
   
    if Key = VK_RIGHT then begin
      if GridEditorMode and (TDBGrid549(Sender).InplaceEditor.SelStart
        Length(TDBGrid549(Sender).InplaceEditor.Text)) then begin
        Exit;
      end;
      //Last field, move to next record     
      if TDBGrid(Sender).SelectedIndex =
        TDBGrid(Sender).FieldCount - 1 then begin
        TDBGrid(Sender).DataSource.DataSet.Next;
        TDBGrid(Sender).SelectedIndex := 0;
      end
      else
      //Focus on next field
      if TDBGrid(Sender).EditorMode then begin
        TDBGrid(Sender).SelectedIndex := TDBGrid(Sender).SelectedIndex + 1;
      end;
    end
    else
    if Key = VK_LEFT then begin
      if GridEditorMode and(TDBGrid549(Sender).InplaceEditor.SelStart 0) then
        Exit;
      //First field, move to prior record
      if TDBGrid(Sender).SelectedIndex = 0 then begin
          TDBGrid(Sender).DataSource.DataSet.Prior;
          TDBGrid(Sender).SelectedIndex := TDBGrid(Sender).FieldCount - 1;
      end
      else
      //Focus on prior field
      if TDBGrid(Sender).EditorMode then begin
        TDBGrid(Sender).SelectedIndex := TDBGrid(Sender).SelectedIndex - 1;
      end;
    end;
    Key := 0;
  end;

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  end.

展开更多 50%)
分享

猜你喜欢

DBGrid中用光标键控制Cell

编程语言 网络编程
DBGrid中用光标键控制Cell

如何控制肖像用光

摄影 人像摄影 静物摄影
如何控制肖像用光

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

CSS控制用户浏览网页的光标

Web开发
CSS控制用户浏览网页的光标

Cell

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Cell

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

调用IE8隐藏功能:启用光标浏览

浏览器
调用IE8隐藏功能:启用光标浏览

摄影之术认识用光控制因素

摄影 人像摄影 静物摄影
摄影之术认识用光控制因素

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

用Java实现HTML文件代替数据库存储数据

用Java实现HTML文件代替数据库存储数据

利用API检测文件是否存在

利用API检测文件是否存在
下拉加载更多内容 ↓