⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit_customer.pas

📁 用delphi开发的美容院管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Unit_Customer;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, Grids;

type
  Tfrm_customer = class(TForm)
    pnlTop: TPanel;
    sbtn_front: TSpeedButton;
    sbtn_back: TSpeedButton;
    sbtn_append: TSpeedButton;
    sbtn_edit: TSpeedButton;
    sbtn_save: TSpeedButton;
    sbtn_print: TSpeedButton;
    sbtn_close: TSpeedButton;
    sbtn_delete: TSpeedButton;
    PageControl1: TPageControl;
    sht_main: TTabSheet;
    sht_content: TTabSheet;
    Label1: TLabel;
    Label2: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    edt_Cusno: TEdit;
    edt_Cusname: TEdit;
    edt_Phone: TEdit;
    edt_Mobile: TEdit;
    mm_Remark: TMemo;
    cbb_Sex: TComboBox;
    Label4: TLabel;
    edt_zipcode: TEdit;
    Label5: TLabel;
    cbb_Type: TComboBox;
    GroupBox1: TGroupBox;
    Label6: TLabel;
    Label8: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label7: TLabel;
    edt_Address: TEdit;
    edt_Email: TEdit;
    edt_Oicq: TEdit;
    edt_Homepage: TEdit;
    edt_Msn: TEdit;
    RadioGroup1: TRadioGroup;
    sbtn_AddCusType: TSpeedButton;
    Label3: TLabel;
    dtp_Register: TDateTimePicker;
    sg: TStringGrid;
    procedure sbtn_closeClick(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure sbtn_appendClick(Sender: TObject);
    procedure sbtn_editClick(Sender: TObject);
    procedure sbtn_saveClick(Sender: TObject);
    procedure sbtn_deleteClick(Sender: TObject);
    procedure sbtn_backClick(Sender: TObject);
    procedure sbtn_frontClick(Sender: TObject);
    procedure PageControl1Changing(Sender: TObject;
      var AllowChange: Boolean);
    procedure cbb_TypeEnter(Sender: TObject);
    procedure sbtn_AddCusTypeClick(Sender: TObject);
    procedure sgSelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure sht_contentShow(Sender: TObject);
    procedure sht_mainShow(Sender: TObject);
    procedure sgDblClick(Sender: TObject);
    procedure sbtn_printClick(Sender: TObject);
  private
    { Private declarations }
    PageIndex : integer;
    AppendOrEdit,DoChange : boolean;
    Cusno : string;
    
    procedure ClearInfo();
    procedure SearchInfo();
    function  SaveInfo():boolean;
    procedure GetInfo();
    procedure MakeEnabled(temp:boolean);
  public
    { Public declarations }
    procedure ref();
  end;

var
  frm_customer: Tfrm_customer;

implementation
   uses unit_DataModule,unit_TotalPublic,PublicFunOrPro;

{$R *.dfm}
{********************************客户操作过程****************************}
procedure Tfrm_customer.ref ();
begin
  pagecontrol1.ActivePage := sht_main;
  with sg do
  begin
    sg.Cells[0,0] := '顾客编号';
    sg.Cells[1,0] := '顾客名称';
    sg.Cells[2,0] := '性别';
    sg.Cells[3,0] := '顾客类别';
    sg.Cells[4,0] := '注册日期';
  end;
  formresize(nil);
  SearchInfo;   

  sbtn_append.Enabled := GetPower(SysUserId,'客户信息','修改权');
  sbtn_edit.Enabled := sbtn_append.Enabled ;
  sbtn_delete.Enabled := sbtn_append.Enabled;
  sbtn_print.Enabled := GetPower(SysUserId,'客户信息','打印权');
  
end;

procedure Tfrm_customer.SearchInfo();
var
  i : integer;
begin
  StringGridClear(sg);
  with dmod.qrydata do
  begin
    close;
    SQL.Text := 'select cus_no,cus_name,cus_sex,cus_type,cus_register from customer ' +
                'order by cus_register desc,cus_no';
    Open;
    i:=1;
    while not eof do
    begin
      sg.Cells[0,i] := FieldByName('cus_no').AsString ;
      sg.Cells[1,i] := FieldByName('cus_name').AsString ;
      sg.Cells[2,i] := FieldByName('cus_sex').AsString ;
      sg.Cells[3,i] := FieldByName('cus_type').AsString ;
      sg.Cells[4,i] := DateToString(FieldByName('cus_register').AsDateTime) ;
      inc(i);
      next;
    end;
  end;
  if i<>1 then sg.RowCount := i+1;
  sbtn_front.Enabled := false;
  sbtn_back.Enabled  := false;
  if sg.RowCount >3 then sbtn_back.Enabled := true;
end;

procedure Tfrm_customer.GetInfo ();
begin
  if sg.Cells[0,sg.row]='' then exit;
  Cusno := sg.Cells[0,sg.Row];
  with dmod.qrydata do
  begin
    close;
    SQL.Text := 'select * from Customer where cus_no='+#39+Cusno+#39;
    open;

    edt_Cusno.Text    := Cusno;
    edt_Cusname.Text  := FieldByName('Cus_name').AsString ;
    cbb_Sex.Text      := FieldByName('Cus_sex').AsString ;
    cbb_type.Text     := FieldByName('Cus_type').AsString ;
    edt_Phone.Text    := FieldByName('Cus_phone').AsString ;
    edt_Mobile.Text   := FieldByName('Cus_mobile').AsString ;
    edt_Email.Text    := FieldByName('Cus_email').AsString ;
    edt_HomePage.Text := FieldByName('Cus_homepage').AsString ;
    edt_Oicq.Text     := FieldByName('Cus_oicq').AsString ;
    edt_Msn.Text      := FieldByName('Cus_msn').AsString ;
    edt_Address.Text  := FieldByName('Cus_address').AsString ;
    edt_Zipcode.Text  := FieldByName('Cus_zipcode').AsString ;
    dtp_Register.Date := FieldByname('cus_register').AsDateTime ;
    mm_Remark.Text    := FieldByName('Cus_remark').AsString ;
    RadioGroup1.ItemIndex := StrToInt(FieldByName('cus_security').AsString);
  end;
end;

function Tfrm_customer.SaveInfo ():boolean;
var
  temp_type:string;
begin
  result := true;
  DoChange := true;
  //to determine if the following two fields are filled or not
  if trim(edt_Cusno.Text)='' then
  begin
    MessageBox(handle,'请输入客户编号!','提示',mb_ok+mb_iconinformation);
    result := false;
    DoChange := false;
    edt_Cusno.SetFocus ;
    exit;
  end;
  if trim(edt_Cusname.Text)='' then
  begin
    MessageBox(handle,'请输入客户姓名!','提示',mb_ok+mb_iconinformation);
    result := false;
    DoChange := false;
    edt_Cusname.SetFocus ;
    exit;
  end;
  //to determine whether the employee has existed or not
  Cusno := trim(edt_Cusno.Text );
  if AppendOrEdit then
  with dmod.qrydata do
  begin
    close;
    SQL.Text := 'select cus_no from customer where Cus_no=:no';
    ParamByName('no').AsString := Cusno;
    open;
    if not eof then
    begin
      MessageBox(self.Handle ,'该客户编号已经存在,请重新确认!','提示',mb_ok+mb_iconinformation);
      edt_Cusno.SetFocus ;
      result := false;
      exit;
    end;
  end;

  with dmod.qrydata do
  begin
    close;
    SQL.Text := 'select Cus_no from Customer where Cus_name=:name';
    ParamByname('name').AsString := trim(edt_Cusname.Text);
    open;
    if not eof then
    if FieldByName('Cus_no').AsString <> Cusno then
    begin
      MessageBox(self.Handle ,'该客户姓名已经存在,请重新确认!','提示',mb_ok+mb_iconinformation);
      edt_Cusname.SetFocus ;
      result := false;
      exit;
    end;
  end;
  //try to save the information
  temp_type:=trim(cbb_type.Text);
  try
    dmod.Database.StartTransaction ;
    with dmod.qrydata do
    begin
      close;
      SQL.Text := 'delete from Customer where Cus_no='+#39+Cusno+#39;
      ExecSQL;

      close;
      SQL.Text := 'insert into Customer(cus_no,cus_name,cus_sex,cus_type,cus_phone,cus_mobile,cus_email,cus_homepage' +
                  ',cus_oicq,cus_msn,cus_register,cus_address,cus_zipcode,cus_remark,cus_security) '+
                  'values (:no,:name,:sex,:type,:phone,:mobile,:email,:homepage' +
                  ',:oicq,:msn,:register,:address,:zipcode,:remark,:security)';
      ParamByName('no').AsString   := trim(edt_Cusno.Text);
      ParamByName('name').AsString := trim(edt_Cusname.Text );
      ParamByName('sex').AsString  := trim(cbb_Sex.Text );
      ParamByName('type').AsString  :=  StringGetChar(temp_type,'-') ;
      ParamByName('phone').AsString:= trim(edt_Phone.Text );
      ParamByName('mobile').AsString := trim(edt_mobile.Text );
      ParamByName('email').AsString:= trim(edt_Email.Text );
      ParamByName('Homepage').AsString := trim(edt_Homepage.Text );
      ParamByName('oicq').AsString:= trim(edt_Oicq.Text );
      ParamByName('msn').AsString := trim(edt_Msn.Text );
      ParamByName('register').AsDate  := dtp_register.Date  ;
      ParamByName('address').AsString := trim(edt_Address.Text );
      ParamByName('zipcode').AsString := trim(edt_Zipcode.Text );
      ParamByName('remark').AsString :=  mm_remark.Text ;
      ParamByName('security').AsInteger  :=  RadioGroup1.ItemIndex ;
      ExecSQL;
    end;
  finally
    try
       dmod.Database.Commit ;
    except
       dmod.Database.Rollback ;
       MessageBox(handle,'操作失败,请重试!','提示',mb_ok+mb_iconinformation);
       result := false;
    end;
  end;
end;

//to clear information
procedure Tfrm_customer.ClearInfo();
begin
  edt_Cusno.Text := '';
  edt_Cusname.Text := '';
  cbb_sex.Text := '';
  cbb_type.Text := '';
  edt_phone.Text := '';
  edt_mobile.Text := '';
  edt_email.Text := '';
  edt_homepage.Text := '';
  edt_oicq.Text := '';
  edt_msn.Text := '';
  edt_address.Text := '';
  edt_zipcode.Text := '';
  dtp_register.Date := Date;

  edt_cusno.SetFocus ;
end;

procedure Tfrm_customer.MakeEnabled(temp:boolean);
begin
  if sbtn_append.Enabled then
      sbtn_save.Enabled := temp
   else
      sbtn_save.Enabled := false;
   sbtn_delete.Enabled := false;

   edt_Cusno.Enabled   := temp;
   edt_Cusname.Enabled := temp;
   cbb_Sex.Enabled     := temp;
   cbb_Type.Enabled    := temp;
   edt_Phone.Enabled   := temp;
   edt_Mobile.Enabled  := temp;
   edt_Email.Enabled   := temp;
   edt_Homepage.Enabled:= temp;
   edt_Oicq.Enabled    := temp;
   edt_Msn.Enabled     := temp;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -