Index: oup/current/FileClasses/TXAN.pas
===================================================================
--- oup/current/FileClasses/TXAN.pas	(revision 212)
+++ oup/current/FileClasses/TXAN.pas	(revision 213)
@@ -25,4 +25,5 @@
   templist: TStringList;
 begin
+  inherited;
   FDataFields := TBlock.Create(Self, nil, 0, 'Base', '', nil);
   templist := TStringList.Create;
Index: oup/current/FileClasses/TXMP.pas
===================================================================
--- oup/current/FileClasses/TXMP.pas	(revision 212)
+++ oup/current/FileClasses/TXMP.pas	(revision 213)
@@ -27,4 +27,5 @@
   templist: TStringList;
 begin
+  inherited;
   FDataFields := TBlock.Create(Self, nil, 0, 'Base', '', nil);
   templist := TStringList.Create;
Index: oup/current/FileClasses/_DataTypes.pas
===================================================================
--- oup/current/FileClasses/_DataTypes.pas	(revision 212)
+++ oup/current/FileClasses/_DataTypes.pas	(revision 213)
@@ -319,5 +319,5 @@
     if i < Length(FDataFields) then
     begin
-      ShowMessage('Field exists');
+      ShowMessage('Field already exists');
       Exit;
     end;
Index: oup/current/FileClasses/_FileTypes.pas
===================================================================
--- oup/current/FileClasses/_FileTypes.pas	(revision 212)
+++ oup/current/FileClasses/_FileTypes.pas	(revision 213)
@@ -25,5 +25,4 @@
 
       procedure InitDatLinks; virtual; abstract;
-      procedure InitDataFields; virtual; abstract;
       procedure InitRawList; virtual; abstract;
 
@@ -39,4 +38,6 @@
       procedure Free;
 
+      procedure InitDataFields; virtual;
+
       property FileStream: TMemoryStream read FFileStream;
       property FileID: Integer read FFileID;
@@ -97,6 +98,6 @@
 
   InitDatLinks();
-  InitDataFields();
   InitRawList();
+  FDataFields := nil;
 
   if not (Self is TFile_Empty) then
@@ -222,4 +223,10 @@
 
 
+procedure TFile.InitDataFields;
+begin
+  if Assigned(FDataFields) then
+    Exit;
+end;
+
 function GetDatLinkValue(stream: TStream; offset: Integer): Integer;
 begin
Index: oup/current/FileClasses/_MetaManager.pas
===================================================================
--- oup/current/FileClasses/_MetaManager.pas	(revision 212)
+++ oup/current/FileClasses/_MetaManager.pas	(revision 213)
@@ -29,4 +29,5 @@
       constructor Create(ConnectionID: Integer);
       procedure InitFile(id: Integer);
+      procedure InitFileFields(id: Integer);
 
       property FileCount: Integer read GetFileCount;
@@ -59,5 +60,4 @@
 procedure TMetaManager.InitFile(id: Integer);
 var
-//  i: Integer;
   typei: Integer;
   finfo: TFileInfo;
@@ -83,4 +83,17 @@
         FFiles[id] := TFile_Empty.Create(FConnectionID, id);
       Exit;
+    end;
+  end;
+end;
+
+procedure TMetaManager.InitFileFields(id: Integer);
+begin
+  if id < ConManager.Connection[FConnectionID].GetFileCount then
+  begin
+    if not Assigned(FFiles[id]) then
+    begin
+      InitFile(id);
+      if not (FFiles[id] is TFile_Empty) then
+        FFiles[id].InitDataFields;
     end;
   end;
Index: oup/current/Tools/MetaEditor.pas
===================================================================
--- oup/current/Tools/MetaEditor.pas	(revision 212)
+++ oup/current/Tools/MetaEditor.pas	(revision 213)
@@ -205,6 +205,10 @@
         begin
           if Data.Field is TFile then
+          begin
             if Length(TFile(Data.Field).FileName) = 0 then
-              TargetCanvas.Font.Color := $000060;
+              TargetCanvas.Font.Color := $C06060;
+            if TFile(Data.Field).FileSize = 0 then
+              TargetCanvas.Font.Color := $2020A0;
+          end;
         end;
     end;
