📄 lnoset_f.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 + -