正想做一个通用一点的权限管理模块,除了现在系统要用外,以后做的系统可能也要用到,不知大家有什么好的方案交流一下。
解决方案 »
- 讨论,delphi还有没有前途了,delphi的方向在哪里
- 请教大侠:TTreeview中节点data的释放问题
- 菜鸟请教:10台client机同时与一server机进行socket通讯,该server的端口binding一个可以吗?还是要bindding10个?
- 如何实现Ctrl+Z
- Delphi提供的Web开发方法到底哪一种更实用?
- 请高手帮忙决策!
- 怎么样在Toolbar上做元件?
- 寻找Delphi高手
- incompatible types…………
- 请教关于F1book控件方面的问题
- 如何将ADODataSet数据集,支持SaveToStream和LoadFromStream?
- fastreport?
基类窗体
protected
iModuleID: Integer;
sFunctionName: String;
function IsTEdit():Boolean; virtual;
public
Constructor CreateWithFunction(AOwner: TComponent; ModuleID:Integer; FunctionName:String);
{ Public declarations }
end;var
frmBase: TfrmBase;implementationuses Main, Global;
{$R *.dfm}Constructor TfrmBase.CreateWithFunction(AOwner: TComponent; ModuleID:Integer; FunctionName:String);
begin
iModuleID:=ModuleID;
sFunctionName:=FunctionName;
Inherited Create(AOwner);
end;function TfrmBase.IsTEdit: Boolean; //ÊÇ·ñÊDZ༭¿ò
begin
if (ActiveControl is TCustomEdit) or
(ActiveControl is TCustomComboBox) or
(ActiveControl is TDxInplaceEdit) or
(ActiveControl is TDateTimePicker)
then Result:=True
else
Result:=False;
end;
procedure TfrmBase.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=cafree;
end;示例窗体
protected
//iFunctionID :Integer;
sSql:String;
bCanNew,bCanModify,bCanDelete,bCanPrint :Boolean;
Function IsUnique(ParamName,ParamValue: String): Boolean; {¼ì²â±àºÅÊÇ·ñÖظ´}
function CheckSave :Boolean; {¼ì²âµ±Ç°Êý¾ÝÊÇ·ñ±£´æº¯Êý}
function GetErrorInfo(E: EDatabaseError) :String; {È¡´íÎóÃèÊöÐÅÏ¢ºÍ´íÎóÔ­Âë}
Procedure GetPermiss ; virtual; {µÃµ½µ±Ç°Óû§µÄȨÏÞ}
public
{ Public declarations }
end;var
frmInfoBase: TfrmInfoBase;
implementationUses DM, Global, Main;
var
StateFlag:String; //±êÖ¾ÊÇÌí¼Ó»òÐ޸ıêÖ¾
{$R *.dfm}{¼ì²â±àºÅÊÇ·ñÖظ´}
Function TfrmInfoBase.IsUnique(ParamName,ParamValue: String): Boolean; {¼ì²â´úÂëÊÇ·ñÖظ´}
begin
Result:=True;
//if QBaseInfo.State = dsInsert then
With QIsUnique do
begin
parameters.ParamValues[ParamName]:=ParamValue;
if Active then Requery else Open;
if RecordCount > 0 then Result:=False;
end
end;{¼ì²âµ±Ç°Êý¾ÝÊÇ·ñ±£´æº¯Êý}
Function TfrmInfoBase.CheckSave :Boolean;
begin
Result:=true;
if QBaseInfo.State in [dsInsert,dsEdit] then //Åжϵ±Ç°×´Ì¬
Case Messagedlg('ÊÇ·ñ±£´æµ±Ç°µÄÐ޸ģ¿',mtWarning,[mbYes,mbNo,mbCancel],0) of
mrYes:
begin
QBaseInfo.Post ;
Result := QBaseInfo.State = dsBrowse; //״̬ÊÇ·ñΪBrowse
end;
mrNo:
begin
QBaseInfo.Cancel ;
Result := QBaseInfo.State = dsBrowse; //״̬ÊÇ·ñΪBrowse
end;
mrCancel:
Result := False ;
End
end;{È¡´íÎóÃèÊöÐÅÏ¢ºÍ´íÎóÔ­Âë}
function TfrmInfoBase.GetErrorInfo(E: EDatabaseError) :String;
var
AdoErrors :Errors; //adoµÄ´íÎóÐÅÏ¢¶ÔÏó
sError :String;
// i :Integer;
begin
inherited;
{È¡µÃ´íÎóÐÅÏ¢}
AdoErrors:=DModule.ADOCnMain.Errors ;
//for i:=0 to AdoErrors.Count-1 do
if AdoErrors.Count >0 then //¿ÉÄÜÓжà¸ö´íÎóÐÅÏ¢£¬ÕâÀïֻȡµÚÒ»¸ö
sError:= sError+#10#13+AdoErrors.Item[0].Description+' (´íÎóÂë:'+InttoStr(AdoErrors.Item[0].NativeError)+')'
Else if (E is EDatabaseError) then
sError:=E.Message ;Result:=sError;
end;{µÃµ½Óû§¶Ôµ±Ç°´°ÌåµÄ²Ù×÷ȨÏÞ}
procedure TfrmInfoBase.GetPermiss;
begin
{³õʼ»¯±äÁ¿}
bCanNew :=G_bAdmin;
bCanModify :=G_bAdmin;
bCanDelete :=G_bAdmin;
bCanPrint :=G_bAdmin;if G_bAdmin then //
begin
bCanNew :=G_bAdmin;
bCanModify :=G_bAdmin;
bCanDelete :=G_bAdmin;
bCanPrint :=G_bAdmin;
end
else //
with DModule.spUserRight do
if Locate('fModuleID;fActionName',varArrayOf([iModuleID,sFunctionName]),[]) then
begin
bCanNew := FieldByName('fInsert').AsBoolean;
bCanModify := FieldByName('fEdit').AsBoolean;
bCanDelete := FieldByName('fDelete').AsBoolean;
bCanPrint := FieldByName('fPrint').AsBoolean;
end
end;