unit U_UserSel; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB, cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin, StdCtrls, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls, cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid, cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP, ShellAPI, IniFiles, cxCheckBox, cxCalendar, cxButtonEdit, cxTextEdit, cxDBLookupComboBox, ComObj, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxDateRanges, U_BaseHelp, dxBarBuiltInMenu, System.ImageList, Vcl.ImgList, dxScrollbarAnnotations, cxImageList, cxContainer, dxSkinsCore, dxSkinsDefaultPainters; type FdDy = record inc: integer; //客户端套接字句柄 FDdys: string[32]; //客户端套接字 FdDysName: string[32]; //客户端套接字 end; TfrmUserSel = class(TfrmBaseHelp) ToolBar1: TToolBar; TBRafresh: TToolButton; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; Panel1: TPanel; TBFind: TToolButton; ADOQueryMain: TADOQuery; Label3: TLabel; EEName: TcxTextEdit; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; cxGridLevel1: TcxGridLevel; cxGridPopupMenu2: TcxGridPopupMenu; DS_1: TDataSource; CDS_1: TClientDataSet; Label1: TLabel; EECode: TcxTextEdit; btnOK: TToolButton; v2Column1: TcxGridDBColumn; v2Column2: TcxGridDBColumn; v2Column3: TcxGridDBColumn; VC_SSel: TcxGridDBColumn; ADOConnection1: TADOConnection; ImageList1: TImageList; cxImageList_bar: TcxImageList; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBFindClick(Sender: TObject); procedure btnOKClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Tv1DblClick(Sender: TObject); procedure EENamePropertiesChange(Sender: TObject); procedure EENameKeyPress(Sender: TObject; var Key: Char); private { Private declarations } procedure InitGrid(); procedure CheckGrid(); public Fdept, FPost: string; FMultiple: Boolean; FRTUserID, FRTUserName: string; end; var frmUserSel: TfrmUserSel; implementation uses U_DataLink, U_RTFun; {$R *.dfm} procedure TfrmUserSel.CheckGrid(); var fsj, fsj1: string; FStrs: TStringList; i: integer; begin if Trim(FRTUserID) <> '' then begin FStrs := TStringList.Create(); ExtractStrings([','], [' '], PChar(FRTUserID), FStrs); with CDS_1 do begin First; while not eof do begin if FStrs.IndexOf(Trim(FieldByName('EECode').AsString)) >= 0 then begin Edit; FieldByName('SSel').Value := true; Post; end; Next; end; end; FStrs.Free; end; end; procedure TfrmUserSel.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; SQL.Clear; // sql.Add(' select * from SY_User where 1=1 '); sql.Add(' select * from SY_Employee where 1=1 '); if Trim(FPost) <> '' then begin // sql.Add('and Udept=' + QuotedStr(Trim(Fdept))); sql.Add('and Post=' + QuotedStr(Trim(FPost))); end; if Trim(Fdept) <> '' then begin sql.Add('and dept=' + QuotedStr(Trim(Fdept))); end; Open; end; SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); finally ADOQueryMain.EnableControls; end; CheckGrid(); end; procedure TfrmUserSel.FormCreate(Sender: TObject); begin inherited; try with ADOConnection1 do begin Connected := false; ConnectionString := DConString; Connected := true; end; ADOQueryBaseCmd.Connection := ADOConnection1; ADOQueryBaseTemp.Connection := ADOConnection1; except application.MessageBox('网络连接失败!', '提示信息'); end; end; procedure TfrmUserSel.FormDestroy(Sender: TObject); begin inherited; frmUserSel := nil; end; procedure TfrmUserSel.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmUserSel.TBCloseClick(Sender: TObject); begin WriteCxGrid(trim(self.caption), Tv1, '账户选择'); Close; end; procedure TfrmUserSel.FormShow(Sender: TObject); begin inherited; ReadCxGrid(trim(self.Caption), Tv1, '账户选择'); // if FMultiple then // begin // VC_SSel.Visible := True; // VC_SSel.Hidden := False; // end // else // begin // VC_SSel.Visible := False; // VC_SSel.Hidden := True; // end; InitGrid(); end; procedure TfrmUserSel.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmUserSel.TBFindClick(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); end; end; procedure TfrmUserSel.Tv1DblClick(Sender: TObject); begin btnOK.Click; end; procedure TfrmUserSel.EENamePropertiesChange(Sender: TObject); begin TBFind.Click; end; procedure TfrmUserSel.EENameKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin InitGrid(); end; end; procedure TfrmUserSel.btnOKClick(Sender: TObject); var RTValues: TArray; begin // if FMultiple then // begin if not CDS_1.Locate('SSel', true, []) then begin Application.MessageBox('请选择数据!', '提示', 0); Exit; end; // end; RTValues := SelCDSKey(CDS_1, ['EECode', 'EEName']); FRTUserID := RTValues[0]; FRTUserName := RTValues[1]; ModalResult := 1; end; end.