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 + -
显示快捷键?