Browse Source

1. 附件,释放数据管理内存出错(未查明原因,仅在出错出,做容错处理)
2. 云版,新建项目时,设置是否是游客错误,原因在于,根据项目管理处的定位来做判断,新建项目时,定位不是新建的项目,改为根据项目内数据,计算得到。

MaiXinRong 5 years ago
parent
commit
adb300a3eb
3 changed files with 33 additions and 9 deletions
  1. 1 1
      Forms/MainFrm.pas
  2. 4 1
      Forms/UpFileManageFrame.pas
  3. 28 7
      Units/ProjectData.pas

+ 1 - 1
Forms/MainFrm.pas

@@ -460,7 +460,7 @@ function TMainForm.CreateProjectView(ARec: TsdDataRecord): TProjectFrame;
   var
     ProjectFrame: TProjectFrame;
   begin
-    AProjectData.IsGuest := FProjectManagerFrame.IsGuest;
+    //AProjectData.IsGuest := FProjectManagerFrame.IsGuest;
     ProjectFrame := TProjectFrame.Create(AProjectData);
     FProjectFrames.Add(ProjectFrame);
     ProjectFrame.Parent := APage;

+ 4 - 1
Forms/UpFileManageFrame.pas

@@ -152,7 +152,10 @@ procedure TUpFileManageView.ClearViews;
 var i: Integer;
 begin
   for i := sbFile.ControlCount - 1 downto 0 do
-    TUpFileView(sbFile.Controls[i]).Free;
+  begin
+    if Assigned(sbFile.Controls[i]) then
+      TUpFileView(sbFile.Controls[i]).Free;
+  end;
 end;
 
 procedure TUpFileManageView.RefreshViews;

+ 28 - 7
Units/ProjectData.pas

@@ -112,7 +112,7 @@ type
     function GetCanInsertNormalBills: Boolean;
     function GetValidStageIsRefer: Boolean;
     function GetStartMeasure: Boolean;
-    procedure SetIsGuest(const Value: Boolean);
+    function GetIsGuest: Boolean;
   public
     constructor Create;
     destructor Destroy; override;
@@ -277,7 +277,7 @@ type
 
     property ProjectReadOnly: Boolean read FProjectReadOnly;
     property Checkers: TCheckers read FCheckers write SetCheckers;
-    property IsGuest: Boolean read FIsGuest write SetIsGuest;
+    property IsGuest: Boolean read GetIsGuest;
   end;
 
 implementation
@@ -2232,11 +2232,6 @@ begin
     MeasureLog.AppendLogTo(Format('%s: %s', [FProjectName, ALog]));
 end;
 
-procedure TProjectData.SetIsGuest(const Value: Boolean);
-begin
-  FIsGuest := Value;
-end;
-
 procedure TProjectData.LoadCheckersData;
 var
   sURL: string;
@@ -2392,4 +2387,30 @@ begin
   end;
 end;
 
+function TProjectData.GetIsGuest: Boolean;
+
+  function UserIsAuthor(AUserID: Integer): Boolean;
+  begin
+    Result := FWebAuthorID = AUserID;
+  end;
+
+  function UserIsChecker(AUserID: Integer): Boolean;
+  var
+    i: Integer;
+  begin
+    Result := False;
+    for i := 0 to FCheckers.Count - 1 do
+    begin
+      if FCheckers[i].ID = AUserID then
+      begin
+         Result := True;
+         Break;
+      end;
+    end;
+  end;
+
+begin
+  Result := not (UserIsAuthor(PHPWeb.UserID) or UserIsChecker(PHPWeb.UserID));
+end;
+
 end.