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

📄 specunit.pas

📁 学费管理系统,学校使用
💻 PAS
字号:
unit SpecUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxDataStorage, cxEdit, DB, cxDBData, ADODB, StdCtrls, Buttons, ExtCtrls,
  cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
  cxClasses, cxControls, cxGridCustomView, cxGrid;

type
  TScholar=record
    Id:integer;
    Scholar:string;
  end;

  TDepartment=record
    id:integer;
    department:string;
  end;

  Tspecform = class(TForm)
    cxGrid1: TcxGrid;
    cxGrid1DBTableView1: TcxGridDBTableView;
    cxGrid1Level1: TcxGridLevel;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Scholar_ComboBox: TComboBox;
    scholar_edit: TEdit;
    new_button: TBitBtn;
    ok_button: TBitBtn;
    cancel_button: TBitBtn;
    del_button: TBitBtn;
    close_button: TBitBtn;
    list_adoquery: TADOQuery;
    DataSource1: TDataSource;
    oper_adoquery: TADOQuery;
    Label3: TLabel;
    department_ComboBox: TComboBox;
    Spec_edit: TEdit;
    Department_edit: TEdit;
    cxGrid1DBTableView1spec: TcxGridDBColumn;
    cxGrid1DBTableView1department: TcxGridDBColumn;
    cxGrid1DBTableView1scholar: TcxGridDBColumn;
    procedure close_buttonClick(Sender: TObject);
    procedure new_buttonClick(Sender: TObject);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
    procedure cancel_buttonClick(Sender: TObject);
    procedure del_buttonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ok_buttonClick(Sender: TObject);
    procedure Scholar_ComboBoxChange(Sender: TObject);
    procedure department_ComboBoxChange(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    NewScholar:array of TScholar;
    NewDepartMent:array of TDepartment;
    procedure clearContent;
    procedure ButtonUse(CanUse:boolean);
    procedure CloseWindow(var Msg:TMessage);message wm_user;
  public
    { Public declarations }
  end;

var
  specform: Tspecform;

implementation

uses DMUnit, MainformUnit;

{$R *.dfm}

{ Tspecform }

procedure Tspecform.ButtonUse(CanUse: boolean);
begin
  new_button.Enabled :=canuse;
  del_button.Enabled :=false;
  ok_button.Enabled :=not canuse;
  cancel_button.Enabled :=not canuse;
end;

procedure Tspecform.clearContent;
begin
  Scholar_ComboBox.ItemIndex:=-1;
  scholar_edit.Text :='';
  department_combobox.ItemIndex:=-1;
  department_edit.Text :='';
  Department_edit.Text :='';
  spec_Edit.Text :='';
end;

procedure Tspecform.close_buttonClick(Sender: TObject);
begin
  if new_button.Enabled  then
  begin
    self.Close ;
    exit;
  end;
  if messagebox(handle,pchar('当前正在进行新增操作,请确认是否退出'),'请选择',MB_ICONQUESTION	+MB_YESNO)=6 then
    self.Close ;
end;

procedure Tspecform.new_buttonClick(Sender: TObject);
begin
  clearcontent;
  panel1.Enabled :=true;
  Scholar_combobox.SetFocus ;
  cxGrid1.Enabled :=false;
  buttonuse(false);
end;

procedure Tspecform.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  clearcontent;
  with list_adoquery do
  begin
    del_button.Enabled :=not IsEmpty;
    if not isempty then
    begin
      Scholar_ComboBox.ItemIndex:=Scholar_ComboBox.Items.IndexOf(fieldbyname('scholar').AsString );
      Scholar_edit.Text :=fieldbyname('scholarid').asstring ;
      Scholar_ComboBox.OnChange (nil);
      Department_edit.Text :=fieldbyname('departmentid').AsString ;
      Department_ComboBox.ItemIndex:=Department_ComboBox.Items.IndexOf(fieldbyname('department').AsString );
      spec_edit.Text :=fieldbyname('spec').AsString ;
    end;
  end;
end;

procedure Tspecform.cancel_buttonClick(Sender: TObject);
var
  BookMark:TBookMark;
begin
  panel1.Enabled :=false;
  cxGrid1.Enabled :=true;
  buttonuse(true);
  try
    bookmark:=list_adoquery.GetBookmark ;
    list_adoquery.Close;
    list_adoquery.Open;
    list_adoquery.GotoBookmark(bookmark);
  except
  end;

end;

procedure Tspecform.del_buttonClick(Sender: TObject);
begin
  with oper_adoquery do
  begin
    close;
    sql.Clear;
    sql.Add('select * from Student where SpecID=:SpecID');
    Parameters.ParamByName('SpecID').Value :=List_adoquery.FieldValues['ID'];
    open;
    if not isempty then
    begin
      MessageBox(application.handle,pchar('该记录信息已被引用,无法删除!'),'错误',MB_ICONWARNING+MB_OK);
      exit;
    end;
  end;
  if messagebox(handle,pchar('请确认是否删除当前记录信息!'),'请选择',MB_ICONQUESTION +MB_yesno)=6 then
  begin
    with oper_adoquery do
    begin
      close;
      sql.Clear;
      sql.Add('delete from spec where Id=:ID');
      Parameters.ParamByName('ID').Value :=List_adoquery.FieldValues['ID'];
      ExecSQL ;
    end;
    list_adoquery.Close;
    list_adoquery.Open;
  end;
end;

procedure Tspecform.FormCreate(Sender: TObject);
var
  i:integer;
begin
  with oper_adoquery do
  begin
    close;
    sql.Clear;
    sql.Add('select * from Scholar order by id');
    open;
    if not isempty then
    begin
      setlength(NewScholar,RecordCount);
      for i := 0 to RecordCount-1 do
      begin
        NewScholar[i].Id :=fieldbyname('id').AsInteger ;
        NewScholar[i].Scholar:=fieldbyname('Scholar').AsString ;
        scholar_combobox.Items.Add(fieldbyname('Scholar').AsString) ;
        Next;
      end;
    end;
  end;
  list_adoquery.Open;
end;

procedure Tspecform.ok_buttonClick(Sender: TObject);
var
  BookMark:TBookMark;
begin
  if trim(Scholar_ComboBox.Text )='' then
  begin
    MessageBox(application.handle,pchar('学历类型名称没有选择!'),'错误',MB_ICONWARNING+MB_OK);
    Scholar_ComboBox.SetFocus ;
    exit;
  end;
  if trim(department_combobox.Text )='' then
  begin
    MessageBox(application.handle,pchar('院系没有选择!'),'错误',MB_ICONWARNING+MB_OK);
    department_combobox.SetFocus ;
    exit;
  end;
  if trim(spec_edit.Text )='' then
  begin
    MessageBox(application.handle,pchar('专业名称没有填写!'),'错误',MB_ICONWARNING+MB_OK);
    spec_edit.SetFocus ;
    exit;
  end;
  with Oper_adoquery do
  begin
    close;
    sql.Clear;
    sql.Add('insert into Spec (ScholarId,Departmentid,spec)  values (:ScholarId,:Departmentid,:spec)');
    Parameters.ParamByName('ScholarId').Value :=trim(scholar_edit.Text );
    Parameters.ParamByName('Departmentid').Value := trim(department_edit.Text );
    Parameters.ParamByName('spec').Value := trim(spec_edit.Text );
    try
      ExecSQL ;
    except
      on e:exception do
        MessageBox(application.handle,pchar(e.Message),'错误',MB_ICONWARNING+MB_OK);
    end;
  end;
  panel1.Enabled :=false;
  cxGrid1.Enabled :=true;
  buttonuse(true);
  try
    bookmark:=list_adoquery.GetBookmark ;
    list_adoquery.Close;
    list_adoquery.Open;
    list_adoquery.GotoBookmark(bookmark);
  except
  end;

end;

procedure Tspecform.Scholar_ComboBoxChange(Sender: TObject);
var
  i:integer;
begin
  department_combobox.ItemIndex:=-1;
  department_edit.Text :='';
  department_combobox.Items.Clear;
  scholar_Edit.Text:='';
  if scholar_combobox.ItemIndex<0 then exit;
  scholar_Edit.Text :=inttostr(NewScholar[scholar_combobox.itemindex].id);
  with oper_adoquery do
  begin
    close;
    sql.Clear;
    sql.Add('select * from department where ScholarId=:ScholarId order by id');
    Parameters.ParamByName('ScholarId').Value :=scholar_edit.Text ;
    open;
    if not isempty then
    begin
      setlength(NewDepartMent,RecordCount);
      for i := 0 to RecordCount-1 do
      begin
        NewDepartMent[i].Id :=fieldbyname('id').AsInteger ;
        NewDepartMent[i].department :=fieldbyname('department').AsString ;
        department_combobox.Items.Add(fieldbyname('department').AsString) ;
        Next;
      end;
    end;
  end;
end;

procedure Tspecform.department_ComboBoxChange(Sender: TObject);
begin
  if department_combobox.ItemIndex>-1 then
    department_Edit.Text :=inttostr(Newdepartment[department_ComboBox.itemindex].id);
end;

procedure Tspecform.CloseWindow(var Msg: TMessage);
begin
  FreeAndNil(specform);
end;

procedure Tspecform.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  action:=cafree;
  postmessage(handle,wm_user,0,0);
end;

end.

⌨️ 快捷键说明

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