📄 goodsselectunit.pas
字号:
unit GoodsSelectUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids, Buttons, ExtCtrls, ToolWin, DB,
DBTables;
type
TGoodsSelectForm = class(TForm)
PanelBkGnd: TPanel;
SG_data: TStringGrid;
StatusBar1: TStatusBar;
Label2: TLabel;
SB_find: TSpeedButton;
E_find: TEdit;
ControlBar1: TControlBar;
ToolBar1: TToolBar;
TB_Select: TToolButton;
TB_EDIT: TToolButton;
TB_DEL: TToolButton;
ToolButton5: TToolButton;
tb_Add: TToolButton;
TB_EXIT: TToolButton;
Panel: TPanel;
Label1: TLabel;
CB_Name: TComboBox;
Bevel1: TBevel;
Query_data: TQuery;
query_basemess: TQuery;
procedure TB_SelectClick(Sender: TObject);
procedure TB_EDITClick(Sender: TObject);
procedure tb_AddClick(Sender: TObject);
procedure CB_NameChange(Sender: TObject);
procedure TB_EXITClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SG_dataDblClick(Sender: TObject);
procedure User_addlist(S_name: string);
procedure E_findChange(Sender: TObject);
procedure E_findKeyPress(Sender: TObject; var Key: Char);
procedure TB_DELClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
GoodsSelectForm: TGoodsSelectForm;
implementation
uses GoodsEditUnit, FunctionUnit, MainUnit;
{$R *.dfm}
procedure TGoodsSelectForm.User_addlist(S_name: string);
var
I_lines: integer;
begin
for I_lines := 1 to sg_data.RowCount do
begin
sg_data.Rows[I_lines].Clear;
end;
//增加查找列表
with query_basemess do
begin
close;
if (s_name = '所有商品') or (trim(s_name) = '') then
sql.text := 'select * from goods order by name'
else
sql.text := 'select * from goods where name="' + s_name + '" order by name';
open;
if recordcount > 0 then
sg_data.rowcount := recordcount + 1
else
sg_data.RowCount := 2;
first;
I_lines := 1;
while not eof do
begin
sg_data.Cells[0, I_lines] := inttostr(I_lines);
sg_data.cells[1, I_lines] := fieldbyname('id').asstring;
sg_data.cells[2, I_lines] := fieldbyname('name').asstring;
sg_data.Cells[3, I_lines] := fieldbyname('type').asstring;
sg_data.Cells[4, I_lines] := fieldbyname('price').asstring;
sg_data.Cells[5, I_lines] := fieldbyname('sellprice').asstring;
sg_data.Cells[6, I_lines] := fieldbyname('unit').asstring;
sg_data.Cells[7, I_lines] := fieldbyname('memo').asstring;
I_lines := I_lines + 1;
next;
end;
close;
end;
sg_data.Row := 1;
if sg_data.RowCount > 1 then
sg_data.FixedRows := 1
else
sg_data.FixedRows := 0;
end;
procedure TGoodsSelectForm.TB_SelectClick(Sender: TObject);
begin
ModalResult := mrOK;
end;
procedure TGoodsSelectForm.TB_EDITClick(Sender: TObject);
var
I_temp: integer;
B_find: Boolean;
begin
if SG_data.Cells[1, 1] = '' then exit;
Application.CreateForm(TGoodsEditForm, GoodsEditForm);
GoodsEditForm.Caption := '商品信息(编辑)';
GoodsEditForm.P_state := 1;
with GoodsEditForm do
begin
P_state := 1;
e_id.Text := SG_data.Cells[1, SG_data.Row];
e_name.Text := SG_data.Cells[2, SG_data.Row];
e_type.text := SG_data.Cells[3, SG_data.Row];
e_price.Text := sg_data.cells[4, sg_data.Row];
e_sellprice.Text := sg_data.cells[5, sg_data.Row];
e_unit.Text := SG_data.Cells[6, SG_data.Row];
e_memo.Text := SG_data.Cells[7, SG_data.Row];
end;
GoodsEditForm.showmodal;
with query_data do
begin
close;
sql.Clear;
sql.text := 'select * from goods order by name';
open;
CB_NAME.Items.add('所有商品');
while not eof do
begin
B_find := false;
for I_temp := 0 to CB_NAME.items.Count - 1 do
begin
if CB_NAME.Items[I_temp] = fieldbyname('name').asstring then
B_find := true; //找到相同名称
end;
if not B_find then //没有找到时增加
CB_NAME.Items.add(fieldbyname('name').asstring);
next;
end;
close;
end;
GoodsEditForm.free;
CB_NAMEChange(self);
end;
procedure TGoodsSelectForm.tb_AddClick(Sender: TObject);
var
I_temp: integer;
B_find: Boolean;
begin
Application.CreateForm(TGoodsEditForm, GoodsEditForm);
GoodsEditForm.E_name.Text := SG_data.Cells[2, SG_data.Row];
GoodsEditForm.Caption := '商品信息(增加)';
GoodsEditForm.P_state := 0;
GoodsEditForm.showmodal;
with query_data do
begin
close;
sql.Clear;
sql.text := 'select * from goods order by name';
open;
CB_NAME.Items.add('所有商品');
while not eof do
begin
B_find := false;
for I_temp := 0 to CB_NAME.items.Count - 1 do
begin
if CB_NAME.Items[I_temp] = fieldbyname('name').asstring then
B_find := true; //找到相同名称
end;
if not B_find then //没有找到时增加
CB_NAME.Items.add(fieldbyname('name').asstring);
next;
end;
close;
end;
GoodsEditForm.free;
CB_NAMEChange(self);
end;
procedure TGoodsSelectForm.CB_NameChange(Sender: TObject);
begin
User_addlist(cb_name.Text);
end;
procedure TGoodsSelectForm.TB_EXITClick(Sender: TObject);
begin
Self.Close;
end;
procedure TGoodsSelectForm.FormCreate(Sender: TObject);
var
I_temp: integer;
B_find: Boolean;
begin
inherited;
self.Caption := Application.Title + ' - 产品列表';
Query_basemess.DatabaseName := 'CPXSGL';
Query_data.DatabaseName := 'CPXSGL';
with sg_data do
begin
colcount := 8;
colwidths[0] := width * 8 div 100;
colwidths[1] := width * 25 div 100;
colwidths[2] := width * 25 div 100;
colwidths[3] := width * 25 div 100;
colwidths[4] := width * 25 div 100;
colwidths[5] := width * 15 div 100;
colwidths[6] := width * 15 div 100;
colwidths[7] := width * 25 div 100;
cols[0].Text := '序号';
cols[1].text := '产品编码';
cols[2].text := '产品名称';
cols[3].text := '产品型号';
cols[4].text := '最近单价';
cols[5].text := '提成';
cols[6].text := '单位';
cols[7].text := '备注';
end;
with query_data do
begin
close;
sql.Clear;
sql.text := 'select * from goods order by name';
open;
CB_NAME.Items.add('所有商品');
while not eof do
begin
B_find := false;
for I_temp := 0 to CB_NAME.items.Count - 1 do
begin
if CB_NAME.Items[I_temp] = fieldbyname('name').asstring then
B_find := true; //找到相同名称
end;
if not B_find then //没有找到时增加
CB_NAME.Items.add(fieldbyname('name').asstring);
next;
end;
close;
end;
User_addlist('所有商品');
end;
procedure TGoodsSelectForm.SG_dataDblClick(Sender: TObject);
begin
ModalResult := mrOK;
end;
procedure TGoodsSelectForm.E_findChange(Sender: TObject);
var
I_line: integer;
S_source, S_find: string;
begin
if trim(e_find.text) = '' then
begin
if sg_data.RowCount > 1 then
sg_data.Row := 1
else
sg_data.Row := 0;
end
else
begin
S_find := uppercase(trim(e_find.Text));
for I_line := 1 to sg_data.RowCount - 1 do
begin
S_SOURCE := '';
S_source := uppercase(trim(sg_data.cells[1, I_line] + sg_data.cells[2, I_line] + sg_data.cells[3, I_line]));
if strpos(pchar(s_source), pchar(S_find)) <> nil then
begin
sg_data.row := I_line;
exit;
end;
end;
messagedlg('所有商品信息中没有找到含“' + e_find.text + '”字符的记录!', mtwarning, [mbok], 0);
e_find.Text := '';
end;
end;
procedure TGoodsSelectForm.E_findKeyPress(Sender: TObject; var Key: Char);
begin
if word(key) = 13 then tb_select.Click;
end;
procedure TGoodsSelectForm.TB_DELClick(Sender: TObject);
var
I_temp: integer;
B_find: Boolean;
begin
if not Checkrights(USERRIGHTS, '删除') then
begin
messagedlg(Errormsg0006 + '0007', mterror, [mbok], 0);
exit;
end;
if messagedlg('警告:删除商品信息数据可能产生严重数据丢失现象,请不要在此删除商品信息数据' + chr(13) + chr(13)
+ '删除数据操作将不可恢复,确定要删除本记录吗?', mtWarning, [mbyes, mbno], 0) = mryes then
if messagedlg('再次警告:为了保证数据库内数据信息的完整性,请不要在此商品信息数据' + chr(13) + chr(13)
+ '删除数据操作将不可恢复,确定要删除本记录吗?', mtWarning, [mbyes, mbno], 0) = mryes then
begin
with query_data do
begin
close;
sql.Clear;
sql.Text := 'delete from goods where id=''' + SG_data.Cells[1, SG_data.Selection.Top] + '''';
try
execsql;
except
messagedlg(Errormsg0005 + '0009', mtError, [mbok], 0);
close;
exit;
end;
close;
sql.Clear;
sql.text := 'select * from goods order by name';
open;
CB_NAME.Items.add('所有商品');
while not eof do
begin
B_find := false;
for I_temp := 0 to CB_NAME.items.Count - 1 do
begin
if CB_NAME.Items[I_temp] = fieldbyname('name').asstring then
B_find := true; //找到相同名称
end;
if not B_find then //没有找到时增加
CB_NAME.Items.add(fieldbyname('name').asstring);
next;
end;
close;
end;
end;
CB_NameChange(self);
end;
procedure TGoodsSelectForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Query_basemess.Free;
Query_data.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -