📄 fmmulu.pas
字号:
unit FMMulU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, FMSingleU, Menus, DB, ADODB, StdCtrls, Buttons, ExtCtrls,dxDBGrid;
type
TFMMul = class(TFMSingle)
cdsDetail: TADODataSet;
dsDetail: TDataSource;
procedure cdsMainAfterOpen(DataSet: TDataSet);
procedure cdsMainAfterClose(DataSet: TDataSet);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
function GetNextdxColumn(Colindex:integer;ConDBGrid:TdxDBGrid):integer ;
public
{ Public declarations }
end;
var
FMMul: TFMMul;
implementation
{$R *.dfm}
procedure TFMMul.cdsMainAfterOpen(DataSet: TDataSet);
begin
inherited;
cdsDetail.Active :=false ;
cdsDetail.Active :=true ;
end;
procedure TFMMul.cdsMainAfterClose(DataSet: TDataSet);
begin
inherited;
cdsDetail.Active :=false ;
end;
procedure TFMMul.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
iCol :integer ;
begin
//需要用回车键代替TAB键下移一个控件时,
//把KeyPress设为True,加入下列代码拦截击键:
if (Key = VK_RETURN) or (Key = VK_TAB) then
begin
if not (ActiveControl is TdxDBGrid) Then Begin
perform(WM_NEXTDLGCTL,0,0);
end else begin
if (ActiveControl is TdxDBGrid) Then
begin
With TdxDBGrid(ActiveControl) Do
begin
try
iCol :=GetNextdxColumn(FocusedColumn+1,TdxDBGrid(ActiveControl)) ;
if (FocusedColumn<(ColumnCount-1)) and (iCol>0) then
FocusedColumn:=iCol
else
begin
//如果是新增状态,则不允许移动到下一条
if DataSource.DataSet.State = dsInsert then
begin
DataSource.DataSet.Post ;
end ;
if DataSource.DataSet.State <> dsInsert then
begin
DataSource.DataSet.Next ;
//如果已经到最后以条,则新增一条记录
if DataSource.DataSet.Eof and not ReadOnly then
DataSource.DataSet.Append ;
end ;
FocusedColumn:=GetNextdxColumn(0,TdxDBGrid(ActiveControl));
end ;
except
end ; //try
end ; //with
end ; //if
end ;//else
end ;
end;
{取下一个dxGrid.columns}
function TFMMul.GetNextdxColumn(Colindex:integer;ConDBGrid:TdxDBGrid):integer ;
var
i,ColCount :integer ;
begin
result :=0 ;
ColCount :=ConDBGrid.ColumnCount -1 ;
for i :=ColIndex to ColCount do
begin
if (ConDBGrid.Columns[i].Visible )and(not ConDBGrid.Columns[i].DisableEditor) then
begin
result := i ;
break ;
end ;
end ;
end ;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -