u_gwbj.pas

来自「一个电力企业的后台管理程序」· PAS 代码 · 共 1,240 行 · 第 1/3 页

PAS
1,240
字号
             strNodeName := FieldByName('Position').AsString;  //总务科
             MyTNode1 := TVPosition.Items.AddChildObject(Node,strNodeName,MyRecPtr);
             MyTNode1.SelectedIndex :=8;
             TVPosition.Items.AddChild(MyTNode1,'');
             Next;
          end;
          Close;
       end;
   end;
end;

procedure TFrm_Gwsz.N_NewGwClick(Sender: TObject); //新建岗位
var
  cSign :Char;
begin
   if TVPosition.Selected.Parent <>nil then
   begin
       cSign := PMyRec(TVPosition.Selected.Data)^.Sign;
       if cSign ='1' then Exit;
   end;
   FillList;
   Edit2.Text := '';
   if TVPosition.Selected.Parent =nil then Edit1.Text := ''
   else Edit1.Text := PMyRec(TVPosition.Selected.Data)^.Position ;
   CmbOrgan.Text := '';
   DTP_CL.DateTime := Now;
   Mm_Prop.Text := '';
   Mm_Note.Text := '';
   Nb_Gw.PageIndex :=1;
   LBGwPerson.Clear ;
   cSave :='0';
   Edit2.SetFocus ;
   StBar.Panels[0].Text :='新建岗位';
end;

procedure TFrm_Gwsz.N_DelGwClick(Sender: TObject); //删除岗位
var
  cSign :Char;
begin
 Try
   if TVPosition.Selected.Parent =nil then Exit;
   cSign := PMyRec(TVPosition.Selected.Data)^.Sign;
   if cSign ='1' then Exit;
   if TVPosition.Selected.HasChildren then
   begin
      MessageBox(0,'此岗位有下级岗位或下属的人员,不能删除!','提示...'
                  ,MB_ICONEXCLAMATION+MB_OK); Exit;
   end;
   With Qry_pub1 do
   begin
      Close;
      Sql.Clear ;
      Sql.Add ('Delete DFWF_Position Where Position =:p1');
      Sql.Add ('Delete DFWF_PeoplePos Where Position =:p1');
      ParamByName('p1').AsString := PMyRec(TVPosition.Selected.Data)^.Position ;
      ExecSql;
      Close;
   end;
   TVPosition.Selected.Delete ;
 Except
   MessageBox(0,'删除出错,请重试!','提示...',MB_ICONEXCLAMATION+MB_OK);
 end;
 StBar.Panels[0].Text :='';
end;

procedure TFrm_Gwsz.N_DelPersonClick(Sender: TObject);  //删除人员
var
  cSign :Char;
begin
 Try
   if TVPosition.Selected.Parent =nil then Exit;
   cSign := PMyRec(TVPosition.Selected.Data)^.Sign;
   if cSign ='0' then Exit;
   With Qry_pub1 do
   begin
      Close;
      Sql.Clear ;
      Sql.Add ('Delete DFWF_PeoplePos Where (WorkID =:p1) and (Position =:p2)');
      ParamByName('p1').AsString := PMyRec(TVPosition.Selected.Data)^.WorkID ;
      ParamByName('p2').AsString := PMyRec(TVPosition.Selected.Data)^.Position ;
      ExecSql;
      Close;
   end;
   TVPosition.Selected.Delete ;
 Except
   MessageBox(0,'删除出错,请重试!','提示...',MB_ICONEXCLAMATION+MB_OK);
 end;
   StBar.Panels[0].Text :='';
end;

procedure TFrm_Gwsz.N_PropertyClick(Sender: TObject);  //属性
var
  cSign :Char;
  sSex :String;
begin
   if TVPosition.Selected.Parent =nil then Exit;
   cSign := PMyRec(TVPosition.Selected.Data)^.Sign;
   if cSign ='0' then
   begin
       FillList;
       ListGwPerson(PMyRec(TVPosition.Selected.Data)^.Position);
       ListAuth(PMyRec(TVPosition.Selected.Data)^.Position);
       With Qry_pub1 do
       begin
          Close;
          Sql.Clear ;
          Sql.Add ('Select * From DFWF_Position Where Position =:p1');
          ParamByName('p1').AsString := PMyRec(TVPosition.Selected.Data)^.Position;
          Open;
          Edit2.Text := FieldByName('Position').AsString;
          Edit1.Text := FieldByName('UpperPos').AsString;
          CmbOrgan.Text := FieldByName('Organ').AsString;
          if FieldByName('CreateTime').IsNull then DTP_CL.DateTime := Now
          else DTP_CL.DateTime := FieldByName('CreateTime').AsDateTime;
          Mm_Prop.Text := FieldByName('Property').AsString;
          Mm_Note.Text := FieldByName('Note').AsString;
          Cmb_cs1.ItemIndex := Cmb_cs1.Items.IndexOfName(FieldByName('AwakeWorkId_1').AsString);
          Cmb_cs2.ItemIndex := Cmb_cs2.Items.IndexOfName(FieldByName('AwakeWorkId_2').AsString);
          Cmb_cs3.ItemIndex := Cmb_cs3.Items.IndexOfName(FieldByName('AwakeWorkId_3').AsString);
          Close;
       end;
       Nb_Gw.PageIndex :=1;
       cSave :='1';
       Edit2.SetFocus ;
       StBar.Panels[0].Text :='岗位属性编辑';
   end
   else
   if cSign ='1' then
   begin
       With Qry_pub1 do
       begin
          Close;
          Sql.Clear ;
          Sql.Add ('Select * From DFWF_People Where WorkId =:p1');
          ParamByName('p1').AsString := PMyRec(TVPosition.Selected.Data)^.WorkID ;
          Open;
          Edit3.Text := FieldByName('WorkId').AsString;
          Edit4.Text := FieldByName('Name').AsString;
          sSex := FieldByName('Sex').AsString;
          if sSex ='M' then Cmb_Sex.ItemIndex := Cmb_Sex.Items.IndexOf('男')
          else if sSex ='F' then Cmb_Sex.ItemIndex := Cmb_Sex.Items.IndexOf('女')
          else Cmb_Sex.ItemIndex := -1;
          Edit5.Text := FieldByName('Password').AsString;
          if FieldByName('CreateTime').IsNull then DTP_Person.DateTime := Now
          else DTP_Person.DateTime := FieldByName('CreateTime').AsDateTime;
          Mm_personProp.Text := FieldByName('Property').AsString;
          Mm_PersonNt.Text := FieldByName('Note').AsString;
          Edt_Phone1.Text := FieldByName('Phone1').AsString;
          Edt_Phone2.Text := FieldByName('Phone2').AsString;
          Edt_Phone3.Text := FieldByName('Phone3').AsString;
          Cmb_AcdGroup.ItemIndex := Cmb_AcdGroup.Items.IndexOfName(FieldByName('AcdGroup').AsString);
          Cmb_SkillLevel.ItemIndex := Cmb_SkillLevel.Items.IndexOfName(FieldByName('SkillLevel').AsString);
          Close;
       end;
       Nb_Gw.PageIndex :=2;
       Edit3.SetFocus ;
       StBar.Panels[0].Text :='人员属性编辑';
   end;
end;

procedure TFrm_Gwsz.TVPositionChange(Sender: TObject; Node: TTreeNode);
begin
   cSave :='2';
   Nb_Gw.PageIndex :=0;
end;



procedure TFrm_Gwsz.ListAuth(sPosition :String);
var
  sPersonInfo :String;
  sAuth :String;
  ii :Integer;
begin
   LbAuthSel.Clear;
   With Qry_pub1 do
   begin
      Close;
      Sql.Clear ;
      Sql.Add ('Select Authority From DFWF_Position');
      Sql.Add ('Where Position =:p1');
      ParamByName('p1').AsString := sPosition;
      Open;
      if Not IsEmpty then
      Begin
         sAuth := FieldByName('Authority').AsString;
         For ii :=1 to Length(sAuth) do
         begin
             if sAuth[ii] ='1' then
             begin
                Close;
                Sql.Clear ;
                Sql.Add ('Select * From AuthBit');
                Sql.Add ('Where AuthBit =:p1');
                ParamByName('p1').AsInteger := ii;
                Open;
                if Not IsEmpty then
                begin
                   sPersonInfo := FieldByName('AuthBit').AsString + ','
                          +FieldByName('Explain').AsString ;
                   LbAuthSel.Items.Append(sPersonInfo);
                end;
             end;
         end;
      end;
      Close;
   end;

end;




procedure TFrm_Gwsz.ListGwPerson(sPosition :String);
var
  sPersonInfo :String;
  sSex :String;
begin
   LBGwPerson.Clear;
   With Qry_pub1 do
   begin
      Close;
      Sql.Clear ;
      Sql.Add ('Select t2.* From DFWF_PeoplePos t1,DFWF_People t2');
      Sql.Add ('Where (t1.WorkId =t2.WorkId) and (t1.Position =:p1)');
      ParamByName('p1').AsString := sPosition;
      Open;
      if Not IsEmpty then
      Begin
         First;
         While Not Eof do
         begin
            sSex :='';
            sSex := FieldByName('Sex').AsString;
            if sSex ='M' then sSex :='男'
            else if sSex ='F' then sSex :='女';
            sPersonInfo := FieldByName('WorkId').AsString + ','
                          +FieldByName('Name').AsString + ','
                          + sSex ;
            LBGwPerson.Items.Append(sPersonInfo);
            Next;
         end;
      end;
      Close;
   end;

end;

procedure TFrm_Gwsz.FillList;
var
  sPersonInfo :String;
  sSex :String;
Begin
   CmbOrgan.Clear ;
   LBAllPerson.Clear ;
   With Qry_pub1 do
   begin
      Close;
      Sql.Clear ;
      Sql.Add ('Select OrganName From DFWF_Organ');
      Open;
      if Not IsEmpty then
      Begin
         First;
         While Not Eof do
         begin
            CmbOrgan.Items.Append(FieldByName('OrganName').AsString);
            Next;
         end;
      end;
      Close;
      Sql.Clear ;
      Sql.Add ('Select * From DFWF_People');
      Open;
      if Not IsEmpty then
      Begin
         First;
         While Not Eof do
         begin
            sSex :='';
            sSex := FieldByName('Sex').AsString;
            if sSex ='M' then sSex :='男'
            else if sSex ='F' then sSex :='女';
            sPersonInfo := FieldByName('WorkId').AsString + ','
                          +FieldByName('Name').AsString + ','
                          + sSex ;
            LBAllPerson.Items.Append(sPersonInfo);
            Next;
         end;
      end;
      Close;
      Sql.Clear ;
      Sql.Add ('Select * From AuthBit');
      Open;
      if Not IsEmpty then
      Begin
         First;
         While Not Eof do
         begin
            sPersonInfo :=  FieldByName('AuthBit').AsString + ','
                          + FieldByName('Explain').AsString ;
            LbAllAuth.Items.Append(sPersonInfo);
            Next;
         end;
      end;
      Close;
   end;

end;


procedure TFrm_Gwsz.LBAllPersonClick(Sender: TObject);
begin
   LBAllPerson.Hint := LBAllPerson.Items[LBAllPerson.ItemIndex] ;
end;

procedure TFrm_Gwsz.LBGwPersonClick(Sender: TObject);
begin
   LBGwPerson.Hint := LBGwPerson.Items[LBGwPerson.ItemIndex] ;
end;

procedure TFrm_Gwsz.SBtn_DelClick(Sender: TObject);
begin
   LBGwPerson.Items.Delete(LBGwPerson.ItemIndex);
end;

procedure TFrm_Gwsz.SBtn_DellAllClick(Sender: TObject);
begin
   LBGwPerson.Clear ;
end;


procedure TFrm_Gwsz.AddItem(sInfo :String);
begin
   if LBGwPerson.Items.IndexOf(sInfo) <0 then
      LBGwPerson.Items.Append(sInfo);
end;

procedure TFrm_Gwsz.AddItemAuth(sInfo :String);
begin
   if LbAuthSel.Items.IndexOf(sInfo) <0 then
      LbAuthSel.Items.Append(sInfo);
end;


procedure TFrm_Gwsz.SBtn_AddClick(Sender: TObject);
begin
   AddItem(LBAllPerson.Items[LBAllPerson.ItemIndex]);
end;

procedure TFrm_Gwsz.SBtn_AddAllClick(Sender: TObject);
var
  ii :Integer;
begin
   for ii :=0 to LBAllPerson.Items.Count -1 do
   begin
      AddItem(LBAllPerson.Items[ii]);
   end;
end;

procedure TFrm_Gwsz.SpeedButton2Click(Sender: TObject);
begin
   cSave :='2';
   Nb_Gw.PageIndex :=0;
end;


procedure TFrm_Gwsz.InsertPeoplePos(sPosition :String);
var
  sWorkId, sItem :String;
  ii :Integer;
Begin
    if LBGwPerson.Items.Count =0 then Exit;
    for ii :=0 to LBGwPerson.Items.Count-1 do
    begin
        sItem := LBGwPerson.Items[ii];
        sWorkID := Copy(sItem,1,Pos(',',sItem)-1);
        With Qry_pub1 do
        begin
           Close;
           Sql.Clear ;
           Sql.Add ('Select WorkId From DFWF_PeoplePos Where ');
           Sql.Add (' (WorkId =:p1) and (Position =:p2)');
           ParamByName('p1').AsString := sWorkID;
           ParamByName('p2').AsString := sPosition;
           Open;
           if IsEmpty then
           Begin
              Close;
              Sql.Clear ;
              Sql.Add ('Insert Into DFWF_PeoplePos(WorkId,Position,CreateTime)');
              Sql.Add ('Values(:p1,:p2,:p3)');
              ParamByName('p1').AsString := sWorkID;
              ParamByName('p2').AsString := sPosition;
              ParamByName('p3').AsDateTime := DTP_CL.DateTime ;
              ExecSql;
              Close;
           end;
           Close;
        end;
    end;
end;


function GetAuth(lbList :TListBox):String;
var
  sAuth :String;
  ii :Integer;
  sLst :String;
begin
  sAuth := '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
  if lbList.Items.Count >0 then
  begin
     for ii :=0 to lbList.Items.Count-1 do

⌨️ 快捷键说明

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