⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fmmulu.pas

📁 小型库存管理,希望有帮助,小型库存管理,希望有帮助
💻 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 + -