Przeglądaj źródła

Fileimport: forgot to hook up add/delete mapping buttons

Reinier Olislagers 10 lat temu
rodzic
commit
50db8d3923
4 zmienionych plików z 48 dodań i 10 usunięć
  1. 16 0
      fileimport.pas
  2. 7 2
      importtable.lfm
  3. 24 7
      importtable.pas
  4. 1 1
      main.lfm

+ 16 - 0
fileimport.pas

@@ -97,6 +97,9 @@ type
     // if -1 specified: delete entire mapping array
     // Returns true if one or more mappings were deleted
     function DeleteMapping(Item: integer): boolean;
+    // Delete mapping for specified destination field
+    // Returns true if one or more mappings were deleted
+    function DeleteMapping(DestinationField: string): boolean;
     // After calling readrow, getdata returns data in the field mapped to
     // DestinationField or empty if nothing found
     function GetData(DestinationField: string): string;
@@ -222,6 +225,19 @@ begin
     FRowData.Delete(Item);
     // Release last array item
     SetLength(FMapping,High(FMapping));
+    result:=true;
+  end;
+end;
+
+function TFileImport.DeleteMapping(DestinationField: string): boolean;
+var
+  Index: integer;
+begin
+  result:=false;
+  Index:=GetMappingIndex(DestinationField);
+  if Index>-1 then
+  begin
+    result:=DeleteMapping(Index);
   end;
 end;
 

+ 7 - 2
importtable.lfm

@@ -276,6 +276,7 @@ object fmImportTable: TfmImportTable
       Top = 12
       Width = 75
       Caption = 'Add'
+      OnClick = btnAddMappingClick
       ParentShowHint = False
       ShowHint = True
       TabOrder = 2
@@ -286,11 +287,14 @@ object fmImportTable: TfmImportTable
       Top = 48
       Width = 490
       AutoFillColumns = True
-      ColCount = 0
+      ColCount = 2
       FixedCols = 0
       FixedRows = 0
-      RowCount = 0
       TabOrder = 3
+      ColWidths = (
+        243
+        243
+      )
     end
     object btnDeleteMapping: TButton
       Left = 512
@@ -299,6 +303,7 @@ object fmImportTable: TfmImportTable
       Top = 88
       Width = 75
       Caption = 'Delete'
+      OnClick = btnDeleteMappingClick
       ParentShowHint = False
       ShowHint = True
       TabOrder = 4

+ 24 - 7
importtable.pas

@@ -35,6 +35,8 @@ type
     SourcePanel: TPanel;
     procedure bbImportClick(Sender: TObject);
     procedure bbCloseClick(Sender: TObject);
+    procedure btnAddMappingClick(Sender: TObject);
+    procedure btnDeleteMappingClick(Sender: TObject);
     procedure btnPrepareClick(Sender: TObject);
     procedure btnSourceFileOpenClick(Sender: TObject);
     procedure chkTabDelimiterEditingDone(Sender: TObject);
@@ -188,17 +190,19 @@ begin
     end;
   end;
 
-  MappingGrid.Clear; //remove any existing mapping GUI
-  MappingCount := FImporter.MappingCount;
-  // Required to avoid index out of bounds error in InsertRowWithValues
-  while MappingGrid.Columns.Count<2 do
-    MappingGrid.Columns.Add;
-
-  for i := 0 to MappingCount-1 do
+  MappingCount:=FImporter.MappingCount;
+  MappingGrid.RowCount:=MappingCount;
+  for i:=0 to MappingCount-1 do
   begin
+    MappingGrid.Cells[0,i]:=FImporter.Mapping[i].SourceField;
+    MappingGrid.Cells[1,i]:=FImporter.Mapping[i].DestinationField;
+    {
+    // Grid InsertRowWithValues ssems to fail if there are no columns or rows
+    // even if there are it doesn't always work
     MappingGrid.InsertRowWithValues(0,
       [FImporter.Mapping[i].SourceField,
       FImporter.Mapping[i].DestinationField]);
+    }
   end;
 end;
 
@@ -207,6 +211,19 @@ begin
   Close;
 end;
 
+procedure TfmImportTable.btnAddMappingClick(Sender: TObject);
+begin
+  if FImporter.AddMapping(cbSourceField.Text, cbDestField.Text) then
+    UpdateMappingGrid;
+end;
+
+procedure TfmImportTable.btnDeleteMappingClick(Sender: TObject);
+begin
+  // Delete mapping for selected destination field
+  if FImporter.DeleteMapping(MappingGrid.Cells[1,MappingGrid.Row]) then
+    UpdateMappingGrid;
+end;
+
 procedure TfmImportTable.btnPrepareClick(Sender: TObject);
 begin
   // Only try if valid import file specified

+ 1 - 1
main.lfm

@@ -2440,7 +2440,7 @@ object fmMain: TfmMain
     end
     object lmImportTable: TMenuItem
       Tag = 1
-      Caption = 'Import Table'
+      Caption = 'Import to Table'
       OnClick = lmImportTableClick
     end
     object lmViewGen: TMenuItem