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

📄 ugoods.pas

📁 非长好的DELPHI办公系统 直接可以用
💻 PAS
字号:
unit uGoods;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ActnMenus, ToolWin, ActnMan, ActnCtrls, StdActns, ActnList,
  XPStyleActnCtrls, ImgList, ExtCtrls, ComCtrls,jpeg,DB, DBCtrls, Menus,uDM;

type
  TfrmGoods = class(TForm)
    ToolbarImages: TImageList;
    ActionManager1: TActionManager;
    actView1: TAction;
    actView2: TAction;
    actView3: TAction;
    actView4: TAction;
    actNew: TAction;
    actEdit: TAction;
    actDelete: TAction;
    ActionToolBar2: TActionToolBar;
    Panel1: TPanel;
    Splitter1: TSplitter;
    Panel2: TPanel;
    Tree: TTreeView;
    ListView1: TListView;
    imlSmall: TImageList;
    imlLarge: TImageList;
    actRefresh: TAction;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    actExit: TAction;
    procedure FormCreate(Sender: TObject);
    procedure TreeClick(Sender: TObject);
    procedure actViewExecute(Sender: TObject);
    procedure ListView1CustomDraw(Sender: TCustomListView;
      const ARect: TRect; var DefaultDraw: Boolean);
    procedure FormDestroy(Sender: TObject);
    procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure actEditExecute(Sender: TObject);
    procedure actExitExecute(Sender: TObject);
    procedure actNewExecute(Sender: TObject);
    procedure actRefreshExecute(Sender: TObject);
    procedure actDeleteExecute(Sender: TObject);
    procedure ListView1DblClick(Sender: TObject);
    procedure actFindExecute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    FJpg:TJPEGImage;
    procedure AddChildNodes(nodeName:String;SQLStr:string;imlID:integer);
  public

  end;

var
  frmGoods: TfrmGoods;


implementation

uses  ufrmEdit;

{$R *.dfm}



procedure TfrmGoods.AddChildNodes(nodeName:String;SQLStr:string;imlID:integer);
var
  curID,SubNodeName:string;
  subnode,subnodechild:TTreenode;
begin
    subnode:=tree.Items.AddChild(tree.TopItem,nodeName);
    subnode.ImageIndex:=imlID;
    with dm.adqGoods do
    begin
      close;
      sql.Clear;
      sql.Add(SQLStr);
      open;
      first;
      while not Eof do
      begin
        curID:=trim(FieldByName('a').AsString);
        SubNodeName:=curID;
        subnodechild:=tree.items.addchild(subnode,SubNodeName);
        subnodechild.ImageIndex:=2;
        next;
      end;
    end;
end;


procedure TfrmGoods.FormCreate(Sender: TObject);
var
  NewColumn: TListColumn;
begin
 
  actRefreshExecute(nil);
  with ListView1 do
  begin
    SmallImages := imlSmall;
    LargeImages := imlLarge;
    NewColumn := Columns.Add;

    NewColumn.Caption :='名称';
    NewColumn.Width:=200;
     NewColumn := Columns.Add;
    NewColumn.Caption :='编码';
    NewColumn.Width:=70;
    NewColumn := Columns.Add;
    NewColumn.Caption :='所属类别';
    NewColumn.Width:=100;

    NewColumn := Columns.Add;
    NewColumn.Caption :='规格';
    NewColumn.Width:=80;
    NewColumn := Columns.Add;
    NewColumn.Caption :='计量单位';
    NewColumn.Width:=80;
    NewColumn := Columns.Add;
    NewColumn.Caption :='数量';
    NewColumn.Width:=80;
  end;
  Fjpg:=TJPEGImage.Create;
  Fjpg.LoadFromFile('bg003.jpg');
end;

procedure TfrmGoods.TreeClick(Sender: TObject);
var
  a,b:string;
  I: Integer;
  ListItem: TListItem;
begin
  a:=tree.Selected.Text;
  with dm.adqGoods do
  begin
    Filtered:=false;
    if (a<>'全部') then
    begin
      b:=tree.Selected.Parent.Text;
      Filtered:=false;
      if  (b<>'全部') then
      begin
        Filter:=b+'='+#39+a+#39;
        Filtered:=True;
      end;
    end;
  end;

  with ListView1 do
  begin
    SmallImages := imlSmall;
    LargeImages := imlLarge;
    Clear;
    with dm.adqGoods do
    begin
      first;
     
      for I := 0 to RecordCount - 1 do
      begin
        ListItem := Items.Add;

        Listitem.Caption :=FieldByName('名称').AsString;
        ListItem.ImageIndex :=2;
        ListItem.SubItems.Add(FieldByName('编码').AsString);
        ListItem.SubItems.Add(FieldByName('类别').AsString);
        ListItem.SubItems.Add(FieldByName('规格').AsString);
        ListItem.SubItems.Add(FieldByName('计量单位').AsString);
        ListItem.SubItems.Add(FieldByName('数量').AsString);

        next;
      end;
    end;
  end;
end;

procedure TfrmGoods.actViewExecute(Sender: TObject);
begin
  ListView1.ViewStyle := TViewStyle((Sender as TComponent).Tag);

end;

procedure TfrmGoods.ListView1CustomDraw(Sender: TCustomListView;
  const ARect: TRect; var DefaultDraw: Boolean);
var
  x,y,w,h:Integer;
begin
  with FJpg do
  begin
    w:=Width;
    h:=Height;
  end;
  y:=0;
  while y<ListView1.Height do
  begin
    x:=0;
    while x<ListView1.Width do
    begin
      ListView1.Canvas.Draw(x,y,FJpg);
      Inc(x,w);
    end;
    Inc(y,h);
  end;
end;

procedure TfrmGoods.FormDestroy(Sender: TObject);
begin
  FJpg.free;
end;

procedure TfrmGoods.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin

  dm.adqGoods.Locate('名称',Item.Caption,[loPartialKey]);
  
end;

procedure TfrmGoods.actEditExecute(Sender: TObject);
var
  EditForm:TEditForm;
  NeedRefresh:Boolean;
begin
  NeedRefresh:=False;
  EditForm :=TEditForm.Create(nil);
  try
    DM.adqGoods.edit;
    
    if (EditForm.ShowModal=mrOK) then
    begin
      DM.adqGoods.post;
      NeedRefresh:=True;
    end
    else
      DM.adqGoods.Cancel;
  finally
    EditForm.Free;
  end;
  if NeedRefresh then
  begin
    DM.adqGoods.Filtered:=false;
    Tree.FullCollapse;
  end;
end;

procedure TfrmGoods.actExitExecute(Sender: TObject);
begin
  close;
end;

procedure TfrmGoods.actNewExecute(Sender: TObject);
var
  EditForm:TEditForm;
  NeedRefresh:Boolean;
begin
  NeedRefresh:=True;
  EditForm :=TEditForm.Create(nil);
  try
    dm.adqGoods.Append;
    if (EditForm.ShowModal=mrOK) then
    begin
      try
        dm.adqGoods.Post;
      except
        on e:exception do
        begin
          if e.Message='Empty row cannot be inserted. Row must have at least one column value set' then
            application.MessageBox('没有输入内容的空记录无效!','提示',MB_ICONWARNING);
          dm.adqGoods.Cancel;
          NeedRefresh:=False;
        end;
      end;
    end
    else
    begin
     dm.adqGoods.Cancel;
     NeedRefresh:=False;
    end;
  finally
    EditForm.Free;
  end;
  if NeedRefresh then
    actRefreshExecute(nil);
end;

procedure TfrmGoods.actRefreshExecute(Sender: TObject);
var
  strQry:string;
  RootNode:TTreenode;
begin
  dm.adqGoods.Filtered:=false;
  tree.Items.Clear;
  RootNode:= Tree.Items.Add(nil, '全部'); { Add a root node }
  RootNode.ImageIndex:=1;
  strQry:='select distinct 类别 as a from goodsTable ';
  AddChildNodes('类别',strQry,3);
 
  with dm.adqGoods do
  begin
    close;
    sql.Clear;
    sql.Add('select *  from goodsTable order by 名称');
    open;

  end;
  
end;

procedure TfrmGoods.actDeleteExecute(Sender: TObject);
var
  str:Pchar;
begin
  str:=Pchar('是否删除记录《'+dm.adqGoods.FieldByName('名称').AsString+'》?');
  if (Application.MessageBox(str,'提示',MB_YESNO+MB_ICONQUESTION)=IDYES) then
  begin
    dm.adqGoods.Delete;
    TreeClick(Sender);
  end;
end;

procedure TfrmGoods.ListView1DblClick(Sender: TObject);
begin
  actEditExecute(nil);
end;

procedure TfrmGoods.actFindExecute(Sender: TObject);
begin
  //查询
end;

procedure TfrmGoods.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  self := nil;
end;

end.

⌨️ 快捷键说明

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