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

📄 invsupliersearch.pas

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

interface

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

type
  TfrmSupSearch = class(TForm)
    stsBarCnt: TStatusBar;
    Panel2: TPanel;
    Panel3: TPanel;
    Label1: TLabel;
    edtSuplierCode: TEdit;
    Label2: TLabel;
    edtSuplierName: TEdit;
    btnConfirm: TBitBtn;
    btnCancel: TBitBtn;
    btnSearch: TBitBtn;
    ListViewSup: TGradLineListView;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnSearchClick(Sender: TObject);
    procedure btnConfirmClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure ListViewSupDblClick(Sender: TObject);
  private
    { Private declarations }
    Procedure SetListViewColumn;
    Function  SetListView(StartIX,SelRecID: LongInt; igroup: Integer; scode,sname: string): Integer;
    procedure MakeItemCaption(Item: TListItem);

  public
    { Public declarations }
    FSelectedSuplier: PSHIGEN;
    
  end;

var
  frmSupSearch: TfrmSupSearch;
  FAllSuplierList: TList;
  FColumnCnt, ListSortKey: Integer;  
  FListViewClear,
  FOnMakeItemCaption: Boolean;

implementation

uses InvDM;

{$R *.dfm}

// TListSortCompare --
function ListSortCompare(Item1, Item2: Pointer): Longint;
var DataType: Integer;
    Str1, Str2: string;
    Int1, Int2: Integer;
    Dbl1, Dbl2: Double;
begin
  Result := 0;
  Str1 := ''; Str2 := '';
  Int1 := 0;  Int2 := 0;
  Dbl1 := 0;  Dbl2 := 0;
  case Abs(ListSortKey) of
    1: begin //--
        Int1 := TSHIGEN(Item1^).SIGEN_CD;
        Int2 := TSHIGEN(Item2^).SIGEN_CD;
        DataType := 1;
       end;
    2: begin //--
        Str1 := TSHIGEN(Item1^).SIGEN_NM;
        Str2 := TSHIGEN(Item2^).SIGEN_NM;
        DataType := 0;
       end;
    else Exit;
  end;

  case DataType of
    0: if Str1 < Str2 then  Result := -1
       else if Str1 > Str2 then Result := 1
       else Result := 0;
    1: if Int1 < Int2 then  Result := -1
       else if Int1 > Int2 then Result := 1
       else Result := 0;
    2: if Dbl1 < Dbl2 then  Result := -1
       else if Dbl1 > Dbl2 then Result := 1
       else Result := 0;
  else Result := 0;
  end;
  if ListSortKey < 0 then Result := Result * -1;
end;

procedure TfrmSupSearch.FormCreate(Sender: TObject);
begin
  FAllSuplierList := TList.Create;
  FAllSuplierList.Clear;
end;

procedure TfrmSupSearch.FormShow(Sender: TObject);
begin
  SetListViewColumn;
  SetListView(0, -1, 4, '', '');
end;

procedure TfrmSupSearch.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
//
end;

procedure TfrmSupSearch.btnSearchClick(Sender: TObject);
begin
  Modalresult := mrNone;
  SetListView(0, -1, 4, trim(edtSuplierCode.Text), trim(edtSuplierName.Text));
end;

procedure TfrmSupSearch.btnConfirmClick(Sender: TObject);
var lcp: PSHIGEN;
begin
  ModalResult := mrNone;

  if ((ListViewSup.Selected=nil)or(ListViewSup.Selected.Data=nil)) then
  begin
    FSelectedSuplier := nil;
    MessageDlg('没有选定一个供应商编号,不能点击确定!',mtError,[mbOK],0);
    Exit;
  end
  else begin
    FSelectedSuplier := PSHIGEN(ListViewSup.Selected.Data);
    ModalResult := mrOK;
  end;
end;

procedure TfrmSupSearch.btnCancelClick(Sender: TObject);
begin
  Modalresult := mrCancel;
  close;
end;

procedure TfrmSupSearch.SetListViewColumn;
var
  Column: TListColumn;
begin
  ListViewSup.Columns.Clear;
  FColumnCnt := 0;
  //--
  Column         := ListViewSup.Columns.Add;
  Column.Width   := ListViewSup.Font.Size * 10;
  Column.Caption := '供应商编号';
  Inc(FColumnCnt);
  //--
  Column         := ListViewSup.Columns.Add;
  Column.Width   := ListViewSup.Font.Size * 40;
  Column.Caption := '供应商名称';
  Inc(FColumnCnt);
end;

Function TfrmSupSearch.SetListView(StartIX,SelRecID: LongInt; igroup: Integer; scode,sname: string): Integer;
var i,j: Integer;
    lcP: PSHIGEN;
    Item: TListItem;
    ItemCNT,SelNo: Integer;
begin
  Screen.Cursor  := crHourGlass;
  ItemCNT := 0;
  if StartIX <= 0 then begin
    FListViewClear := true;
    with ListViewSup.Items do begin
      BeginUpdate;
      Clear;
      EndUpdate;
    end;
    FListViewClear := false;
  end;

  SetListViewColumn;
  //--
  ListViewSup.Items.BeginUpdate;

  SelNo := 0;

  //FQueryList.Sort(TListSortCompare(@ListSortCompare));
  dm_Inventory.Readresource(FAllSuplierList, igroup, scode, sname);

  FOnMakeItemCaption := True;
  try
    for i := 0 to FAllSuplierList.Count-1 do begin
      lcP  := FAllSuplierList.Items[i];
      if lcp^.SIGEN_CD=0 then continue;
      Item := ListViewSup.Items.Add;
      for j := 0 to FColumnCnt-1 do Item.Subitems.Add('');
      lcP^.ITEM := Item;
      Item.Data := lcP;
      MakeItemCaption(Item);
      Inc(ItemCNT);
      if SelRecID = lcP^.REC_ID then SelNo := i;
    end;
  finally
    FOnMakeItemCaption := False;
    ListViewSup.Items.EndUpdate;
    if ListViewSup.Items.Count > 0 then ListViewSup.TopItem.Selected := True;

    stsBarCnt.Panels[0].Text := '符合条件的记录有:'+ IntToStr(ListViewSup.Items.Count)+' 条';
    Screen.Cursor := crDefault;
  end;
  if SelRecID > 0 then Result := SelNo
  else Result := ItemCNT;
end;

/////////////////////////////////////////////////////////////////////////
procedure TfrmSupSearch.MakeItemCaption(Item: TListItem);
  //-- Init int value and '' to 0 value
  function IntToStrNull(INum: Integer): string;
  begin
    if INum = 0 then Result := ''
    else Result := IntToStr(INum);
  end;
var lcP: PSHIGEN;
    skind: string;
begin
  if Item = nil then Exit;
  if Item.Data = nil then Exit;
  lcP := Item.Data;

  Item.Caption      := IntToStr(lcp^.SIGEN_CD);
  Item.SubItems[00] := lcp^.SIGEN_NM;
end;

procedure TfrmSupSearch.ListViewSupDblClick(Sender: TObject);
begin
  if ListViewSup.Selected.Selected then btnConfirm.Click;
end;

end.

⌨️ 快捷键说明

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