📄 spwh.pas
字号:
unit spwh;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, DBTables, Grids, DBGrids, ComCtrls, ExtCtrls, Menus,
Buttons, ImgList, DBCtrls;
type
TxfwhForm = class(TForm)
GroupBox1: TGroupBox;
Query1: TQuery;
DataSource1: TDataSource;
GroupBox2: TGroupBox;
DBGrid1: TDBGrid;
Panel1: TPanel;
TreeView1: TTreeView;
TreeView2: TTreeView;
Table1: TTable;
ComboBox1: TComboBox;
GroupBox3: TGroupBox;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
Memo1: TMemo;
BitBtn1: TBitBtn;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
DBNavigator1: TDBNavigator;
ImageList1: TImageList;
procedure FormCreate(Sender: TObject);
procedure TreeView2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure Table1AfterOpen(DataSet: TDataSet);
procedure BitBtn4Click(Sender: TObject);
procedure TreeView2Change(Sender: TObject; Node: TTreeNode);
procedure Table1AfterInsert(DataSet: TDataSet);
procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
xfwhForm: TxfwhForm;
implementation
uses dataproc, srdl, srlb;
{$R *.DFM}
procedure TxfwhForm.FormCreate(Sender: TObject);
begin
DataSource1.DataSet:=nil;
treeview1.Items.Clear;
treeview2.Items.Clear;
query1.Active:=false;
query1.SQL.Clear;
query1.SQL.Add('select * from custype order by CusType');
// Table1.TableName:='商品类别';
query1.Prepare;
query1.Open;
QUERY1.First;
while not query1.Eof do
begin
if (trim(query1.FieldByName('parentcode').asstring)='0') or (trim(query1.FieldByName('parentcode').asstring)='00') then
BEGIN
treeview1.Selected:=treeview1.Items.Add(treeview1.items.getfirstnode,trim(query1.FieldByName('CusType').asstring));
treeview2.Selected:=treeview2.Items.Add(treeview2.items.getfirstnode,trim(query1.FieldByName('CusName').asstring));
treeview2.Selected.ImageIndex:=0;
treeview2.Selected.SelectedIndex:=1;
END
else
begin
while trim(treeview1.Selected.Text)<>trim(query1.FieldByName('parentcode').asstring) do
BEGIN
treeview1.Selected:=treeview1.Selected.Parent;
treeview2.Selected:=treeview2.Selected.Parent;
END;
treeview1.Selected:=treeview1.Items.AddChild(treeview1.selected,trim(query1.FieldByName('CusType').asstring));
treeview2.Selected:=treeview2.Items.AddChild(treeview2.selected,trim(query1.FieldByName('CusName').asstring));
treeview2.Selected.ImageIndex:=0;
treeview2.Selected.SelectedIndex:=1;
end;
query1.Next;
end;
DataSource1.DataSet:=table1;
try
TreeView2Click(nil);
except
end;
combobox1.Text:='';
treeview1.FullCollapse;
treeview2.FullCollapse;
end;
procedure TxfwhForm.TreeView2Click(Sender: TObject);
begin
if DataSource1.DataSet=table1 then
begin
DBNavigator1.Enabled:=(length(trim(treeview1.Items[treeview2.Selected.AbsoluteIndex].Text))>=3);
BitBtn1.Enabled:=(length(trim(treeview1.Items[treeview2.Selected.AbsoluteIndex].Text))>=3);
BitBtn3.Enabled:=BitBtn1.Enabled;
table1.Active:=false;
table1.Filter:='CusType='''+trim(treeview1.Items[treeview2.Selected.AbsoluteIndex].Text)+'''';
table1.Filtered:=true;
table1.Active:=true;
table1.Fields[3].Visible:=false;
table1.Fields[11].Visible:=false;
end;
end;
procedure TxfwhForm.BitBtn3Click(Sender: TObject);
begin
if messagedlg('确信删除这条记录吗!!',mtwarning,[mbok,mbcancel],0)=mrok then
if trim(table1.FieldByName('CusCode').asstring)<>'' then
begin
table1.delete;
end;
end;
procedure TxfwhForm.Table1AfterOpen(DataSet: TDataSet);
var i:integer;
begin
table1.First;
if trim(table1.FieldByName('CusCode').asstring)<>'' then bitbtn4.Enabled:=true else bitbtn4.Enabled:=false;
for i:=0 to DBGrid1.FieldCount-1 do
DBGrid1.Fields[i].DisplayWidth:=8;
dbgrid1.Fields[1].DisplayWidth:=10;
dbgrid1.Fields[2].DisplayWidth:=12;
dbgrid1.Fields[4].DisplayWidth:=10;
dbgrid1.Fields[5].DisplayWidth:=10;
end;
procedure TxfwhForm.BitBtn4Click(Sender: TObject);
var ls:string; i:integer;
begin
if dbgrid1.Fields[0].AsString[8]='9' then
ls:='a'
else
begin
if dbgrid1.Fields[0].AsString[8]<>'z' then
ls:=chr(ord(dbgrid1.Fields[0].AsString[8])+1);
end;
// combobox1.Items.Add(copy(dbgrid1.Fields[0].AsString,1,7)+ls);
for i:=1 to dbgrid1.FieldCount-1 do
begin
combobox1.Items.Add(dbgrid1.Fields[i].AsString);
end;
table1.append;
for i:=1 to dbgrid1.FieldCount-1 do
begin
dbgrid1.Fields[i].AsString:=combobox1.Items[i];
//i:=i+1;
end;
table1.Post;
TreeView2Click(nil);
table1.Last;
DBGrid1.SelectedIndex:=3;
combobox1.Items.Clear;
end;
procedure TxfwhForm.TreeView2Change(Sender: TObject; Node: TTreeNode);
begin
TreeView2Click(nil);
end;
procedure TxfwhForm.Table1AfterInsert(DataSet: TDataSet);
begin
table1.FieldByName('CusType').asstring:=trim(treeview1.Items[treeview2.Selected.AbsoluteIndex].Text);
table1.FieldByName('CusName').asstring:='';
query1.Active:=false;
query1.SQL.Clear;
query1.SQL.Add('select max(substring(CusCode,5,2)) from CusItem where CusType='''+trim(treeview1.Items[treeview2.Selected.AbsoluteIndex].Text)+'''');
query1.Prepare;
query1.Open;
if trim(query1.fields[0].Asstring)='' then
table1.FieldByName('CusCode').asstring:=trim(treeview1.Items[treeview2.Selected.AbsoluteIndex].Text)+'00'
else
table1.FieldByName('CusCode').asstring:=trim(treeview1.Items[treeview2.Selected.AbsoluteIndex].Text)
+copy('0'+inttostr(query1.fields[0].Asinteger+1),length(inttostr(query1.fields[0].Asinteger+1)),2);
query1.Active:=false;
query1.SQL.Clear;
end;
procedure TxfwhForm.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
begin
if DBGrid1.SelectedIndex<DBGrid1.FieldCount-1 then
DBGrid1.SelectedIndex:=DBGrid1.SelectedIndex+1
else
begin
table1.Next;
if table1.Eof then
begin
key:=45;
shift:=[];
end
else
DBGrid1.SelectedIndex:=1;
end;
end;
if (key=40) and (BitBtn3.Enabled) then
begin
key:=0;
table1.Next;
if table1.Eof then
begin
key:=45;
shift:=[];
end;
end;
if (key=45) and (shift=[]) and (BitBtn1.Enabled) then
begin
key:=0;
table1.append;
table1.Post;
TreeView2Click(nil);
table1.Last;
DBGrid1.SelectedIndex:=1;
end;
if (key=45) and (shift=[ssCtrl]) and (BitBtn4.Enabled) then BitBtn4Click(nil);
end;
procedure TxfwhForm.BitBtn5Click(Sender: TObject);
begin
close;
end;
procedure TxfwhForm.BitBtn1Click(Sender: TObject);
var key:word;
begin
key:=45;
DBGrid1KeyDown(nil,key,[]);
end;
procedure TxfwhForm.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if dbgrid1.SelectedIndex=0 then key:=#0;
end;
procedure TxfwhForm.N1Click(Sender: TObject);
var lb,mc:string;
begin
Application.CreateForm(TsrdlForm, srdlForm);
srdlForm.showmodal;
mc:=trim(srdlForm.mc.Text);
srdlForm.Free;
if mc='' then exit;
lb:=xdh('CusType where (parentcode=''0'' or parentcode=''00'')','','CusType',2);
Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQL.Add('insert into CusType values('''+lb+''','''+mc+''',''00'')');
Query1.ExecSQL;
Query1.Active:=false;
Query1.SQL.Clear;
treeview1.Selected:=treeview1.Items.Add(treeview1.items.getfirstnode,trim(lb));
treeview2.Selected:=treeview2.Items.Add(treeview2.items.getfirstnode,trim(mc));
end;
procedure TxfwhForm.N2Click(Sender: TObject);
var lb,mc:string;
begin
if length(trim(treeview1.Items[treeview2.Selected.AbsoluteIndex].Text))>2 then
begin
treeview2.Selected:=treeview2.Selected.Parent;
end;
Application.CreateForm(TsrlbForm, srlbForm);
srlbForm.lbh.Text:=trim(treeview1.Items[treeview2.Selected.AbsoluteIndex].Text);
srlbForm.lmc.Text:=trim(treeview2.Items[treeview2.Selected.AbsoluteIndex].Text);
lb:=trim(srlbForm.lbh.Text)+xdh('CusType where parentcode='''+srlbForm.lbh.Text+'''','','CusType',2);
srlbForm.showmodal;
mc:=trim(srlbForm.mc.Text);
srlbForm.Free;
if mc='' then exit;
Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQL.Add('insert into CusType values('''+lb+''','''+mc+''','''+copy(trim(treeview1.Items[treeview2.Selected.AbsoluteIndex].Text),1,2)+''')');
Query1.ExecSQL;
Query1.Active:=false;
Query1.SQL.Clear;
treeview1.Selected.SelectedIndex:=treeview2.Selected.SelectedIndex;
treeview1.Selected:=treeview1.Items.AddChild(treeview1.selected,trim(lb));
treeview2.Selected:=treeview2.Items.AddChild(treeview2.selected,trim(mc));
end;
procedure TxfwhForm.N3Click(Sender: TObject);
begin
if Application.MessageBox(pchar('确实要删除此类别吗?'), '提示信息', 65)<>IDOK then exit;
if (length(trim(treeview1.Items[treeview2.Selected.AbsoluteIndex].Text))<=2) then
begin
if (treeview2.Items.Count>treeview2.Selected.AbsoluteIndex+1)
and (length(trim(treeview1.Items[treeview2.Selected.AbsoluteIndex+1].Text))>2) then
begin
Application.MessageBox(pchar('此类别有子类别,请先删除子类别!'), '提示信息', 64);
exit;
end;
end
else
begin
Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQL.Add('select * from CusItem where CusType='''+trim(treeview1.Items[treeview2.Selected.AbsoluteIndex].Text)+'''');
Query1.Open;
if Query1.RecordCount>0 then
begin
Application.MessageBox(pchar('此类别下有明细,请先删除明细!'), '提示信息', 64);
Query1.Active:=false;
Query1.SQL.Clear;
exit;
end;
end;
Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQL.Add('delete from CusType where CusType='''+trim(treeview1.Items[treeview2.Selected.AbsoluteIndex].Text)+'''');
Query1.ExecSQL;
Query1.Active:=false;
Query1.SQL.Clear;
FormCreate(nil);
end;
procedure TxfwhForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
query1.Active:=false;
query1.SQL.Clear;
query1.SQL.Add('delete from CusItem where CusCode=''''');
query1.ExecSQL;
query1.Active:=false;
query1.SQL.Clear;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -