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
This commit is contained in:
wp_xxyyzz
2016-07-25 11:23:25 +00:00
parent 6a1d71c140
commit f12d13a062
2 changed files with 78 additions and 57 deletions

View File

@ -144,8 +144,8 @@ object frmFieldMapper: TfrmFieldMapper
end end
object btnAddMapping: TBitBtn object btnAddMapping: TBitBtn
Left = 166 Left = 166
Height = 49 Height = 48
Top = 136 Top = 128
Width = 69 Width = 69
Caption = 'Add' Caption = 'Add'
Enabled = False Enabled = False
@ -162,6 +162,16 @@ object frmFieldMapper: TfrmFieldMapper
OnClick = btnClearMappingsClick OnClick = btnClearMappingsClick
TabOrder = 6 TabOrder = 6
end 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 end
end end

View File

@ -53,6 +53,7 @@ type
TfrmFieldMapper = class(TForm) TfrmFieldMapper = class(TForm)
BtnCancel: TButton; BtnCancel: TButton;
btnAddAll: TButton;
Panel1: TPanel; Panel1: TPanel;
BtnOK: TButton; BtnOK: TButton;
PageControl1: TPageControl; PageControl1: TPageControl;
@ -69,24 +70,26 @@ type
DatasetCombo: TComboBox; DatasetCombo: TComboBox;
btnAddMapping: TBitBtn; btnAddMapping: TBitBtn;
btnClearMappings: TButton; btnClearMappings: TButton;
procedure FormShow(Sender: TObject); procedure btnAddAllClick(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 btnAddMappingClick(Sender: TObject); procedure btnAddMappingClick(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure btnDeleteMappingClick(Sender: TObject);
procedure btnClearMappingsClick(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 FieldMappingsLBClick(Sender: TObject);
procedure FieldMappingsLBKeyPress(Sender: TObject; var Key: Char); procedure FieldMappingsLBKeyPress(Sender: TObject; var Key: Char);
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure VPFieldLBKeyPress(Sender: TObject; var Key: Char);
procedure VpFieldSelected(Sender: TObject);
private private
DSResActive: Boolean; DSResActive: Boolean;
DSEventActive: Boolean; DSEventActive: Boolean;
DSContactActive: Boolean; DSContactActive: Boolean;
DSTaskActive: Boolean; DSTaskActive: Boolean;
function GetSelectedFieldMappings: TCollection;
procedure SyncObjects; procedure SyncObjects;
procedure OpenDatasets; procedure OpenDatasets;
procedure PositionControls; procedure PositionControls;
@ -365,6 +368,7 @@ end;
procedure TfrmFieldMapper.DatasetComboChange(Sender: TObject); procedure TfrmFieldMapper.DatasetComboChange(Sender: TObject);
begin begin
btnAddAll.Enabled := DatasetCombo.ItemIndex > -1;
SyncObjects; SyncObjects;
end; end;
{=====} {=====}
@ -523,6 +527,7 @@ begin
btnDeleteMapping.Enabled := false; btnDeleteMapping.Enabled := false;
btnClearMappings.Enabled := FieldMappingsLB.Items.Count > 0; btnClearMappings.Enabled := FieldMappingsLB.Items.Count > 0;
btnAddMapping.Enabled := false; btnAddMapping.Enabled := false;
btnAddAll.Enabled := false;
VpFieldLB.ItemIndex := -1; VpFieldLB.ItemIndex := -1;
DatasetFieldLB.ItemIndex := -1; DatasetFieldLB.ItemIndex := -1;
@ -557,32 +562,41 @@ begin
end; 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); procedure TfrmFieldMapper.btnAddMappingClick(Sender: TObject);
var var
FM: TVpFieldMapping; FM: TVpFieldMapping;
MC: TCollection; MC: TCollection;
begin begin
MC := nil; MC := GetSelectedFieldMappings;
if DataSetCombo.Text = ResourceTableName then if MC = nil then
MC := FlexDS.ResourceMappings exit;
else if DataSetCombo.Text = EventsTableName then FM := TVpFieldMapping(MC.Add);
MC := FlexDS.EventMappings FM.DBField := DatasetFieldLB.Items[DatasetFieldLB.ItemIndex];
FM.VPField := VPFieldLB.Items[VPFieldLB.ItemIndex];
else if DataSetCombo.Text = ContactsTableName then SyncObjects;
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;
end; end;
{=====} {=====}
@ -593,24 +607,18 @@ end;
{=====} {=====}
procedure TfrmFieldMapper.btnDeleteMappingClick(Sender: TObject); procedure TfrmFieldMapper.btnDeleteMappingClick(Sender: TObject);
var
MC: TCollection;
begin begin
if FieldMappingsLB.ItemIndex > -1 then begin if FieldMappingsLB.ItemIndex > -1 then begin
MC := GetSelectedFieldMappings;
if DataSetCombo.Text = ResourceTableName then if MC <> nil then begin
FlexDS.ResourceMappings.Items[FieldMappingsLB.ItemIndex].Free MC.Items[FieldMappingsLB.ItemIndex].Free;
SyncObjects;
else if DataSetCombo.Text = EventsTableName then end;
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;
end; end;
end; end;
{=====} {=====}
procedure TfrmFieldMapper.btnClearMappingsClick(Sender: TObject); procedure TfrmFieldMapper.btnClearMappingsClick(Sender: TObject);
@ -619,24 +627,13 @@ var
begin begin
MC := nil; MC := nil;
if FieldMappingsLB.Items.Count > 0 then begin if FieldMappingsLB.Items.Count > 0 then begin
MC := GetSelectedFieldMappings;
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;
if MC <> nil then begin if MC <> nil then begin
while (MC.Count > 0) do while (MC.Count > 0) do
MC.Items[0].Free; MC.Items[0].Free;
SyncObjects; SyncObjects;
end; end;
btnAddAll.Enabled := DatasetCombo.ItemIndex > -1;
end; end;
end; end;
{=====} {=====}
@ -671,6 +668,20 @@ begin
end; 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. end.