📄 wm_select.pas
字号:
unit wm_select;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls, Db, DBTables;
type
Tfrm_wm_select = class(TForm)
Panel1: TPanel;
Label1: TLabel;
txt_name: TEdit;
cmdOK: TBitBtn;
cmdCancel: TBitBtn;
lst_dw: TListBox;
qe_dw: TQuery;
qe_jy: TQuery;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure cmdOKClick(Sender: TObject);
procedure cmdCancelClick(Sender: TObject);
//
procedure ControlChanged(Sender: TObject);
procedure cmdOKEnter(Sender: TObject);
procedure cmdCancelEnter(Sender: TObject);
procedure txt_nameKeyPress(Sender: TObject; var Key: Char);
procedure lst_dwClick(Sender: TObject);
private
{ Private declarations }
procedure lstInfoInit;
public
{ Public declarations }
end;
var
frm_wm_select: Tfrm_wm_select;
implementation
{$R *.DFM}
uses
log, pj_wm;
procedure Tfrm_wm_select.ControlChanged(Sender: TObject);
var
strName: string;
i: integer;
intPos: integer;
str_id: string;
begin
strName := Trim(txt_name.Text);
if strName = '' then Exit;
//
lst_dw.Visible := True;
//
for i := 0 to lst_dw.Items.Count - 1 do begin
str_id := lst_dw.Items[i];
intPos := Pos(strName, str_id);
if intPos = 1 then begin
lst_dw.ItemIndex := i;
Break;
end else begin
lst_dw.ItemIndex := 0;
end;
end;
end;
procedure Tfrm_wm_select.lstInfoInit;
var
strName: string;
begin
qe_dw.Close;
qe_dw.Open;
qe_dw.First;
//
while not qe_dw.Eof do begin
strName := Trim(qe_dw.FieldByName('dw_name').AsString);
lst_dw.Items.Add(strName);
qe_dw.Next;
end;
qe_dw.Close;
lst_dw.ItemIndex := -1;
end;
procedure Tfrm_wm_select.FormShow(Sender: TObject);
begin
lstInfoInit;
//
txt_name.SetFocus;
end;
procedure Tfrm_wm_select.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
procedure Tfrm_wm_select.FormDestroy(Sender: TObject);
begin
frm_wm_select := nil;
end;
procedure Tfrm_wm_select.cmdOKClick(Sender: TObject);
var
strName: string;
begin
strName := Trim(txt_name.Text);
if strName = '' then begin
MessageBox(Handle, '请确定购货单位', '沈阳信德', MB_ICONQUESTION or MB_OK);
txt_name.SetFocus;
Exit;
end else begin
if lst_dw.Items.IndexOf(strName) = -1 then begin
if MessageBox(Handle, '此购货单位不存在,是否新建?',
'沈阳信德', MB_OKCANCEL or MB_ICONQUESTION) = ID_CANCEL then begin
MessageBox(Handle, '购货单位不存在', '沈阳信德', MB_ICONQUESTION or MB_OK);
txt_name.SetFocus;
Exit;
end else begin
qe_jy.Close;
qe_jy.SQL.Clear;
qe_jy.SQL.Add('INSERT INTO DW(DW_NAME) VALUES(''' + strName + ''') ');
qe_jy.ExecSQL;
qe_jy.Close;
end;
end;
if not Assigned(frm_pj_wm) then begin
frm_pj_wm := Tfrm_pj_wm.Create(Application);
//
frm_pj_wm.txt_dw.Caption := Trim(txt_name.Text);
//
frm_pj_wm.Show;
//
Close;
end;
end;
end;
procedure Tfrm_wm_select.cmdCancelClick(Sender: TObject);
begin
Close;
end;
procedure Tfrm_wm_select.cmdOKEnter(Sender: TObject);
begin
lst_dw.Visible := False;
end;
procedure Tfrm_wm_select.cmdCancelEnter(Sender: TObject);
begin
lst_dw.Visible := False;
end;
procedure Tfrm_wm_select.txt_nameKeyPress(Sender: TObject; var Key: Char);
var
intIndex: integer;
str_name: string;
curIndex: integer;
intResult: integer;
begin
if Ord(Key) = 13 then begin
str_name := Trim(txt_name.Text);
if str_name <> '' then begin
curIndex := lst_dw.Items.IndexOf(str_name);
if curIndex = -1 then begin
intResult := MessageBox(Handle, '此购货单位不存在,是否新建?',
'沈阳信德', MB_OKCANCEL or MB_ICONQUESTION);
if intResult = ID_OK then begin
//执行存储过程
qe_jy.Close;
qe_jy.SQL.Clear;
qe_jy.SQL.Add('INSERT INTO DW(DW_NAME) VALUES(''' + str_name + ''') ');
qe_jy.ExecSQL;
qe_jy.Close;
lst_dw.Items.Add(str_name);
end else begin
if lst_dw.ItemIndex > -1 then begin
str_name := lst_dw.Items[lst_dw.ItemIndex];
txt_name.OnChange := nil;
txt_name.Text := str_name;
txt_name.OnChange := frm_wm_select.ControlChanged;
end else begin
MessageBox(Handle, '输入无效', '沈阳信德', MB_ICONQUESTION or MB_OK);
txt_name.SetFocus;
Exit;
end;
end;
end;
end;
lst_dw.Visible := False;
frm_wm_select.cmdOKClick(nil);
end;
end;
procedure Tfrm_wm_select.lst_dwClick(Sender: TObject);
var
str_name: string;
begin
txt_name.OnChange := nil;
str_name := lst_dw.Items[lst_dw.ItemIndex];
txt_name.Text := str_name;
txt_name.OnChange := frm_wm_select.ControlChanged;
txt_name.SetFocus;
lst_dw.Visible := False;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -