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

📄 paperparamsdef.~pas

📁 文件包含程序源原文件
💻 ~PAS
字号:
unit PaperParamsDef;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, EnhLV, GLLV, ExtCtrls, Buttons, Ex2nmedt, StdCtrls,
  InvDef, dpConst;

type
  TfrmPaperParamsDef = class(TForm)
    pnlTop: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    LstViewParams: TGradLineListView;
    Panel4: TPanel;
    edtDefines: TLabeledEdit;
    edtParams1: TLabeledEdit;
    edtParams2: TLabeledEdit;
    edtNotes: TLabeledEdit;
    edtMonth: TLabeledEdit;
    edtFlag: TEx2NumEdit;
    edtKeyLength: TEx2NumEdit;
    lblFlag: TLabel;
    lblKeyLength: TLabel;
    stsBarCnt: TStatusBar;
    Panel1: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure LstViewParamsChange(Sender: TObject; Item: TListItem;
      Change: TItemChange);
  private
    { Private declarations }
    Procedure ReadPaperParamsListView;
    function  SetListColumn: Integer;
    function  SetListView: Integer;
    procedure ClearListView;

    procedure MakeItemCaption(Item: TListItem);
    procedure Set_currItem(Item: TListItem);
    procedure SetNull;

    procedure SetMultilingual;
  public
    { Public declarations }
  end;

var
  frmPaperParamsDef: TfrmPaperParamsDef;

  FParamsList: TList;
  FSelectedItem: TListItem;
  FOnMakeItemCaption,
  FListViewClear,
  FOnCloseForm: Boolean;
  FColumnCount: integer;

implementation

uses Main, InvDM;

{$R *.dfm}

procedure TfrmPaperParamsDef.FormCreate(Sender: TObject);
begin
  Top  := 0;
  Left := frmMain.Width;
  Height := Height;
  Width := Width;

  FParamsList := TList.Create;
  FParamsList.Clear;

  SetMultilingual;
end;

procedure TfrmPaperParamsDef.FormShow(Sender: TObject);
begin
  Top  := 0;
  Left := frmMain.Width;
  //Height := Screen.Height-(Height - ClientHeight);
  Width := Screen.Width- frmMain.Width;
  
  ReadPaperParamsListView;
end;

procedure TfrmPaperParamsDef.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
//
end;

procedure TfrmPaperParamsDef.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  dm_inventory.ListFreeMemory(FParamsList);
end;

{********************************************************************************}
Procedure TfrmPaperParamsDef.ReadPaperParamsListView;
var
  i: Integer;
  SaveCursor: TCursor;
begin
  for i := 0 to FParamsList.Count - 1 do
    Dispose(FParamsList.Items[i]);
  FParamsList.Clear;

  SaveCursor := Screen.Cursor;
  Screen.Cursor := crSqlWait;

  try
    dm_Inventory.Read_PaperParams(FParamsList);

    FListViewClear:=True;

    FColumnCount := SetListColumn; //--

    LstViewParams.Selected := nil;

    if SetListView > 0 then
    begin
      LstViewParams.TopItem.Selected := True;
      LstViewParams.TopItem.Focused := True;
      LstViewParams.SetFocus;
      FSelectedItem := LstViewParams.TopItem;
      Set_currItem(FSelectedItem);
    end;

    FListViewClear := False;

  finally
    stsBarCnt.Panels[0].Text := '符合条件的记录有:'+ IntToStr(LstViewParams.Items.Count)+' 条';
    Screen.Cursor := crDefault;
  end;
end;

function  TfrmPaperParamsDef.SetListColumn: Integer;
var
  Column: TListColumn;
  Count: Integer;
begin
  LstViewParams.Columns.Clear;
  LstViewParams.Items.BeginUpdate;               //--
  LstViewParams.RowSelect := False;
  Count := 0;
  try
    Column := LstViewParams.Columns.Add;
      Column.Caption := GetMultiLingalMsg(90165, 'Defines');
      Column.Width   := LstViewParams.Font.Size * 20;
      Inc(Count);

      Column := LstViewParams.Columns.Add;
      Column.Caption := GetMultiLingalMsg(90166, 'Params1');
      Column.Width   := LstViewParams.Font.Size * 10;
      Inc(Count);

      Column := LstViewParams.Columns.Add;
      Column.Caption := GetMultiLingalMsg(90167, 'Params2');
      Column.Width   := LstViewParams.Font.Size * 10;
      Column.Alignment := taLeftJustify;
      Inc(Count);
      Column := LstViewParams.Columns.Add;
      Column.Caption := GetMultiLingalMsg(90168, 'Notes');
      Column.Width   := LstViewParams.Font.Size * 16;
      Column.Alignment := taLeftJustify;
      Inc(Count);
      Column := LstViewParams.Columns.Add;
      Column.Caption := GetMultiLingalMsg(90169, 'Month');
      Column.Width   := LstViewParams.Font.Size * 10;
      Column.Alignment := taLeftJustify;
      Inc(Count);
      Column := LstViewParams.Columns.Add;
      Column.Caption := GetMultiLingalMsg(90170, 'Flag');
      Column.Width   := LstViewParams.Font.Size * 6;
      Column.Alignment := taLeftJustify;
      Inc(Count);

      Column := LstViewParams.Columns.Add;
      Column.Caption := GetMultiLingalMsg(90171, 'KeyLength');
      Column.Width   := LstViewParams.Font.Size * 10;
      Column.Alignment := taLeftJustify;
      Inc(Count);
  finally
    LstViewParams.RowSelect := True;
    LstViewParams.Items.EndUpdate;               //--
  end;
  Result := Count;
end;

function  TfrmPaperParamsDef.SetListView: Integer;
var
  i, j, ItemCount: Integer;
  lcP: PPaperParams;
  Item: TListItem;
begin
  ItemCount := 0;
  FListViewClear := True;

  ClearListView;

  FListViewClear := False;
  LockWindowUpdate(LstViewParams.Handle);
  try
    for i := 0 to FParamsList.Count - 1 do begin
      lcP := FParamsList[i];

      Item := LstViewParams.Items.Add;
      for j := 0 to FColumnCount - 2 do
        Item.Subitems.Add('');

      lcP^.item := Item;
      Item.Data := lcP;

      MakeItemCaption(Item);
      Inc(ItemCount);
   end;
  finally
    LockWindowUpdate(0);
  end;
  Result := ItemCount;
end;

procedure TfrmPaperParamsDef.ClearListView;
begin
  LstViewParams.Items.BeginUpdate;
  try
    LstViewParams.Items.Clear;
  finally
    LstViewParams.Items.EndUpdate;
  end;
end;

procedure TfrmPaperParamsDef.MakeItemCaption(Item: TListItem);
var
  lcP: PPaperParams;
begin
  if Item = nil then Exit;

  lcP := Item.Data;
  if lcP = nil then Exit;

  FOnMakeItemCaption := True; //--
  Item.Caption     := lcP^.defines;
  Item.SubItems[0] := lcP^.params1;
  Item.SubItems[1] := lcP^.params2;
  Item.SubItems[2] := lcp^.snote;
  Item.SubItems[3] := lcp^.month;
  Item.SubItems[4] := IntToStr(lcp^.flag);
  Item.SubItems[5] := IntToStr(lcp^.keylength);
  FOnMakeItemCaption := False;
end;

procedure TfrmPaperParamsDef.Set_currItem(Item: TListItem);
var
  lcp: PPaperParams;
begin
  if (Item = nil) or ((item = nil) and (Item.Data <> nil)) then
  begin
    SetNull;
    exit;
  end
  else begin
    FSelectedItem := nil;
    FSelectedItem := Item;
    lcp := Item.Data;

    edtDefines.Text    := lcp^.defines;
    edtParams1.Text    := lcp^.params1;
    edtParams2.Text    := lcp^.params2;
    edtNotes.Text      := lcp^.snote;
    edtMonth.Text      := lcp^.month;
    edtFlag.Value      := lcp^.flag;
    edtKeyLength.Value := lcp^.keylength;
  end;
end;

procedure TfrmPaperParamsDef.SetNull;
begin
  FSelectedItem := nil;
  edtDefines.Text    := '';
  edtParams1.Text    := '';
  edtParams2.Text    := '';
  edtNotes.Text      := '';
  edtMonth.Text      := '';
  edtFlag.Value      := 0;
  edtKeyLength.Value := 12;
end;

procedure TfrmPaperParamsDef.LstViewParamsChange(Sender: TObject; Item: TListItem; Change: TItemChange);
begin
  if FOnCloseForm then exit;
  if Item.Data = nil then
  begin
    setNull;
    exit;
  end
  else Set_currItem(LstViewParams.Selected);
end;

procedure TfrmPaperParamsDef.SetMultilingual;
begin
  self.Caption                 := GetMultiLingalMsg(90164, 'Auto Paper Params Define');
  pnlTop.Caption               := GetMultiLingalMsg(90164, 'Auto Paper Params Define');
  edtDefines.EditLabel.Caption := GetMultiLingalMsg(90165, 'Defines');
  edtParams1.EditLabel.Caption := GetMultiLingalMsg(90166, 'Params1');
  edtParams2.EditLabel.Caption := GetMultiLingalMsg(90167, 'Params2');
  edtNotes.EditLabel.Caption   := GetMultiLingalMsg(90168, 'Notes');
  edtMonth.EditLabel.Caption   := GetMultiLingalMsg(90169, 'Month');
  lblFlag.Caption              := GetMultiLingalMsg(90170, 'Flag');
  lblKeyLength.Caption         := GetMultiLingalMsg(90171, 'KeyLength');
end;

end.

⌨️ 快捷键说明

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