【delphi开源代码栏目提醒】:网学会员,鉴于大家对delphi开源代码十分关注,论文会员在此为大家搜集整理了“Cxbmry.pas”一文,供大家参考学习!
unit Cxbmry;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;
type
TshowBmry = (BuMen,RenYuan); //显示部门人员窗体时的状态,只选择部门或选择人员
TBmryxy =record
bmdm:string;
bmmc:string;
rygh:string;
ryxm:string;
ryzw:string;
end;
TfrmBmry = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
GroupBox2: TGroupBox;
BtnOk: TButton;
BtnCancel: TButton;
GroupBox3: TGroupBox;
Label2: TLabel;
LstBmmc: TListBox;
LstRyxm: TListBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
EdtGh: TEdit;
EdtXm: TEdit;
EdtBm: TEdit;
EdtZw: TEdit;
ADOConnection1: TADOConnection;
ADODataSet1: TADODataSet;
ADODataSet2: TADODataSet;
procedure FormCreate(Sender: TObject);
procedure LstBmmcClick(Sender: TObject);
procedure LstRyxmClick(Sender: TObject);
procedure setStatus(status:TshowBmry);
private
{ Private declarations }
procedure sychronizeRyxm(bmmc:string);
procedure sychronizeRyzl(i:integer);
public
{ Public declarations }
end;
const
allBm = '所有部门';
{var
frmBmry: TfrmBmry;}
function showCxBmry(status:TshowBmry):TBmryxy;
implementation
{$R *.dfm}
uses
publicUnit;
procedure TfrmBmry.FormCreate(Sender: TObject);
begin
ADOConnection1.ConnectionString := getADOConnnectString ;
//下面设置部门名称列表控件的初值
ADODataSet1.Active :=false;
ADODataSet1.CommandText := 'select * from 部门信息';
ADODataSet1.Active := True ;
if ADODataSet1.RecordCount = 0 then
exit;
LstBmmc.Items.Add(allBm);
ADODataSet1.Recordset.MoveFirst ;
while not ADODataSet1.Recordset.EOF do
begin
LstBmmc.Items.Add( ADODataSet1.Recordset.Fields['部门名称'].Value);
ADODataSet1.Recordset.MoveNext;
end;
LstBmmc.ItemIndex := 0;
sychronizeRyxm(LstBmmc.Items.Strings [LstBmmc.ItemIndex] ); //根据选中的部门名称设置人员列表
end;
procedure TfrmBmry.sychronizeRyxm(bmmc:string);
var
strSQL:string;
begin
LstRyxm.Clear ; //清空人员列表内容
//以下根据选中的部门从数据库中查询该部门的所有人员
strSQL := 'select 职员信息.*,部门信息.部门名称 from 职员信息,部门信息' +
' where 职员信息.所属部门代码 = 部门信息.部门代码';
if bmmc<>allBm then
strSQL := strSQL + ' and 部门信息.部门名称 =''' + bmmc + '''';
ADODataSet2.Active := false;
ADODataSet2.CommandText := strSQL;
ADODataSet2.Active := true;
//以下向人员列表中添加查询到的人员
if ADODataSet2.RecordCount =0 then
exit;
ADODataSet2.Recordset.MoveFirst ;
while not ADODataSet2.Recordset.eof do
begin
LstRyxm.Items.Add(ADODataSet2.Recordset.Fields[''].Value );
ADODataSet2.Recordset.MoveNext ;
end;
LstRyxm.ItemIndex := 0;
sychronizeRyzl(LstRyxm.itemindex ); //根据选中的人员在人员信息输入框中显示相应信息
end;
procedure TfrmBmry.sychronizeRyzl(i:integer);
begin
ADODataSet2.Recordset.Move (i,1);
EdtGh.Text := adodataset2.Recordset.Fields['工号'].Value ;
EdtXm.Text := adodataset2.Recordset.Fields[''].Value ;
EdtBm.Text := adodataset2.Recordset.Fields['部门名称'].Value ;
EdtZw.Text := adodataset2.Recordset.Fields['职务'].Value ;
end;
function showCxBmry(status:TshowBmry):TBmryxy ;
var
frmCxbmry:TfrmBmry;
rt:integer;
begin
frmCxbmry := nil; //设置初值
try
// 以下对返回值进行初始化
result.bmdm := '';
result.bmmc := '';
result.rygh := '';
result.ryxm := '';
result.ryzw := '';
frmCxbmry := TfrmBmry .create(application);
frmCxbmry.setStatus(status); //设置系统进入的状态
rt := frmCxbmry.showModal;//显示查询部门人员信息的模式窗口
if rt = mrOk then //用户选择了确定
begin
//以下根据用户的选择获得返回值
result.bmdm := frmCxbmry.adodataset2.Recordset.Fields['所属部门代码'].Value ;
result.bmmc := frmCxbmry