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