From f12d13a062cf17b4f8e8e9a6944b83c617c28104 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Mon, 25 Jul 2016 11:23:25 +0000 Subject: [PATCH] tvplanit: Add button "Add all" to FlexDatastore field mapper. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5029 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/tvplanit/source/vpflxdsed1.lfm | 14 ++- components/tvplanit/source/vpflxdsed1.pas | 121 ++++++++++++---------- 2 files changed, 78 insertions(+), 57 deletions(-) diff --git a/components/tvplanit/source/vpflxdsed1.lfm b/components/tvplanit/source/vpflxdsed1.lfm index 9139571f8..d4f6cfed7 100644 --- a/components/tvplanit/source/vpflxdsed1.lfm +++ b/components/tvplanit/source/vpflxdsed1.lfm @@ -144,8 +144,8 @@ object frmFieldMapper: TfrmFieldMapper end object btnAddMapping: TBitBtn Left = 166 - Height = 49 - Top = 136 + Height = 48 + Top = 128 Width = 69 Caption = 'Add' Enabled = False @@ -162,6 +162,16 @@ object frmFieldMapper: TfrmFieldMapper OnClick = btnClearMappingsClick TabOrder = 6 end + object btnAddAll: TButton + Left = 166 + Height = 48 + Top = 184 + Width = 69 + Caption = 'Add all' + Enabled = False + OnClick = btnAddAllClick + TabOrder = 7 + end end end end diff --git a/components/tvplanit/source/vpflxdsed1.pas b/components/tvplanit/source/vpflxdsed1.pas index 064598857..8e679892b 100644 --- a/components/tvplanit/source/vpflxdsed1.pas +++ b/components/tvplanit/source/vpflxdsed1.pas @@ -53,6 +53,7 @@ type TfrmFieldMapper = class(TForm) BtnCancel: TButton; + btnAddAll: TButton; Panel1: TPanel; BtnOK: TButton; PageControl1: TPageControl; @@ -69,24 +70,26 @@ type DatasetCombo: TComboBox; btnAddMapping: TBitBtn; btnClearMappings: TButton; - procedure FormShow(Sender: TObject); - procedure DatasetComboChange(Sender: TObject); - procedure DBFieldSelected(Sender: TObject); - procedure DatasetFieldLBKeyPress(Sender: TObject; var Key: Char); - procedure VpFieldSelected(Sender: TObject); - procedure VPFieldLBKeyPress(Sender: TObject; var Key: Char); + procedure btnAddAllClick(Sender: TObject); procedure btnAddMappingClick(Sender: TObject); - procedure Button5Click(Sender: TObject); - procedure btnDeleteMappingClick(Sender: TObject); procedure btnClearMappingsClick(Sender: TObject); + procedure btnDeleteMappingClick(Sender: TObject); + procedure Button5Click(Sender: TObject); + procedure DatasetComboChange(Sender: TObject); + procedure DatasetFieldLBKeyPress(Sender: TObject; var Key: Char); + procedure DBFieldSelected(Sender: TObject); procedure FieldMappingsLBClick(Sender: TObject); procedure FieldMappingsLBKeyPress(Sender: TObject; var Key: Char); procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure FormShow(Sender: TObject); + procedure VPFieldLBKeyPress(Sender: TObject; var Key: Char); + procedure VpFieldSelected(Sender: TObject); private DSResActive: Boolean; DSEventActive: Boolean; DSContactActive: Boolean; DSTaskActive: Boolean; + function GetSelectedFieldMappings: TCollection; procedure SyncObjects; procedure OpenDatasets; procedure PositionControls; @@ -365,6 +368,7 @@ end; procedure TfrmFieldMapper.DatasetComboChange(Sender: TObject); begin + btnAddAll.Enabled := DatasetCombo.ItemIndex > -1; SyncObjects; end; {=====} @@ -523,6 +527,7 @@ begin btnDeleteMapping.Enabled := false; btnClearMappings.Enabled := FieldMappingsLB.Items.Count > 0; btnAddMapping.Enabled := false; + btnAddAll.Enabled := false; VpFieldLB.ItemIndex := -1; DatasetFieldLB.ItemIndex := -1; @@ -557,32 +562,41 @@ begin end; {=====} +procedure TfrmFieldMapper.btnAddAllClick(Sender: TObject); +var + i, j: Integer; + MC: TCollection; + FM: TVpFieldMapping; +begin + MC := GetSelectedFieldMappings; + if MC = nil then + exit; + + for i:= 0 to DatasetFieldLB.Items.Count-1 do begin + for j:=0 to VPFieldLB.Items.Count-1 do + if VPFieldLB.Items[j] = DatasetFieldLB.Items[i] then begin + FM := TVpFieldMapping(MC.Add); + FM.DBField := DatasetFieldLB.Items[i]; + FM.VPField := VPFieldLB.Items[j]; + break; + end; + end; + SyncObjects; +end; + procedure TfrmFieldMapper.btnAddMappingClick(Sender: TObject); var FM: TVpFieldMapping; MC: TCollection; begin - MC := nil; - if DataSetCombo.Text = ResourceTableName then - MC := FlexDS.ResourceMappings + MC := GetSelectedFieldMappings; + if MC = nil then + exit; - else if DataSetCombo.Text = EventsTableName then - MC := FlexDS.EventMappings - - else if DataSetCombo.Text = ContactsTableName then - MC := FlexDS.ContactMappings - - else if DataSetCombo.Text = TasksTableName then - MC := FlexDS.TaskMappings; - - if MC <> nil then begin - FM := TVpFieldMapping(MC.Add); - - FM.DBField := DatasetFieldLB.Items[DatasetFieldLB.ItemIndex]; - FM.VPField := VPFieldLB.Items[VPFieldLB.ItemIndex]; - - SyncObjects; - end; + FM := TVpFieldMapping(MC.Add); + FM.DBField := DatasetFieldLB.Items[DatasetFieldLB.ItemIndex]; + FM.VPField := VPFieldLB.Items[VPFieldLB.ItemIndex]; + SyncObjects; end; {=====} @@ -593,24 +607,18 @@ end; {=====} procedure TfrmFieldMapper.btnDeleteMappingClick(Sender: TObject); +var + MC: TCollection; begin if FieldMappingsLB.ItemIndex > -1 then begin - - if DataSetCombo.Text = ResourceTableName then - FlexDS.ResourceMappings.Items[FieldMappingsLB.ItemIndex].Free - - else if DataSetCombo.Text = EventsTableName then - FlexDS.EventMappings.Items[FieldMappingsLB.ItemIndex].Free - - else if DataSetCombo.Text = ContactsTableName then - FlexDS.ContactMappings.Items[FieldMappingsLB.ItemIndex].Free - - else if DataSetCombo.Text = TasksTableName then - FlexDS.TaskMappings.Items[FieldMappingsLB.ItemIndex].Free; - - SyncObjects; + MC := GetSelectedFieldMappings; + if MC <> nil then begin + MC.Items[FieldMappingsLB.ItemIndex].Free; + SyncObjects; + end; end; end; + {=====} procedure TfrmFieldMapper.btnClearMappingsClick(Sender: TObject); @@ -619,24 +627,13 @@ var begin MC := nil; if FieldMappingsLB.Items.Count > 0 then begin - - if DataSetCombo.Text = ResourceTableName then - MC := FlexDS.ResourceMappings - - else if DataSetCombo.Text = EventsTableName then - MC := FlexDS.EventMappings - - else if DataSetCombo.Text = ContactsTableName then - MC := FlexDS.ContactMappings - - else if DataSetCombo.Text = TasksTableName then - MC := FlexDS.TaskMappings; - + MC := GetSelectedFieldMappings; if MC <> nil then begin while (MC.Count > 0) do MC.Items[0].Free; SyncObjects; end; + btnAddAll.Enabled := DatasetCombo.ItemIndex > -1; end; end; {=====} @@ -671,6 +668,20 @@ begin end; {=====} +function TfrmFieldMapper.GetSelectedFieldMappings: TCollection; +begin + if DataSetCombo.Text = ResourceTableName then + Result := FlexDS.ResourceMappings + else if DataSetCombo.Text = EventsTableName then + Result := FlexDS.EventMappings + else if DataSetCombo.Text = ContactsTableName then + Result := FlexDS.ContactMappings + else if DataSetCombo.Text = TasksTableName then + Result := FlexDS.TaskMappings + else + Result := nil; +end; + end.