Переглянути джерело

项目管理,无任何项目时,导入项目文件报错

MaiXinRong 9 роки тому
батько
коміт
c115dc1e1a
2 змінених файлів з 26 додано та 10 видалено
  1. 22 9
      Frames/ProjectManagerFme.pas
  2. 4 1
      Units/ProjectCommands.pas

+ 22 - 9
Frames/ProjectManagerFme.pas

@@ -643,16 +643,20 @@ procedure TProjectManagerFrame.zgProjectsDrawCellText(ACanvas: TCanvas;
   const ARect: TRect; const ACoord: TPoint; AGrid: TZJGrid;
   const Text: String; var ADefaultDraw: Boolean);
 
-  procedure GetBitmap(AImage: TBitmap);
+  procedure GetBitmap(AImage: TBitmap; ANode: TsdIDTreeNode);
   begin
-    with stdProjects.IDTree.Items[ACoord.Y - 1] do
-      if Rec.ValueByName('Type').AsInteger = 0 then
-        if Expanded and HasChildren then
+    if Assigned(ANode) and Assigned(ANode.Rec) then
+    begin
+      if ANode.Rec.ValueByName('Type').AsInteger = 0 then
+        if ANode.Expanded and ANode.HasChildren then
           MainForm.Images.GetBitmap(34, AImage)
         else
           MainForm.Images.GetBitmap(34, AImage)
       else
         MainForm.Images.GetBitmap(11, AImage);
+    end
+    else
+      AImage := nil;
   end;
 
 const
@@ -662,13 +666,15 @@ var
   Img: TBitmap;
   Cell: TZjCell;
   rImg: TRect;
+  vNode: TsdIDTreeNode;
 begin
   if (ACoord.X = 1) and (ACoord.Y > zgProjects.FixedRowCount - 1) then
   begin
     Cell := zgProjects.Cells[ACoord.X, ACoord.Y];
     Img := TBitmap.Create;
     try
-      GetBitmap(Img);
+      vNode := stdProjects.IDTree.Items[ACoord.Y-zgProjects.FixedRowCount];
+      GetBitmap(Img, vNode);
       case Cell.Align of
         gaTopLeft, gaTopCenter, gaTopRight:
           rImg := Rect(ARect.Left + 2, ARect.Top, ARect.Left + rIconWidth, ARect.Top + rIconHeight);
@@ -870,14 +876,21 @@ procedure TProjectManagerFrame.actnImportExecute(Sender: TObject);
 
 var
   sFileName, sProjectName: string;
+  vCur: TsdIDTreeNode;
 begin
   if SelectFile(sFileName, '.mtf;*.mpf') then
   begin
-    if SameText(ExtractFileExt(sFileName), '.mtf')
-      and (stdProjects.IDTree.Selected.Rec.ValueByName('Type').AsInteger = 0) then
-      sProjectName := GetImportProjectName(sFileName, stdProjects.IDTree.Selected)
+    vCur := stdProjects.IDTree.Selected;
+    if Assigned(vCur) then
+    begin
+      if SameText(ExtractFileExt(sFileName), '.mtf')
+        and (vCur.Rec.ValueByName('Type').AsInteger = 0) then
+        sProjectName := GetImportProjectName(sFileName, stdProjects.IDTree.Selected)
+      else
+        sProjectName := GetImportProjectName(sFileName, stdProjects.IDTree.Selected.Parent);
+    end
     else
-      sProjectName := GetImportProjectName(sFileName, stdProjects.IDTree.Selected.Parent);
+      sProjectName := GetImportProjectName(sFileName, vCur);
 
     Screen.Cursor := crHourGlass;
     try

+ 4 - 1
Units/ProjectCommands.pas

@@ -818,7 +818,10 @@ begin
     FNew := AddNewNode(FSelect.ParentID, FSelect.NextSiblingID, FProjectName)
   else
     FNew := AddNewNode(FSelect.ID, -1, FProjectName);}
-  FNew := AddNewNode(FSelect.ParentID, FSelect.NextSiblingID, FProjectName);
+  if Assigned(FSelect) then
+    FNew := AddNewNode(FSelect.ParentID, FSelect.NextSiblingID, FProjectName)
+  else
+    FNew := AddNewNode(-1, -1, FProjectName);
   LoadChildrenFormXml;
 end;