u_editlst.pas

来自「一个电力企业的后台管理程序」· PAS 代码 · 共 213 行

PAS
213
字号
unit U_EditLst;

interface

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

type
  TFrm_EditLst = class(TForm)
    pnl_button: TPanel;
    btn_Insert: TBitBtn;
    btn_Edit: TBitBtn;
    btn_Close: TBitBtn;
    Btn_Del: TBitBtn;
    lv_phoneline: TListView;
    procedure btn_CloseClick(Sender: TObject);
    procedure btn_InsertClick(Sender: TObject);
    procedure btn_EditClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Btn_DelClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    cEditType :Char;  {"0":组织机构;"1":人员设置}
  end;

var
  Frm_EditLst: TFrm_EditLst;

implementation

uses U_AddData, U_Gwbj;

{$R *.DFM}

procedure TFrm_EditLst.btn_CloseClick(Sender: TObject);
begin
   Close;
end;

procedure TFrm_EditLst.btn_InsertClick(Sender: TObject);
begin
    Frm_EditData := TFrm_EditData.Create(Application);
    {"0":组织机构;"1":人员设置}
    if cEditType ='0' then Frm_EditData.Ntbk_Type.PageIndex :=0
    else Frm_EditData.Ntbk_Type.PageIndex :=1;
    Frm_EditData.btn_New.Visible := True;
    Frm_EditData.sEditId := '';
    Frm_EditData.ShowModal;
    Frm_EditData.Free;
end;

procedure TFrm_EditLst.btn_EditClick(Sender: TObject);
begin
    if lv_phoneline.SelCount <=0 then Exit; 
    Frm_EditData := TFrm_EditData.Create(Application);
    {"0":组织机构;"1":人员设置}
    if cEditType ='0' then Frm_EditData.Ntbk_Type.PageIndex :=0
    else Frm_EditData.Ntbk_Type.PageIndex :=1;
    Frm_EditData.btn_New.Visible := False;
    Frm_EditData.sEditId := lv_phoneline.Items[lv_phoneline.Selected.Index].Caption ;
    Frm_EditData.iItemIndex := lv_phoneline.Selected.Index ;
    Frm_EditData.ShowModal;
    Frm_EditData.Free;
end;


Procedure ListData(QryLst :TQuery; var Lstview :TListView);
var
  ii, iFldCount :Integer;
  ListItem: TListItem;
  NewColumn: TListColumn;
begin
   Lstview.Columns.Clear ;
   Lstview.Items.Clear ;
   With QryLst do
   begin
      iFldCount := FieldCount;
      For ii :=0 to iFldCount-1 do
      begin
          NewColumn := Lstview.Columns.Add;
          NewColumn.Caption := Fields[ii].DisplayLabel ;
          NewColumn.Width := ColumnHeaderWidth;
      end;
      Close;
      Open;
      First;
      While Not Eof do
      Begin
          ListItem := Lstview.Items.Add;
          ListItem.Caption := Fields[0].AsString ;
          For ii :=1 to iFldCount-1 do
            if UpperCase(Fields[ii].FieldName) ='SEX' then
            begin
                if Fields[ii].AsString='M' then ListItem.SubItems.Add('男')
                else if Fields[ii].AsString='F' then ListItem.SubItems.Add('女')
                else ListItem.SubItems.Add('');
            end
            else ListItem.SubItems.Add(Fields[ii].AsString);
          Next;
      end;
      Close;
   end;

end;


procedure TFrm_EditLst.FormShow(Sender: TObject);
begin
   Case cEditType of {"0":组织机构;"1":人员设置}
     '0' :
          begin
             ListData(Frm_Gwsz.Qry_OrganLst,lv_phoneline);
          end;
     '1' :
          begin
             ListData(Frm_Gwsz.Qry_PersonLst,lv_phoneline);
          end;
   end;
end;

Procedure DelLst(cType :Char; sID :String);
var
  sFieldName, sTable, sPosition :String;
  ii :Integer;
Begin
   sPosition :='';
   With Frm_Gwsz.Qry_pub1 do
   begin
       Case cType of {"0":组织机构;"1":人员设置}
         '0' :
              begin
                 sFieldName := 'OrganName';
                 sTable := 'DFWF_Organ';
                 Close;
                 Sql.Clear;
                 Sql.Add('Select Position From DFWF_Position Where Organ =:p1');
                 ParamByName('p1').AsString := sID;
                 Open;
                 if Not IsEmpty then
                 Begin
                    First;
                    While Not Eof do
                    begin
                       sPosition := sPosition + FieldByName('Position').AsString+#13;
                       Next;
                    end;
                     MessageBox(0,Pchar('该组织机构已分配岗位:'+ #13 + sPosition + '不许删除!'),'提示...'
                              ,MB_ICONEXCLAMATION+MB_Ok);
                     Close;
                     Exit;
                 end;
                 Close;
              end;
         '1' :
              begin
                 sFieldName := 'WorkId';
                 sTable := 'DFWF_People';
                 Close;
                 Sql.Clear;
                 Sql.Add('Select WorkId From DFWF_PeoplePos Where WorkId=:p1');
                 ParamByName('p1').AsString := sID;
                 Open;
                 if Not IsEmpty then
                 Begin
                     if MessageBox(0,'该人员已分配岗位,是否删除?','提示...'
                              ,MB_ICONEXCLAMATION+MB_YESNO) =IDNO then
                     begin
                         Close;
                         Exit;
                    end
                    else
                    Begin
                        Close;
                        Sql.Clear;
                        Sql.Add ('Delete DFWF_PeoplePos Where WorkId =:p1');
                        ParamByName('p1').AsString := sID;
                        ExecSql;
                        Close;
                    end;
                 end;
                 Close;
              end;
       end;
       Close;
       Sql.Clear ;
       Sql.Add ('Delete ' + sTable);
       Sql.Add ('Where '+ sFieldName + '=:p1');
       ParamByName('p1').AsString := sID;
       ExecSql;
       Close;
   end;
   Frm_EditLst.lv_phoneline.Selected.Delete ;
end;


procedure TFrm_EditLst.Btn_DelClick(Sender: TObject);
var
  sID :String ;
begin
  if lv_phoneline.Items.IndexOf(lv_phoneline.Selected) = -1 then
   begin
    Application.MessageBox('请选择要删除的记录','信息提示',MB_OK+MB_ICONINFORMATION);
    Exit;
   end;
   sID := lv_phoneline.Selected.Caption;
   DelLst(cEditType,sID);
end;

end.

⌨️ 快捷键说明

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