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

📄 uotherset.pas

📁 图书馆管理系统设计详细资料
💻 PAS
字号:
unit uOtherset;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,  StdCtrls, Mask, DBCtrls, Grids, DBGrids, DB, ADODB,
  DBGridEh,  Buttons, ExtCtrls, uModalbase;

type
  TSortType = (stSort, stCap, stFolk, stLevel, stSpe);

  TfrmOtherset = class(TfrmModalBase)
    btnAdd: TBitBtn;
    btnEdit: TBitBtn;
    btnDel: TBitBtn;
    btnClose: TBitBtn;
    dgInfo: TDBGridEh;
    dsInfo: TDataSource;
    aqOInfo: TADOQuery;
    Panel1: TPanel;
    Label1: TLabel;
    rbSort: TRadioButton;
    rbCap: TRadioButton;
    rbFolk: TRadioButton;
    rbLevel: TRadioButton;
    rbSpe: TRadioButton;
    Panel2: TPanel;
    lblName: TLabel;
    Label3: TLabel;
    deSName: TDBEdit;
    deDes: TDBEdit;
    procedure btnEditClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure btnDelClick(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure dsInfoDataChange(Sender: TObject; Field: TField);
    procedure rbSortClick(Sender: TObject);
    procedure rbCapClick(Sender: TObject);
    procedure rbFolkClick(Sender: TObject);
    procedure rbLevelClick(Sender: TObject);
    procedure rbSpeClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
    procedure SetState(ViewState: Boolean);
    procedure SetSort(ASortType: TSortType);
  public
    { Public declarations }
  end;

var
  frmOtherset: TfrmOtherset;

implementation

uses udata, uglobal, ustainfo, ustadetail;

{$R *.dfm}

procedure TfrmOtherset.SetState(ViewState: Boolean);
begin
  deSName.ReadOnly := ViewState;
  deDes.ReadOnly := ViewState;
  btnDel.Visible := ViewState;
  dgInfo.Enabled := ViewState;
  if ViewState then
  begin
    btnAdd.Caption := '添 加';
    btnEdit.Caption := '修 改';
    dgInfo.Color := ViewColor;
    deSName.Color := ViewColor;
    deDes.Color := ViewColor;
  end
  else
  begin
    if aqOInfo.State = dsInsert then
      btnAdd.Caption := '提 交'
    else btnAdd.Caption := '确 定';
    btnEdit.Caption := '取 消';
    deSName.SetFocus;
    deSName.Color := clWindow;
    deDes.Color := clWindow;
  end;
end;

procedure TfrmOtherset.SetSort(ASortType: TSortType);
var
  sFilter: string;
begin
  if aqOInfo.State in [dsInsert, dsEdit] then
  begin
    aqOInfo.CancelBatch();
    SetState(True);
  end;
  case ASortType of
    stSort:
    begin
      dgInfo.Columns[0].Title.Caption := '工 种';
      lblName.Caption := '工种:';
      sFilter := 'iflag=1';
    end;
    stCap:
    begin
      dgInfo.Columns[0].Title.Caption := '职 称';
      lblName.Caption := '职称:';
      sFilter := 'iflag=2';
    end;
    stFolk:
    begin
      dgInfo.Columns[0].Title.Caption := '民 族';
      lblName.Caption := '民族:';
      sFilter := 'iflag=3';
    end;
    stLevel:
    begin
      dgInfo.Columns[0].Title.Caption := '学 历';
      lblName.Caption := '学历:';
      sFilter := 'iflag=4';
    end;
    stSpe:
    begin
      dgInfo.Columns[0].Title.Caption := '专 业';
      lblName.Caption := '专业:';
      sFilter := 'iflag=5';
    end;
  end;

  aqOInfo.Filtered := False;
  aqOInfo.Filter := sFilter;
  aqOInfo.Filtered := True;
  if dgInfo.CanFocus then dgInfo.SetFocus;
end;

{以iflag字段标志分类: 1-工种, 2-积称, 3-民族, 4-学历, 5-专业}  
procedure TfrmOtherset.FormCreate(Sender: TObject);
begin
  Log.Write('进入其它信息设置模块');
  DM.OpenQuery(aqOInfo, 'select sname, des, iflag from oinfo');
  dsInfo.DataSet := aqOInfo;
  SetState(True);
end;

procedure TfrmOtherset.FormShow(Sender: TObject);
begin
  inherited;
  SetSort(stSort);
end;

procedure TfrmOtherset.btnAddClick(Sender: TObject);
var
  aqCheck: TADOQuery;
  iFlag: Integer;
begin
  if btnAdd.Caption = '添 加' then
  begin
    aqOInfo.Append;
    SetState(False);
  end
  else
  begin
    if deSName.Text <> '' then
    begin
      if aqOInfo.State = dsInsert then
      begin
        if rbSort.Checked then iFlag := 1
        else if rbCap.Checked then iFlag := 2
        else if rbFolk.Checked then iFlag := 3
        else if rbLevel.Checked then iFlag := 4
        else iFlag := 5;
        aqCheck := TADOQuery.Create(self);
        aqCheck.Clone(aqOInfo, ltReadOnly);
        if aqCheck.Locate('sname; iflag', VarArrayOf([deSName.Text, iFlag]), []) then
        begin
          MessageBox(Handle, '此项目已存在!', '提示', mb_IconInformation + mb_Ok);
          deSName.SetFocus;
          Abort;
        end;
        aqOInfo.FieldByName('iflag').AsInteger := iFlag;
        aqCheck.Free;
      end;
      if aqOInfo.State = dsInsert then
        Log.Write('添加信息[' + aqOInfo.FieldByName('sname').AsString + ']')
      else
        Log.Write('更新信息[' + aqOInfo.FieldByName('sname').AsString + ']');

      aqOInfo.UpdateBatch();
      SetState(True);
    end
    else
    begin
      MessageBox(Handle, '请输入类别名!', '提示', mb_IconInformation + mb_Ok);
      deSName.SetFocus;
    end;
  end;
end;

procedure TfrmOtherset.btnEditClick(Sender: TObject);
begin
  if btnedit.Caption ='修 改' then
  begin
    aqOInfo.Edit;
    SetState(False);
  end
  else
  begin
    aqOInfo.CancelBatch();
    SetState(True);
  end;
end;

procedure TfrmOtherset.btnDelClick(Sender: TObject);
begin
  if MessageBox(handle, '真的要删除此项目么?', '提示', mb_IconQuestion + mb_YesNo) = idYes then
  begin
    Log.Write('删除信息[' + aqOInfo.FieldByName('sname').AsString + ']');
    aqOInfo.Delete;
    aqOInfo.UpdateBatch();
  end;
end;

procedure TfrmOtherset.btnCloseClick(Sender: TObject);
begin
  Close();
end;

procedure TfrmOtherset.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if aqOInfo.State in [dsInsert, dsEdit] then
  begin
    if MessageBox(Handle, '还有信息没有保存,确定要退出吗?', '提示', mb_IconQuestion + mb_YesNo) = idYes then
    begin
      aqOInfo.CancelBatch();
      CanClose := True;
    end
    else CanClose := False;
  end
  else CanClose := True;
end;

procedure TfrmOtherset.dsInfoDataChange(Sender: TObject; Field: TField);
begin
  if not (aqOInfo.State in [dsInsert, dsEdit]) then
    btnEdit.Enabled := aqOInfo.RecordCount <> 0
  else btnEdit.Enabled := True;
  btnDel.Enabled := aqOInfo.RecordCount <> 0;
end;

procedure TfrmOtherset.rbSortClick(Sender: TObject);
begin
  SetSort(stSort);
end;

procedure TfrmOtherset.rbCapClick(Sender: TObject);
begin
  SetSort(stCap);
end;

procedure TfrmOtherset.rbFolkClick(Sender: TObject);
begin
  SetSort(stFolk);
end;

procedure TfrmOtherset.rbLevelClick(Sender: TObject);
begin
  SetSort(stLevel);
end;

procedure TfrmOtherset.rbSpeClick(Sender: TObject);
begin
  SetSort(stSpe);
end;

procedure TfrmOtherset.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Assigned(frmStaInfo) then
    if frmStainfo.fraStaDetail.pcSta.ActivePageIndex = 0 then
      frmStainfo.fraStaDetail.FillData;
end;

end.

⌨️ 快捷键说明

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