📄 vendor.pas
字号:
unit vendor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Grids, DBGridEh, StdCtrls, Menus, EhLibADO;
type
Tfvendor = class(TForm)
Panel1: TPanel;
dg_view: TDBGridEh;
Label1: TLabel;
lbl_info: TLabel;
PopupMenu1: TPopupMenu;
A1: TMenuItem;
M1: TMenuItem;
D1: TMenuItem;
R1: TMenuItem;
N1: TMenuItem;
L1: TMenuItem;
pl_vendor: TPanel;
Panel3: TPanel;
Label2: TLabel;
Label3: TLabel;
tb_name: TEdit;
Label4: TLabel;
tb_addr: TEdit;
Label5: TLabel;
tb_linker: TEdit;
Label6: TLabel;
tb_phone: TEdit;
Label7: TLabel;
tb_memo: TMemo;
Button1: TButton;
Button2: TButton;
procedure A1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure M1Click(Sender: TObject);
procedure D1Click(Sender: TObject);
procedure R1Click(Sender: TObject);
procedure L1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure tb_nameKeyPress(Sender: TObject; var Key: Char);
procedure tb_addrKeyPress(Sender: TObject; var Key: Char);
procedure tb_linkerKeyPress(Sender: TObject; var Key: Char);
procedure tb_phoneKeyPress(Sender: TObject; var Key: Char);
procedure dg_viewKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
flag : char;
{ Private declarations }
public
{ Public declarations }
end;
var
fvendor: Tfvendor;
implementation
uses dm,vks;
{$R *.dfm}
procedure Tfvendor.A1Click(Sender: TObject);
begin
dg_view.Enabled := false;
pl_vendor.Visible := true;
flag := 'A';
tb_name.SetFocus;
end;
procedure Tfvendor.Button2Click(Sender: TObject);
begin
pl_vendor.Visible := false;
tb_name.Clear;
tb_addr.Clear;
tb_linker.Clear;
tb_phone.Clear;
tb_memo.Clear;
dg_view.Enabled := true;
end;
procedure Tfvendor.M1Click(Sender: TObject);
begin
if fdm.qvendor.RecordCount>0 then
begin
dg_view.Enabled := false;
pl_vendor.Visible := true;
flag := 'M';
tb_name.Text := dg_view.Fields[1].AsString;
tb_addr.Text := dg_view.Fields[2].AsString;
tb_linker.Text := dg_view.Fields[3].AsString;
tb_phone.Text := dg_view.Fields[4].AsString;
tb_memo.Text := dg_view.Fields[5].AsString;
tb_name.SetFocus;
end;
end;
procedure Tfvendor.D1Click(Sender: TObject);
var
idx : integer;
begin
if (fdm.qvendor.RecordCount>0) and (vks.box('确定要删除本数据吗?'#13#10'如果没有关联数据,将能被删除.','供应商数据删除窗口')) then
begin
with fdm.q do
begin
close;
sql.Text := 'delete from [vendor] where id='+dg_view.Fields[0].AsString;
try
if dg_view.DataSource.DataSet.RecordCount<>1 then idx := dg_view.DataSource.DataSet.RecNo else idx := 0;
execsql;
R1Click(Sender);
if idx<>0 then dg_view.DataSource.DataSet.RecNo := idx;
close;
except
close;
vks.info(1008);
end;
end;
end;
end;
procedure Tfvendor.R1Click(Sender: TObject);
begin
fdm.qvendor.Close;
fdm.qvendor.Open;
lbl_info.Caption := '共'+IntToStr(fdm.qvendor.RecordCount)+'条';
end;
procedure Tfvendor.L1Click(Sender: TObject);
begin
if fdm.qvendor.RecordCount>0 then
begin
with fdm.q do
begin
close;
sql.Text := 'update [vendor] set flag=not flag where id='+dg_view.Fields[0].AsString;
try
execsql;
R1Click(Sender);
close;
except
close;
vks.info(1008);
end;
end;
end;
end;
procedure Tfvendor.FormShow(Sender: TObject);
begin
if not fdm.qvlist.Active then fdm.qvlist.Active := true;
R1Click(Sender);
end;
procedure Tfvendor.Button1Click(Sender: TObject);
var
cnt : string;
idx : integer;
begin
if tb_name.Text='' then
begin
vks.info(1013);
tb_name.SetFocus;
exit;
end;
if tb_addr.Text='' then
begin
vks.info(1014);
tb_addr.SetFocus;
exit;
end;
if tb_linker.Text='' then
begin
vks.info(1015);
tb_linker.SetFocus;
exit;
end;
if tb_phone.Text='' then
begin
vks.info(1016);
tb_phone.SetFocus;
exit;
end;
with fdm.q do
begin
close;
sql.Text := 'select count(1) as cnt from [vendor] where name='+AnsiQuotedStr(tb_name.Text,#39);
if flag='M' then sql.Text := sql.Text + ' and id<>'+dg_view.Fields[0].AsString;
try
Open;
cnt := FieldByName('cnt').AsString;
close;
if cnt<>'0' then
begin
vks.info(1011);
exit;
end;
if flag='A' then
begin
sql.Text := 'insert into [vendor](name,addr,linker,phone,[memo]) values('+AnsiQuotedStr(tb_name.Text,#39)+',';
sql.Text := sql.Text+AnsiQuotedStr(tb_addr.Text,#39)+','+AnsiQuotedStr(tb_linker.Text,#39)+',';
sql.Text := sql.Text+AnsiQuotedStr(tb_phone.Text,#39)+','+AnsiQuotedStr(tb_memo.Text,#39)+')';
end
else
begin
sql.Text := 'update [vendor] set name='+AnsiQuotedStr(tb_name.Text,#39)+',addr='+AnsiQuotedStr(tb_addr.Text,#39);
sql.Text := sql.Text+',linker='+AnsiQuotedStr(tb_linker.Text,#39)+',phone='+AnsiQuotedStr(tb_phone.Text,#39);
sql.Text := sql.Text+',[memo]='+AnsiQuotedStr(tb_memo.Text,#39)+' where id='+dg_view.Fields[0].AsString;
end;
try
if flag='A' then idx := dg_view.DataSource.DataSet.RecordCount+1
else idx:=dg_view.DataSource.DataSet.RecNo;
execsql;
Button2Click(Sender);
R1Click(Sender);
dg_view.DataSource.DataSet.RecNo := idx;
dg_view.SetFocus;
except
close;
vks.info(1008);
end;
except
close;
vks.info(1008);
end;
end;
end;
procedure Tfvendor.tb_nameKeyPress(Sender: TObject; var Key: Char);
begin
if (key=#13) and (tb_name.Text<>'') then tb_addr.SetFocus;
end;
procedure Tfvendor.tb_addrKeyPress(Sender: TObject; var Key: Char);
begin
if (key=#13) and (tb_addr.Text<>'') then tb_linker.SetFocus;
end;
procedure Tfvendor.tb_linkerKeyPress(Sender: TObject; var Key: Char);
begin
if (key=#13) and (tb_linker.Text<>'') then tb_phone.SetFocus;
end;
procedure Tfvendor.tb_phoneKeyPress(Sender: TObject; var Key: Char);
begin
if (key=#13) and (tb_phone.Text<>'') then tb_memo.SetFocus;
end;
procedure Tfvendor.dg_viewKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=vk_f3 then A1Click(Sender);
if key=vk_f4 then M1Click(Sender);
if key=vk_delete then D1Click(Sender);
if key=vk_f5 then R1Click(Sender);
if key=vk_f6 then L1Click(Sender);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -