DBGrid中用光标键控制Cell

王朝delphi·作者佚名  2006-01-09
宽屏版  字体: |||超大  

{////////////////////////

// //

// 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 }

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;

end.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有