D10xhGemei/A00通用窗体/U_UserSel.pas

254 lines
6.0 KiB
ObjectPascal
Raw Normal View History

2024-12-14 17:23:12 +08:00
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,
2025-09-08 10:53:41 +08:00
cxNavigator, dxDateRanges, U_BaseHelp, dxBarBuiltInMenu, System.ImageList,
Vcl.ImgList, dxScrollbarAnnotations, cxImageList, cxContainer, dxSkinsCore,
2025-03-20 16:38:30 +08:00
dxSkinsDefaultPainters;
2024-12-14 17:23:12 +08:00
type
FdDy = record
inc: integer; //<2F>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>׽<EFBFBD><D7BD>־<EFBFBD><D6BE><EFBFBD>
FDdys: string[32]; //<2F>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>׽<EFBFBD><D7BD><EFBFBD>
FdDysName: string[32]; //<2F>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>׽<EFBFBD><D7BD><EFBFBD>
end;
TfrmUserSel = class(TfrmBaseHelp)
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBClose: TToolButton;
ADOQueryTemp: TADOQuery;
ADOQueryCmd: TADOQuery;
Panel1: TPanel;
2025-09-08 10:53:41 +08:00
TBFind: TToolButton;
2024-12-14 17:23:12 +08:00
ADOQueryMain: TADOQuery;
Label3: TLabel;
2025-09-08 10:53:41 +08:00
EEName: TcxTextEdit;
2024-12-14 17:23:12 +08:00
cxGrid1: TcxGrid;
Tv1: TcxGridDBTableView;
cxGridLevel1: TcxGridLevel;
cxGridPopupMenu2: TcxGridPopupMenu;
DS_1: TDataSource;
CDS_1: TClientDataSet;
Label1: TLabel;
2025-09-08 10:53:41 +08:00
EECode: TcxTextEdit;
2024-12-14 17:23:12 +08:00
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);
2025-09-08 10:53:41 +08:00
procedure TBFindClick(Sender: TObject);
2024-12-14 17:23:12 +08:00
procedure btnOKClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Tv1DblClick(Sender: TObject);
2025-09-08 10:53:41 +08:00
procedure EENamePropertiesChange(Sender: TObject);
procedure EENameKeyPress(Sender: TObject; var Key: Char);
2024-12-14 17:23:12 +08:00
private
{ Private declarations }
procedure InitGrid();
procedure CheckGrid();
public
2025-09-08 10:53:41 +08:00
Fdept, FPost: string;
2024-12-14 17:23:12 +08:00
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
2025-09-08 10:53:41 +08:00
if FStrs.IndexOf(Trim(FieldByName('EECode').AsString)) >= 0 then
2024-12-14 17:23:12 +08:00
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;
2025-09-08 10:53:41 +08:00
// sql.Add(' select * from SY_User where 1=1 ');
sql.Add(' select * from SY_Employee where 1=1 ');
2024-12-14 17:23:12 +08:00
2025-09-08 10:53:41 +08:00
if Trim(FPost) <> '' then
begin
// sql.Add('and Udept=' + QuotedStr(Trim(Fdept)));
sql.Add('and Post=' + QuotedStr(Trim(FPost)));
end;
2024-12-14 17:23:12 +08:00
if Trim(Fdept) <> '' then
begin
2025-09-08 10:53:41 +08:00
sql.Add('and dept=' + QuotedStr(Trim(Fdept)));
2024-12-14 17:23:12 +08:00
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('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ');
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, '<27>˻<EFBFBD>ѡ<EFBFBD><D1A1>');
Close;
end;
procedure TfrmUserSel.FormShow(Sender: TObject);
begin
inherited;
ReadCxGrid(trim(self.Caption), Tv1, '<27>˻<EFBFBD>ѡ<EFBFBD><D1A1>');
2025-09-08 10:53:41 +08:00
// if FMultiple then
// begin
// VC_SSel.Visible := True;
// VC_SSel.Hidden := False;
// end
// else
// begin
// VC_SSel.Visible := False;
// VC_SSel.Hidden := True;
// end;
2024-12-14 17:23:12 +08:00
InitGrid();
end;
procedure TfrmUserSel.TBRafreshClick(Sender: TObject);
begin
InitGrid();
end;
2025-09-08 10:53:41 +08:00
procedure TfrmUserSel.TBFindClick(Sender: TObject);
2024-12-14 17:23:12 +08:00
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;
2025-09-08 10:53:41 +08:00
procedure TfrmUserSel.EENamePropertiesChange(Sender: TObject);
begin
TBFind.Click;
end;
procedure TfrmUserSel.EENameKeyPress(Sender: TObject; var Key: Char);
2024-12-14 17:23:12 +08:00
begin
2025-09-08 10:53:41 +08:00
if Key = #13 then
begin
InitGrid();
end;
2024-12-14 17:23:12 +08:00
end;
procedure TfrmUserSel.btnOKClick(Sender: TObject);
var
RTValues: TArray<string>;
begin
2025-09-08 10:53:41 +08:00
// if FMultiple then
// begin
if not CDS_1.Locate('SSel', true, []) then
2024-12-14 17:23:12 +08:00
begin
2025-09-08 10:53:41 +08:00
Application.MessageBox('<27><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ', 0);
Exit;
2024-12-14 17:23:12 +08:00
end;
2025-09-08 10:53:41 +08:00
// end;
RTValues := SelCDSKey(CDS_1, ['EECode', 'EEName']);
2024-12-14 17:23:12 +08:00
FRTUserID := RTValues[0];
FRTUserName := RTValues[1];
ModalResult := 1;
end;
end.