unit uFrmModel;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, Grids, DBGrids, ExtCtrls, ADODB, DB, StdCtrls,
dbcgrids, ValEdit, uCommon, Menus ,QuickRpt, QRCtrls,Printers, IMM;const
nHKL_LIST = 20;
type
sortString=record
fieldName:string;
sortType:String;
end;Type
SelectButton=record
BTN:Tpanel;
RowIndex:integer;
end;TYPE
SpecialValueS=record
TabIndex:integer;
ValueName:String;
Kind:Integer; // 0:Deault Value 1:Lock Value 2: Auto Increase Value 3:Cannot Modify
value:String;
end;type
TFrmModel = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Splitter1: TSplitter;
DBGrid1: TDBGrid;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
ValueListEditor1: TValueListEditor;
TabSheet2: TTabSheet;
BTN_Select: TPanel;
ValueListEditor2: TValueListEditor;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
ToolButton10: TToolButton;
ToolButton2: TToolButton;
TB_ADD: TToolButton;
TB_EDIT: TToolButton;
TB_DEL: TToolButton;
ToolButton6: TToolButton;
ToolButton8: TToolButton;
ToolButton1: TToolButton;
TB_CHECK: TToolButton;
TB_PRINT: TToolButton;
ToolBar2: TToolBar;
TB_Save: TToolButton;
TB_Cancle: TToolButton;
TB_Refresh: TToolButton;
TB_Menu_DropDown: TPopupMenu;
StatusBar1: TStatusBar;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ToolButton1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ToolButton10Click(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure TB_DELClick(Sender: TObject);
procedure TB_EDITClick(Sender: TObject);
procedure ToolButton13Click(Sender: TObject);
procedure ToolButton8Click(Sender: TObject);
procedure MyADOScroll(DataSet: TDataSet);
procedure TB_ADDClick(Sender: TObject);
procedure TB_CancleClick(Sender: TObject);
procedure TB_SaveClick(Sender: TObject);
procedure BTN_SelectClick(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure TB_RefreshClick(Sender: TObject); Procedure DoInsertSpecialValue;
Procedure DoUpdateSpecialValue; procedure ValueListEditor1StringsChange(Sender: TObject);
procedure TB_PRINTClick(Sender: TObject);
procedure TB_CHECKClick(Sender: TObject);
procedure ValueListEditor1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
procedure ValueListEditor1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
procedure DBGrid1TitleClick(Column: TColumn);
procedure ValueListEditor2Enter(Sender: TObject);
Procedure RefreshSelectButton;
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); //**********************************
// 输入法系列函数
//**********************************
function GetImeFileName: string;
function SetActivateIme(sWanted: string): boolean;
procedure ToChinese(hWindows: THandle; bChinese: boolean);
procedure ValueListEditor1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ValueListEditor1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
procedure N3Click(Sender: TObject);
procedure TB_Menu_DropDownPopup(Sender: TObject); private
{ Private declarations } FirstActive:Boolean;
DataSource:TDataSource;
SelectBTN:array of SelectButton; ValueLock:boolean;
//************************************
// 为 Update 准备 的 String;
//************************************
CaptionStrings:TStrings;
StartStrings:TStrings;
EndStrings:TStrings; //************************************
// 为 从表 准备的 ADO 控件
//************************************ DataSource2:TDatasource; protected
ActionString:String; InsertSPValues:array of specialValues;
UpdateSPValues:array of specialValues;
DisableEditField:array of specialValues;
EnableEditField:Array of SpecialValues;
isDisableOrEnable:integer; //***** 0: N/A 1:Disable First 2:Enable First
CheckFieldName:String; // 缺省的 "生效" 作用字段名称
CheckFieldValue:integer; // “生效”的 字段值 FieldTypes:TStrings;
FieldNameS:TStrings;
FKFieldNames:TStrings; // 为了在 ValueListEditor中 进行 PopUP 用
FKFieldSQLS:TStrings;
FKFieldValueFieldS:TStrings; //************************************
// 为从表准备 的Ado String
//************************************
DetailSQLString:String;
MasterFields:String; // 主表中的 字段
DetailFields:String; // 从表中的 字段
LogID:String; //*************************************
Procedure InsertSpecialValue(TabIndex:integer;ValueName:String;Kind:integer;Value:String); // 0:Deault Value 1:Lock Value 2: Auto Increase Value
Procedure UpdateSpecialValue(TabIndex:integer;ValueName:String;Kind:integer;Value:String); // 0:Deault Value 1:Lock Value 2: Auto Increase Value
Procedure DisableEditValue(TabIndex:integer;FieldName:String;DisabledAction:Integer);
Procedure EnableEditValue(TabIndex:integer;FieldName:String;EnabledAction:Integer);
Procedure SetFilter(UnitInfoIndex:integer;FieldName,Sql,ValueCaption:String);
Procedure SetCheckField(FieldName:String;FieldValue:integer); //Procedure OpenLog;
//Procedure CloseLog;
public
{ Public declarations }
sortStrings1,sortStrings2:array of sortString;
strSort1,strSort2:String; OldViewAdoQuerySQL:String; ViewSql:String; //上半部分的显示用 SQL 语句
ModuleListIndex:integer; //该窗口在 Frmmain.ModuleLists中所在的位置
TableName:String; // 所操作的 Table 表名称
CompanyID:String;
actionName:string; // 该模块的名称
Action:integer; // 0:没有操作 1:New 2:Edit
keyFieldString:String; // 主键 字符串 //*****************************************************************
//*****************************************************************
ViewAdoquery:TAdoquery;
AdoDataSet2:TAdoDataSet;
FilterString:String; // ViewAdoquery中的Filter的字符串
FilterSetString:String; // 在 FrmFilter中 返回的字符串
LocateString1,LocateString2:String; allowEditAfterCheck:boolean; // 允许 在生效后继续修改 UnitInfo:array of UnitInfomation; procedure ShowSelect;
procedure ErrorInfoFeedBack(err:exception);
Procedure EditCurrentFieldValue(TableName:String;FieldName:String;Value:String); end;var
FrmModel: TFrmModel;implementationuses uFrmDataConnection, uFrmmain, uFrmFilter, uFrmSelect, uFrmPrint,
uFrmView, uFrmPrintSet, uFrmInfoFeedBack;{$R *.dfm}
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, Grids, DBGrids, ExtCtrls, ADODB, DB, StdCtrls,
dbcgrids, ValEdit, uCommon, Menus ,QuickRpt, QRCtrls,Printers, IMM;const
nHKL_LIST = 20;
type
sortString=record
fieldName:string;
sortType:String;
end;Type
SelectButton=record
BTN:Tpanel;
RowIndex:integer;
end;TYPE
SpecialValueS=record
TabIndex:integer;
ValueName:String;
Kind:Integer; // 0:Deault Value 1:Lock Value 2: Auto Increase Value 3:Cannot Modify
value:String;
end;type
TFrmModel = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Splitter1: TSplitter;
DBGrid1: TDBGrid;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
ValueListEditor1: TValueListEditor;
TabSheet2: TTabSheet;
BTN_Select: TPanel;
ValueListEditor2: TValueListEditor;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
ToolButton10: TToolButton;
ToolButton2: TToolButton;
TB_ADD: TToolButton;
TB_EDIT: TToolButton;
TB_DEL: TToolButton;
ToolButton6: TToolButton;
ToolButton8: TToolButton;
ToolButton1: TToolButton;
TB_CHECK: TToolButton;
TB_PRINT: TToolButton;
ToolBar2: TToolBar;
TB_Save: TToolButton;
TB_Cancle: TToolButton;
TB_Refresh: TToolButton;
TB_Menu_DropDown: TPopupMenu;
StatusBar1: TStatusBar;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ToolButton1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ToolButton10Click(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure TB_DELClick(Sender: TObject);
procedure TB_EDITClick(Sender: TObject);
procedure ToolButton13Click(Sender: TObject);
procedure ToolButton8Click(Sender: TObject);
procedure MyADOScroll(DataSet: TDataSet);
procedure TB_ADDClick(Sender: TObject);
procedure TB_CancleClick(Sender: TObject);
procedure TB_SaveClick(Sender: TObject);
procedure BTN_SelectClick(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure TB_RefreshClick(Sender: TObject); Procedure DoInsertSpecialValue;
Procedure DoUpdateSpecialValue; procedure ValueListEditor1StringsChange(Sender: TObject);
procedure TB_PRINTClick(Sender: TObject);
procedure TB_CHECKClick(Sender: TObject);
procedure ValueListEditor1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
procedure ValueListEditor1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
procedure DBGrid1TitleClick(Column: TColumn);
procedure ValueListEditor2Enter(Sender: TObject);
Procedure RefreshSelectButton;
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); //**********************************
// 输入法系列函数
//**********************************
function GetImeFileName: string;
function SetActivateIme(sWanted: string): boolean;
procedure ToChinese(hWindows: THandle; bChinese: boolean);
procedure ValueListEditor1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ValueListEditor1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
procedure N3Click(Sender: TObject);
procedure TB_Menu_DropDownPopup(Sender: TObject); private
{ Private declarations } FirstActive:Boolean;
DataSource:TDataSource;
SelectBTN:array of SelectButton; ValueLock:boolean;
//************************************
// 为 Update 准备 的 String;
//************************************
CaptionStrings:TStrings;
StartStrings:TStrings;
EndStrings:TStrings; //************************************
// 为 从表 准备的 ADO 控件
//************************************ DataSource2:TDatasource; protected
ActionString:String; InsertSPValues:array of specialValues;
UpdateSPValues:array of specialValues;
DisableEditField:array of specialValues;
EnableEditField:Array of SpecialValues;
isDisableOrEnable:integer; //***** 0: N/A 1:Disable First 2:Enable First
CheckFieldName:String; // 缺省的 "生效" 作用字段名称
CheckFieldValue:integer; // “生效”的 字段值 FieldTypes:TStrings;
FieldNameS:TStrings;
FKFieldNames:TStrings; // 为了在 ValueListEditor中 进行 PopUP 用
FKFieldSQLS:TStrings;
FKFieldValueFieldS:TStrings; //************************************
// 为从表准备 的Ado String
//************************************
DetailSQLString:String;
MasterFields:String; // 主表中的 字段
DetailFields:String; // 从表中的 字段
LogID:String; //*************************************
Procedure InsertSpecialValue(TabIndex:integer;ValueName:String;Kind:integer;Value:String); // 0:Deault Value 1:Lock Value 2: Auto Increase Value
Procedure UpdateSpecialValue(TabIndex:integer;ValueName:String;Kind:integer;Value:String); // 0:Deault Value 1:Lock Value 2: Auto Increase Value
Procedure DisableEditValue(TabIndex:integer;FieldName:String;DisabledAction:Integer);
Procedure EnableEditValue(TabIndex:integer;FieldName:String;EnabledAction:Integer);
Procedure SetFilter(UnitInfoIndex:integer;FieldName,Sql,ValueCaption:String);
Procedure SetCheckField(FieldName:String;FieldValue:integer); //Procedure OpenLog;
//Procedure CloseLog;
public
{ Public declarations }
sortStrings1,sortStrings2:array of sortString;
strSort1,strSort2:String; OldViewAdoQuerySQL:String; ViewSql:String; //上半部分的显示用 SQL 语句
ModuleListIndex:integer; //该窗口在 Frmmain.ModuleLists中所在的位置
TableName:String; // 所操作的 Table 表名称
CompanyID:String;
actionName:string; // 该模块的名称
Action:integer; // 0:没有操作 1:New 2:Edit
keyFieldString:String; // 主键 字符串 //*****************************************************************
//*****************************************************************
ViewAdoquery:TAdoquery;
AdoDataSet2:TAdoDataSet;
FilterString:String; // ViewAdoquery中的Filter的字符串
FilterSetString:String; // 在 FrmFilter中 返回的字符串
LocateString1,LocateString2:String; allowEditAfterCheck:boolean; // 允许 在生效后继续修改 UnitInfo:array of UnitInfomation; procedure ShowSelect;
procedure ErrorInfoFeedBack(err:exception);
Procedure EditCurrentFieldValue(TableName:String;FieldName:String;Value:String); end;var
FrmModel: TFrmModel;implementationuses uFrmDataConnection, uFrmmain, uFrmFilter, uFrmSelect, uFrmPrint,
uFrmView, uFrmPrintSet, uFrmInfoFeedBack;{$R *.dfm}
解决方案 »
- DBGrid cell选中后的高亮颜色问题?
- 我有一个delphi群,群号是6839549欢迎大家进来讨论啊
- 请问如何让控件在不同的分辨率下自动调整大小和相对位置
- shelltreeview问题?
- 在delphi中有关数据库的问题
- 有趣问题,看看就知道
- TabControl 和 PageControl的简单使用 重分酬谢
- 怎样忽略掉这个系统级错误?
- delphi和sql server中时间日期类型是如何转换的?
- 关于VisualStido里的Help WorkShop如何使用?
- 为什么要用B/S架构,为什么要用J2EE/.NET?? ?
- 50分在线等.高手来.SaveToStream使用方法?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls, StdCtrls, Menus, ADODB, Registry, ComObj, DBGrids;// ****************************
// FrmModel_Tree:树状结构维护
//*****************************
Type
PRecNode=^recNode;
recNode=Record //**** 表“Tree节点 ” ****
nodeID:String; // 节点ID
FAID:String; // 方案ID (主键)
Code:String; // 代码 (主键)
Name:String; // 名称
Level:integer; // 层次
Index:integer; // 层内序号
ParentNodeID:String; // 父节点ID
Memo:String; // 说明
end;type
arrayNodes=record
nodes:array of recNode;
end;//***********************************
// 文件的版本号
//***********************************
Type
PFixedFileInfo = ^TFixedFileInfo;
TFixedFileInfo = record
dwSignature : DWORD;
dwStrucVersion : DWORD;
wFileVersionMS : WORD; // 次版本号
wFileVersionLS : WORD; // 主版本号
wProductVersionMS : WORD; // 建立次数(build)
wProductVersionLS : WORD; // 发行次数(release)
dwFileFlagsMask : DWORD;
dwFileFlags : DWORD;
dwFileOS : DWORD;
dwFileType : DWORD;
dwFileSubtype : DWORD;
dwFileDateMS : DWORD;
dwFileDateLS : DWORD;
end; // TFixedFileInfoType
UserInfomation=record
UserID:String;
UserName:String;
UserPassword:String;
CompanyID:String;
CompanyName:String;
LogInTime:TDateTime;
end;
Type
UnitInfomation=record
UI_Index:integer;
UI_PageName:String;
UI_ViewSQL:widestring;
UI_TableName:String;
UI_DetailSQLString:String;
UI_MasterFields:String;
UI_DetailFields:String;
UI_FKFieldNames:TStrings; //*** setFilter 的 触发键 名称
UI_FKFieldSQLs:TStrings; //*** setFilter 的 显示 SQL
UI_FKFieldValueFields:TStrings; //*** setFilter 的 返回键名称
UI_FKTreeTableNames:TStrings; //*** SetFilter 的 Tree方案 中的表名称(新:根据其判断是否显示 FrmModel_Tree)
UI_UpdateWhereFields:String;
end;type
ModuleList=record
nodeIndex:integer;
moduleID:string;
moduleName:String;
MGid:string;
MGname:string;
companyId:String;
companyName:String;
ModuleFormName:String;
UM_ADD:integer;
UM_EDIT:integer;
UM_DEL:integer;
UM_CHECK:integer;
UM_Print:integer;
UM_1:integer;
UM_2:integer;
UM_3:integer;
UM_4:integer;
UM_5:integer;
UM_6:integer;
end;
const isLimitNeeded:Boolean=False; // false :无限 ,true :受限
Const LimitDate:integer=30; //需要限制使用日期 :30天 Procedure ShowUserModule(UserID:String;Company_ID:String;Viewer:TTreeView); Function GetNodeCompany(Viewer:TTreeView;IsName:Boolean):String;
Function CanOpenModule(CompanyID:String;UserID:String;FormName:String):Boolean;
Function GetServerDateTime(DateTimeField:String):String;
function GetWindowsDir: String;
function EncodeString(Decoded:string):String;
function EncodeBASE64(Encoded: TMemoryStream {TMailText}; Decoded: TMemoryStream): Integer; //编码函数
function GetIdeDiskSerialNumber:String; //取得 硬盘序列号
function isLimit:boolean;
function FileInfo( const FileName :String ) : TFixedFileInfo; procedure CopyDbDataToExcel(Args: array of const); // *** 将 DBGrid 中内容写入 EXcel中 ***
Procedure MyMessageBox(Handle:HWND;MessageText,MessageCaption:String;MessageType:Cardinal);implementationuses uFrmDataConnection, uFrmmain, uFrmInfoFeedBack;
Procedure MyMessageBox(Handle:HWND;MessageText,MessageCaption:String;MessageType:Cardinal);
var
FrmIFB:TFrmInfoFeedBack;
begin
FrmIFB:=TFrminfofeedback.Create(nil); FrmIFB.Label_Info.Caption:=MessageCaption;
FrmIFB.Memo_Info.Lines.add(MessageText);
FrmIFB.Edit_date.Text :=getserverdatetime('sdate');
FrmIFB.Edit_Time.Text:=getserverdatetime('stime');
FrmIFB.Edit_user.Text:=frmmain.UserInfo.UserName;
FrmIFB.Edit_company.Text:=frmmain.UserInfo.CompanyID;
FrmIFB.edit_moduleGroup.Text:=frmmain.moduleLists[frmmain.modulelistindex].MGid;
FrmIFB.edit_module.Text:=frmmain.moduleLists[FrmMain.modulelistindex].moduleID;
//frmIFB.Edit_infoType.Text:=inttostr(err.HelpContext);
frmIFB.Edit_infoType.Text:='自定义错误处理';
frmIFB.Memo1.lines.Add('【模____块】 '+Frmmain.actionName);
frmIFB.Memo1.Lines.Add('【错误信息】 '+MessageText); frmIFB.ShowModal;end;//得到windows目录
function GetWindowsDir: String;
var
ac: array [1..80] of Char;
pc: PChar;
begin
pc := @ac;
GetWindowsDirectory(pc, 80);
Result := trim(pc);
end;Function GetServerDateTime(DateTimeField:String):String;
var
ado:Tadoquery;
s:String;
begin
ado:=tadoquery.Create(nil);
ado.Connection:=frmdataconnection.ADOConnection1;
ado.SQL.Add('select * from V_Datetime');
ado.Open;
ado.First;
s:=ado.fieldbyname(DatetimeField).AsString;
result:=s;end;Procedure ShowUserModule(UserID:String;Company_ID:String;Viewer:TTreeView);
var
adoquery:TAdoquery;
adoquery1:TAdoquery;
CompanyID:String;
CompanyName:String;
CompanyNode,ModuleGroupNode,ModuleNode:TTreeNode;
MG_Name:String;
i:Integer;
begin
adoquery:=TAdoquery.Create(nil);
//adoquery.Connection:=frmDataConnection.ADOConnection1;
adoquery.Connection:=frmDataConnection.ADOConnection_base;
adoquery1:=TAdoquery.Create(nil);
//adoquery1.Connection:=frmDataConnection.ADOConnection1;
adoquery1.Connection:=frmDataConnection.ADOConnection_base; //adoquery.SQL.Add('select distinct 公司ID,公司名 from V_UserModule where 用户ID='''+UserID+'''');
adoquery.SQL.Add('select distinct 公司ID,公司名 from V_UserModule where 用户ID='''+UserID+''' and 公司ID='''+company_ID+'''');
adoquery.Open;
adoquery.First; if adoquery.Eof then exit; while not adoquery.Eof do
begin
companyId:=trim(adoquery.fieldbyname('公司ID').AsString);
companyName:=trim(adoquery.fieldbyname('公司名').asString);
CompanyNode:=viewer.Items.Add(nil,CompanyName);
CompanyNode.stateindex:=1;
//CompanyNode.SelectedIndex:=0;
MG_Name:=''; adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from V_userModule where 用户ID='''+userID+''' and 公司ID='''+companyID+''' order by MG_ID,Module_ID');
adoquery1.Open;
adoquery1.First; if adoquery1.Eof then continue; setlength(frmmain.moduleLists,0); while not adoquery1.Eof do
begin
if not (MG_Name=trim(adoquery1.fieldbyname('MG_Name').AsString)) then
begin
// *********************************
// 新的 ModuleGroup
// *********************************
MG_Name:=trim(adoquery1.fieldbyname('MG_Name').AsString);
ModuleGroupNode:=Viewer.Items.AddChild(CompanyNode,MG_Name);
ModuleGroupNode.stateindex:=1;
//ModuleGroupNode.imageIndex:=1;
end; ModuleNode:=Viewer.Items.AddChild(ModuleGroupNode,trim(adoquery1.fieldbyname('module_name').AsString));
ModuleNode.StateIndex:=2;
//***********************************************************
// 整理 FrmMain.ModuleLists
//*********************************************************** i:=length(frmmain.moduleLists);
setlength(frmmain.moduleLists,i+1);
frmmain.ModuleLists[i].MGname:=MG_Name;
frmmain.ModuleLists[i].nodeIndex:=moduleNode.AbsoluteIndex;
frmmain.ModuleLists[i].MGid:=trim(adoquery1.fieldbyname('MG_ID').AsString);
frmmain.ModuleLists[i].MGname:=trim(adoquery1.fieldbyname('MG_name').AsString);
frmmain.ModuleLists[i].moduleID:=trim(adoquery1.fieldbyname('module_ID').AsString);
frmmain.ModuleLists[i].moduleName:=trim(adoquery1.fieldbyname('module_name').AsString);
frmmain.ModuleLists[i].companyId:=trim(adoquery1.fieldbyname('公司ID').AsString);
frmmain.ModuleLists[i].companyName:=trim(adoquery1.fieldbyname('公司名').AsString); Frmmain.ModuleLists[i].ModuleFormName:=trim(adoquery1.fieldbyName('module_formName').AsString);
frmMain.ModuleLists[i].UM_ADD:=adoquery1.fieldbyname('UM_ADD').AsInteger;
frmMain.ModuleLists[i].UM_EDIT:=adoquery1.fieldbyname('UM_EDIT').AsInteger;
frmMain.ModuleLists[i].UM_DEL:=adoquery1.fieldbyname('UM_DEL').AsInteger;
frmMain.ModuleLists[i].UM_CHECK:=adoquery1.fieldbyname('UM_CHECK').AsInteger;
frmMain.ModuleLists[i].UM_PRINT:=adoquery1.fieldbyname('UM_PRINT').AsInteger;
frmMain.ModuleLists[i].UM_1:=adoquery1.fieldbyname('UM_1').AsInteger;
frmMain.ModuleLists[i].UM_2:=adoquery1.fieldbyname('UM_2').AsInteger;
frmMain.ModuleLists[i].UM_3:=adoquery1.fieldbyname('UM_3').AsInteger;
frmMain.ModuleLists[i].UM_4:=adoquery1.fieldbyname('UM_4').AsInteger;
frmMain.ModuleLists[i].UM_5:=adoquery1.fieldbyname('UM_5').AsInteger;
frmMain.ModuleLists[i].UM_6:=adoquery1.fieldbyname('UM_6').AsInteger; adoquery1.Next;
end; adoquery.Next;
end;end;Function GetNodeCompany(Viewer:TTreeView;IsName:Boolean):String; //IsName:1 返回CompanyName,否则返回CompanyID
var
s1,s2:String;
s:String;
Node:TTreeNode;
Adoquery:TAdoquery;
begin
node:=TTreeNode.Create(nil);
node:=viewer.Selected; while node.Level<>0 do
begin
node:=node.Parent;
end; S:=node.Text;
Adoquery:=TAdoquery.Create(nil);
Adoquery.Connection:=frmDataConnection.ADOConnection1;
Adoquery.SQL.Add('Select 公司ID,公司名 from 公司 where 公司名='''+s+'''');
adoquery.Open;
Adoquery.First;
s1:=trim(adoquery.fieldbyname('公司ID').AsString);
s2:=trim(Adoquery.fieldbyname('公司名').AsString);
if Isname then
result:=s2
else
result:=s1;end;
var
adoquery:TAdoquery;
begin
Adoquery:=TAdoquery.Create(nil);
//adoquery.Connection:=frmDataConnection.ADOConnection1;
adoquery.Connection:=frmDataConnection.ADOConnection_base;
adoquery.SQL.Add('select * from V_UserModule where 公司ID='''+CompanyID+''' and 用户ID='''+userId+''' and Module_FormName='''+FormName+'''');
adoquery.open;
adoquery.First;
if Adoquery.Recordset.RecordCount<>0 then
result:=true
else
result:=False;end;//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//
// Base64算法 >>>>> EncodeString(SourceString):返回串
//
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//****************对参数Decoded字符串进行Base64编码,返回编码后的字符串
function EncodeString(Decoded:string):String;
var
mmTemp,mmDecoded:TMemoryStream;
strTemp:TStrings;
begin
mmTemp := TMemoryStream.Create;
mmDecoded:=TMemoryStream.Create;
strTemp:=TStringList.Create;
strTemp.Add(Decoded);
strTemp.SaveToStream(mmTemp);
mmTemp.Position := 0;
//*********剔除mmTemp从strTemp中带来的字符#13#10
mmDecoded.CopyFrom(mmTemp,mmTemp.Size-2);
//*********对mmDecoded进行Base64编码,由mmTemp返回编码后的结果
EncodeBASE64(mmTemp,mmDecoded);
//*********获得Base64编码后的字符串
mmTemp.Position:=0;
strTemp.LoadFromStream(mmTemp);
//*********返回结果必须从strTemp[0]中获得,如果使用strTemp.Text会带来不必要的字符#13#10
Result:=strTemp[0];
end;
function EncodeBASE64(Encoded: TMemoryStream ; Decoded: TMemoryStream): Integer;
const
_Code64: String[64] =('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/');
var
I: LongInt;
B: array[0..2279] of Byte;
J, K, L, M, Quads: Integer;
Stream: string[76];
EncLine: String;
begin
Encoded.Clear;
Stream := '';
Quads := 0;
//*********为提高效率,每2280字节流为一组进行编码
J := Decoded.Size div 2280;
Decoded.Position := 0;
//*********对前J*2280个字节流进行编码
for I := 1 to J do
begin
Decoded.Read(B, 2280);
for M := 0 to 39 do
begin
for K := 0 to 18 do
begin
L:= 57*M + 3*K;
Stream[Quads+1] := _Code64[(B[L] div 4)+1];
Stream[Quads+2] := _Code64[(B[L] mod 4)*16 + (B[L+1] div 16)+1];
Stream[Quads+3] := _Code64[(B[L+1] mod 16)*4 + (B[L+2] div 64)+1];
Stream[Quads+4] := _Code64[B[L+2] mod 64+1];
Inc(Quads, 4);
if Quads = 76 then
begin
Stream[0] := #76;
EncLine := Stream+#13#10;
Encoded.Write(EncLine[1], Length(EncLine));
Quads := 0;
end;
end;
end;
end; //*********对以2280为模的余数字节流进行编码
J := (Decoded.Size mod 2280) div 3;
for I := 1 to J do
begin
Decoded.Read(B, 3);
Stream[Quads+1] := _Code64[(B[0] div 4)+1];
Stream[Quads+2] := _Code64[(B[0] mod 4)*16 + (B[1] div 16)+1];
Stream[Quads+3] := _Code64[(B[1] mod 16)*4 + (B[2] div 64)+1];
Stream[Quads+4] := _Code64[B[2] mod 64+1];
Inc(Quads, 4);
//*********每行76个字符
if Quads = 76 then
begin
Stream[0] := #76;
EncLine := Stream+#13#10;
Encoded.Write(EncLine[1], Length(EncLine));
Quads := 0;
end;
end;
//********* “=”补位
if (Decoded.Size mod 3) = 2 then
begin
Decoded.Read(B, 2);
Stream[Quads+1] := _Code64[(B[0] div 4)+1];
Stream[Quads+2] := _Code64[(B[0] mod 4)*16 + (B[1] div 16)+1];
Stream[Quads+3] := _Code64[(B[1] mod 16)*4 + 1];
Stream[Quads+4] := '=';
Inc(Quads, 4);
end;