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

📄 lnoset_f.pas

📁 县级供电企业电费核算源码, 在客户处正常运行8年以上, Delphi 5开发,数据库为Interbase/Firebird, 深入使用Procedure和Trigger等, 对入门者具有很好的参考价值
💻 PAS
字号:
unit LNoSet_F;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Grids, DBGrids, DBCtrls, Mask;

type
  TF_LNoSet = class(TForm)
    Panel1: TPanel;
    DBG_Ammeter: TDBGrid;
    Panel2: TPanel;
    E_Search: TEdit;
    L_Search: TLabel;
    DBG_House: TDBGrid;
    Splitter1: TSplitter;
    DBN: TDBNavigator;
    Bt_Close: TButton;
    DBE_HHouseNo: TDBEdit;
    DBE_AHouseNo: TDBEdit;
    DBE_LNo: TDBEdit;
    procedure Bt_CloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure E_SearchKeyPress(Sender: TObject; var Key: Char);
    procedure DBG_AmmeterDblClick(Sender: TObject);
    procedure DBG_AmmeterKeyPress(Sender: TObject; var Key: Char);
    procedure DBG_HouseDblClick(Sender: TObject);
    procedure DBG_HouseKeyPress(Sender: TObject; var Key: Char);
    procedure DBE_AHouseNoChange(Sender: TObject);
    procedure DBG_HouseEnter(Sender: TObject);
    procedure DBG_AmmeterEnter(Sender: TObject);
  private
    { Private declarations }
	vTransferNo: String;
  public
    { Public declarations }
  end;

var
  F_LNoSet: TF_LNoSet;

implementation

uses Mobile_DM, Comm, CommFee;

{$R *.DFM}

procedure TF_LNoSet.Bt_CloseClick(Sender: TObject);
begin
	Close();
end;

procedure TF_LNoSet.FormShow(Sender: TObject);
begin
	vTransferNo := DM_Mobile.Tb_Transfer['F_Transfer_No'];
    P_OpenTable(DM_Mobile.Tb_OrigHouse);
	P_OpenTable(DM_Mobile.Tb_OrigAmmeter);
end;

procedure TF_LNoSet.FormClose(Sender: TObject; var Action: TCloseAction);
begin
	P_CloseTable(DM_Mobile.Tb_OrigHouse);
	P_CloseTable(DM_Mobile.Tb_OrigAmmeter);
    MyReleaseForm(TForm(F_LNoSet));
end;

procedure TF_LNoSet.E_SearchKeyPress(Sender: TObject; var Key: Char);
begin
	If Key = #13 Then
    Begin
//只需定位Tb_OrigAmmeter即可,House 由DBE_AHouseNo的OnChange事件确定
        DM_Mobile.Tb_OrigAmmeter.DisableControls;
    	DM_Mobile.Tb_OrigAmmeter.SetKey();
		DM_Mobile.Tb_OrigAmmeter.FieldByName('F_Transfer_No').AsString := vTransferNo;
        DM_Mobile.Tb_OrigAmmeter.FieldByName('F_House_No').AsString := E_Search.Text;
        DM_Mobile.Tb_OrigAmmeter.FieldByName('F_Ammeter_Order').AsInteger := 1;
        DM_Mobile.Tb_OrigAmmeter.GotoNearest;
        DM_Mobile.Tb_OrigAmmeter.EnableControls();
        If Visible Then//当窗口可视时
        	DBG_Ammeter.Fields[2].FocusControl;//自动使用光标位于第三个段内
    End;
end;

procedure TF_LNoSet.DBG_AmmeterDblClick(Sender: TObject);
begin
	With DM_Mobile Do
    Begin
    	E_Search.Text := Tb_OrigAmmeter['F_House_No'];
	   	Tb_OrigHouse.SetKey();
		Tb_OrigHouse.FieldByName('F_Transfer_No').AsString := vTransferNo;
    	Tb_OrigHouse.FieldByName('F_House_No').AsString := E_Search.Text;
    	Tb_OrigHouse.GotoNearest();
        if(DBE_HHouseNo.Text <> DBE_AHouseNo.Text) Then//没有找到合适的记录
        Begin
        	Tb_OrigHouse.Insert();
            Tb_OrigHouse['F_House_No'] := DBE_AHouseNo.Text;
            Tb_OrigHouse.Post();
        End;
    End;
end;

procedure TF_LNoSet.DBG_AmmeterKeyPress(Sender: TObject; var Key: Char);
begin
	If(Key = #13)Then
    Begin//当前列是逻辑表号列则下移一行
		if (DBG_Ammeter.SelectedField.FieldName = 'F_LNO') And (Not DM_Mobile.Tb_OrigAmmeter.Eof) Then
        Begin
//        	If DBE_LNo.Text = '' Then
//            	P_GenLNo(DBE_AHouseNo.Text);//根据户号生成逻辑表号
	    	DM_Mobile.Tb_OrigAmmeter.Next();
        End;
    End;
end;

procedure TF_LNoSet.DBG_HouseDblClick(Sender: TObject);
Var
    Key: Char;
begin
	With DM_Mobile Do
    Begin
    	E_Search.Text := DM_Mobile.Tb_OrigHouse['F_House_No'];
        Key := #13;
        E_SearchKeyPress(Sender, Key);
    End;
end;

procedure TF_LNoSet.DBG_HouseKeyPress(Sender: TObject; var Key: Char);
begin
	If Key = #13 Then
    Begin
    	E_Search.Text := DM_Mobile.Tb_OrigHouse['F_House_No'];
        E_SearchKeyPress(Sender, Key);
    End;
end;

procedure TF_LNoSet.DBE_AHouseNoChange(Sender: TObject);
begin
    if Not Visible Then Exit;
    If Not DM_Mobile.Tb_OrigHouse.Active Then Exit;
    If Not DM_Mobile.Tb_OrigAmmeter.Active Then Exit;
	If DBE_AHouseNo.Text = '' Then	Exit;
    DBG_AmmeterDblClick(Sender);
end;

procedure TF_LNoSet.DBG_HouseEnter(Sender: TObject);
begin
	DBN.DataSource := DBG_House.DataSource;
end;

procedure TF_LNoSet.DBG_AmmeterEnter(Sender: TObject);
begin
	DBN.DataSource := DBG_Ammeter.DataSource;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -