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

📄 yhgl_ref.~pa

📁 计算机房管理系统 一、功能: 1、主要是针对各大高校计算机房的管理。 2、将机房的设备管理、用户管理和上机管理等日常事务集成于一体。 3、可以自己设置机房一天内对外开放的时间和次数。 4
💻 ~PA
字号:
unit yhgl_ref;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;

type
  Tf_yhgl_ref = class(TForm)
    xsgb: TGroupBox;
    CheckBox1: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    GroupBox2: TGroupBox;
    CheckBox2: TCheckBox;
    sour_list: TListBox;
    dest_list: TListBox;
    s2ds: TSpeedButton;
    d2ss: TSpeedButton;
    s2da: TSpeedButton;
    d2sa: TSpeedButton;
    ClickCheck: TCheckBox;
    CheckBox0: TCheckBox;
    ups: TSpeedButton;
    downs: TSpeedButton;
    ok: TBitBtn;
    cancel: TBitBtn;
    sl_c: TListBox;
    dl_c: TListBox;
    Label1: TLabel;
    Label2: TLabel;
    CheckBox6: TCheckBox;
    Label3: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure RefQu;
    procedure Init;
    procedure ClickCheckClick(Sender: TObject);
    procedure sour_listDblClick(Sender: TObject);
    procedure dest_listDblClick(Sender: TObject);
    Function CheckExistSour(s : string) : integer;
    Function CheckExistDest(s : string) : integer;
    procedure s2dsClick(Sender: TObject);
    procedure d2ssClick(Sender: TObject);
    procedure s2daClick(Sender: TObject);
    procedure d2saClick(Sender: TObject);
    procedure upsClick(Sender: TObject);
    procedure downsClick(Sender: TObject);
    procedure searchClick(Sender: TObject);
    procedure okClick(Sender: TObject);
    procedure cancelClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const numcount = 6;
var
  f_yhgl_ref: Tf_yhgl_ref;
  dis_pro : array[0..numcount] of TCheckBox;  //数组控件
  CheckFlag : integer;  //CheckBox是(1)否(0)处于人工修改状态
  i : integer;

implementation

uses yhgl, data, gbv;

{$R *.DFM}

procedure Tf_yhgl_ref.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  f_yhgl.Enabled:=True;
end;

procedure Tf_yhgl_ref.RefQu();
var dis_sql : string;  //SQL语句
begin  //显示数据库
  ds_data.Qu_yhdp.Open;
  ds_data.Qu_yhsys.Open;

  //第一项必须显示
  dis_sql:='Select '+ds_data.Qu_yhsys.FieldByName('ch1').AsString+' '+
                     ds_data.Qu_yhsys.FieldByName('ch2').AsString;
  ds_data.Qu_yhdp.Next;
  ds_data.Qu_yhsys.Next;

  //显示其它各项
  for i:=1 to numcount do
  begin
       if ds_data.Qu_yhdp.FieldByName('display').AsBoolean then
          dis_sql:=dis_sql+','+ds_data.Qu_yhsys.FieldByName('ch1').AsString+
                           ' '+ds_data.Qu_yhsys.FieldByName('ch2').AsString;
       if i=1 then  //记录sjnum项的状态
          f_gbv.sjnum.Checked:=ds_data.Qu_yhdp.FieldByName('display').AsBoolean;
       ds_data.Qu_yhdp.Next;
       ds_data.Qu_yhsys.Next;
  end;
  ds_data.Qu_yhdp.Close;
  ds_data.Qu_yhsys.Close;
  dis_sql:=dis_sql+' From yhgl';

  //目标框若不为空,则排序
  if dest_list.Items.Count>0 then
  begin
       dis_sql:=dis_sql+' Group by ';
       //目标框排序
       for i:=1 to dest_list.Items.Count do
       begin
            if i>1 then dis_sql:=dis_sql+',';
            dis_sql:=dis_sql+dest_list.Items[i-1];
       end;
       //源框排序
       for i:=1 to sour_list.Items.Count do
       begin
            dis_sql:=dis_sql+',';
            dis_sql:=dis_sql+sour_list.Items[i-1];
       end;

       //限制写数据库的操作
       f_yhgl.db_insert.Enabled:=False;
       f_yhgl.db_append.Enabled:=False;
       f_yhgl.db_delete.Enabled:=False;
       f_yhgl.db_post.Enabled:=False;
       f_yhgl.db_cancel.Enabled:=False;
  end
  else
  begin  //恢复写数据库的操作
       if ds_data.Qu_yhgl.RequestLive then
       begin
            f_yhgl.db_insert.Enabled:=True;
            f_yhgl.db_append.Enabled:=True;
            f_yhgl.db_delete.Enabled:=True;
            f_yhgl.db_post.Enabled:=True;
            f_yhgl.db_cancel.Enabled:=True;
       end;
  end;

  //初始化数据库
  ds_data.Qu_yhgl.Close;
  ds_data.Qu_yhgl.Sql.Clear;
  ds_data.Qu_yhgl.Sql.Add(dis_sql);
  ds_data.Qu_yhgl.Open;
end;

procedure Tf_yhgl_ref.FormShow(Sender: TObject);
begin
  Init;  //初始化控件

  CheckFlag:=1;  //手动修改CheckBox
  ds_data.Qu_yhdp.Open;
  ds_data.Qu_yhsys.Open;
  for i:=0 to numcount do
  begin
       dis_pro[i].Caption:=ds_data.Qu_yhsys.FieldByName('ch2').AsString;
       dis_pro[i].OnClick:=ClickCheckClick;
       dis_pro[i].Checked:=ds_data.Qu_yhdp.FieldByName('display').AsBoolean;
       ds_data.Qu_yhdp.Next;
       ds_data.Qu_yhsys.Next;
  end;
  ds_data.Qu_yhdp.Close;
  ds_data.Qu_yhsys.Close;

  CheckFlag:=0;  //自动修CheckBox
  ClickCheckClick(nil);  //调整CheckBox
end;

procedure Tf_yhgl_ref.Init();
begin
  //初始化数组控件
  dis_pro[0]:=CheckBox0;  dis_pro[1]:=CheckBox1;  dis_pro[2]:=CheckBox2;
  dis_pro[3]:=CheckBox3;  dis_pro[4]:=CheckBox4;  dis_pro[5]:=CheckBox5;
  dis_pro[6]:=CheckBox6;

  //初始化ListBox
  sour_list.Items.Clear;  dest_list.Items.Clear;
  for i:=1 to sl_c.Items.Count do
      sour_list.Items.Add(sl_c.Items[i-1]);
  for i:=1 to dl_c.Items.Count do
      dest_list.Items.Add(dl_c.Items[i-1]);
end;

procedure Tf_yhgl_ref.ClickCheckClick(Sender: TObject);
begin
  if CheckFlag=1 then exit;  //若手动修改则退出
  sour_list.Items.Clear;  //清空源框
  for i:=0 to numcount do
  begin
       if dis_pro[i].Checked=True then
       begin
            //若目标框不存在,则添加于源框
            if CheckExistDest(dis_pro[i].Caption)<0 then
               sour_list.Items.add(dis_pro[i].Caption);
       end
       else
          //若目标框存在,则删除
          if CheckExistDest(dis_pro[i].Caption)>=0 then
             dest_list.Items.Delete(CheckExistDest(dis_pro[i].Caption));
  end;
end;

procedure Tf_yhgl_ref.sour_listDblClick(Sender: TObject);
var index : integer;  //ListBox中的索引
begin  //从源框转移到目标框
  index:=sour_list.ItemIndex;
  if index<0 then exit;
  dest_list.Items.Add(sour_list.Items[index]);
  sour_list.Items.Delete(index);
end;

procedure Tf_yhgl_ref.dest_listDblClick(Sender: TObject);
var index : integer;  //ListBox中的索引
begin  //从目标框转移到源框
  index:=dest_list.ItemIndex;
  if index<0 then exit;
  sour_list.Items.Clear;
  for i:=0 to numcount do
  begin
       if dis_pro[i].Checked=True then
          if CheckExistDest(dis_pro[i].Caption)<0 then
             //若目标框不存在,则添加于源框
             sour_list.Items.add(dis_pro[i].Caption)
          else
             if CheckExistDest(dis_pro[i].Caption)=index then
                //若目标框存在,且是被转移项,则添加于源框
                sour_list.Items.add(dis_pro[i].Caption);
  end;
  dest_list.Items.Delete(index);  //删除目标框中的index项
end;

Function Tf_yhgl_ref.CheckExistSour(s : string) : integer;
var index : integer;  //ListBox中的索引
begin
  Result:=-1;
  for index:=1 to sour_list.Items.Count do
      if sour_list.Items[index-1]=s then
      begin  //框中存在该项
           Result:=index-1;
           break;
      end;
end;

Function Tf_yhgl_ref.CheckExistDest(s : string) : integer;
var index : integer;  //ListBox中的索引
begin
  Result:=-1;
  for index:=1 to dest_list.Items.Count do
      if dest_list.Items[index-1]=s then
      begin  //框中存在该项
           Result:=index-1;
           break;
      end;
end;

procedure Tf_yhgl_ref.s2dsClick(Sender: TObject);
begin  //从源框转移到目标框
  sour_listDblClick(nil);
end;

procedure Tf_yhgl_ref.d2ssClick(Sender: TObject);
begin  //从目标框转移到源框
  dest_listDblClick(nil);
end;

procedure Tf_yhgl_ref.s2daClick(Sender: TObject);
begin  //从源框全部转移到目标框
  for i:=1 to sour_list.Items.Count do
      dest_list.Items.add(sour_list.Items[i-1]);
  sour_list.Items.Clear;
end;

procedure Tf_yhgl_ref.d2saClick(Sender: TObject);
begin  //从目标框全部转移到源框
  if dest_list.Items.Count<=0 then exit;
  sour_list.Items.Clear;
  dest_list.Items.Clear;
  for i:=0 to numcount do
      if dis_pro[i].Checked=True then
         sour_list.Items.add(dis_pro[i].Caption);
end;

procedure Tf_yhgl_ref.upsClick(Sender: TObject);
var index : integer;  //ListBox中的索引
begin  //上调选项
  index:=dest_list.ItemIndex;
  if (index<=0) or (index>dest_list.Items.Count-1) then exit;
  dest_list.Items.Exchange(index-1,index);
  dest_list.ItemIndex:=index-1;
end;

procedure Tf_yhgl_ref.downsClick(Sender: TObject);
var index : integer;  //ListBox中的索引
begin  //下调选项
  index:=dest_list.ItemIndex;
  if (index<0) or (index>=dest_list.Items.Count-1) then exit;
  dest_list.Items.Exchange(index,index+1);
  dest_list.ItemIndex:=index+1;
end;

procedure Tf_yhgl_ref.searchClick(Sender: TObject);
begin
  Application.MessageBox('本功能注册后才可使用。', '提示', Mb_OK);
end;

procedure Tf_yhgl_ref.okClick(Sender: TObject);
var ItemNum : integer;  //数组控件数目
begin
  //将CheckBox状态写入数据库
  ds_data.Qu_yhdp.Open;
  for i:=0 to numcount do
  begin
       with ds_data.Qu_yhdp do
       begin
            Edit;
            FieldByName('display').AsBoolean:=dis_pro[i].Checked;
            Post;
            Next;
       end;
  end;
  ds_data.Qu_yhdp.Close;

  //将ListBox状态写入ListBox的copy
  sl_c.Items.Clear;  dl_c.Items.Clear;
  for i:=1 to sour_list.Items.Count do
      sl_c.Items.Add(sour_list.Items[i-1]);
  for i:=1 to dest_list.Items.Count do
      dl_c.Items.Add(dest_list.Items[i-1]);

  RefQu;  //调整显示
  f_yhgl_ref.Close;
end;

procedure Tf_yhgl_ref.cancelClick(Sender: TObject);
begin
  //初始化ListBox
  sour_list.Items.Clear;  dest_list.Items.Clear;
  for i:=1 to sl_c.Items.Count do
      sour_list.Items.Add(sl_c.Items[i-1]);
  for i:=1 to dl_c.Items.Count do
      dest_list.Items.Add(dl_c.Items[i-1]);
  f_yhgl_ref.Close;
end;


end.

⌨️ 快捷键说明

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