2008-02-03 12:05:55 +00:00
|
|
|
{*********************************************************}
|
|
|
|
{* VPFLXDSED1.PAS 1.03 *}
|
|
|
|
{*********************************************************}
|
|
|
|
|
|
|
|
{* ***** BEGIN LICENSE BLOCK ***** *}
|
|
|
|
{* Version: MPL 1.1 *}
|
|
|
|
{* *}
|
|
|
|
{* The contents of this file are subject to the Mozilla Public License *}
|
|
|
|
{* Version 1.1 (the "License"); you may not use this file except in *}
|
|
|
|
{* compliance with the License. You may obtain a copy of the License at *}
|
|
|
|
{* http://www.mozilla.org/MPL/ *}
|
|
|
|
{* *}
|
|
|
|
{* Software distributed under the License is distributed on an "AS IS" basis, *}
|
|
|
|
{* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License *}
|
|
|
|
{* for the specific language governing rights and limitations under the *}
|
|
|
|
{* License. *}
|
|
|
|
{* *}
|
|
|
|
{* The Original Code is TurboPower Visual PlanIt *}
|
|
|
|
{* *}
|
|
|
|
{* The Initial Developer of the Original Code is TurboPower Software *}
|
|
|
|
{* *}
|
|
|
|
{* Portions created by TurboPower Software Inc. are Copyright (C) 2002 *}
|
|
|
|
{* TurboPower Software Inc. All Rights Reserved. *}
|
|
|
|
{* *}
|
|
|
|
{* Contributor(s): *}
|
|
|
|
{* *}
|
|
|
|
{* ***** END LICENSE BLOCK ***** *}
|
|
|
|
|
|
|
|
{.$DEFINE RUNTIMETEST}
|
2016-06-22 07:59:17 +00:00
|
|
|
{$I vp.inc}
|
2008-02-03 12:05:55 +00:00
|
|
|
|
|
|
|
unit VpFlxDsEd1;
|
|
|
|
{ Flexible DataStore ComponentEditor }
|
|
|
|
{ Introduced in version 1.01 }
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
uses
|
2016-06-10 21:37:32 +00:00
|
|
|
SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
2016-11-21 17:12:05 +00:00
|
|
|
(*
|
2016-06-07 15:09:01 +00:00
|
|
|
{$IFNDEF RUNTIMETEST}
|
|
|
|
{$IFDEF LCL}
|
|
|
|
propedits, componenteditors, FormEditingIntf, lclintf, IDEIntf,
|
|
|
|
{$ELSE}
|
2016-06-10 21:37:32 +00:00
|
|
|
Windows, Messages,
|
2016-06-07 15:09:01 +00:00
|
|
|
{$IFDEF VERSION6} DesignIntf, DesignEditors, {$ELSE} DsgnIntf, {$ENDIF}, DBTables,
|
|
|
|
{$ENDIF}
|
|
|
|
{$ENDIF} {RUNTIMETEST}
|
2016-11-21 17:12:05 +00:00
|
|
|
*)
|
|
|
|
ExtCtrls, StdCtrls, Db, ComCtrls, Buttons,
|
|
|
|
VpFlxDS;
|
2008-02-03 12:05:55 +00:00
|
|
|
|
|
|
|
type
|
2016-06-08 22:09:29 +00:00
|
|
|
|
|
|
|
{ TfrmFieldMapper }
|
|
|
|
|
2008-02-03 12:05:55 +00:00
|
|
|
TfrmFieldMapper = class(TForm)
|
2017-05-19 16:22:42 +00:00
|
|
|
Bevel2: TBevel;
|
2016-07-24 14:44:45 +00:00
|
|
|
BtnCancel: TButton;
|
2016-07-25 11:23:25 +00:00
|
|
|
btnAddAll: TButton;
|
2017-05-19 16:22:42 +00:00
|
|
|
ButtonPanel: TPanel;
|
2016-07-24 14:44:45 +00:00
|
|
|
BtnOK: TButton;
|
2008-02-03 12:05:55 +00:00
|
|
|
PageControl1: TPageControl;
|
|
|
|
TabSheet1: TTabSheet;
|
2016-07-23 21:14:14 +00:00
|
|
|
lblDBFieldsAvail: TLabel;
|
|
|
|
lblFieldMappings: TLabel;
|
|
|
|
lblVPFieldsAvail: TLabel;
|
|
|
|
lblDataset: TLabel;
|
2008-02-03 12:05:55 +00:00
|
|
|
DatasetFieldLB: TListBox;
|
|
|
|
VPFieldLB: TListBox;
|
|
|
|
FieldMappingsLB: TListBox;
|
|
|
|
btnDeleteMapping: TButton;
|
|
|
|
DatasetCombo: TComboBox;
|
|
|
|
btnAddMapping: TBitBtn;
|
|
|
|
btnClearMappings: TButton;
|
2016-07-25 11:23:25 +00:00
|
|
|
procedure btnAddAllClick(Sender: TObject);
|
2008-02-03 12:05:55 +00:00
|
|
|
procedure btnAddMappingClick(Sender: TObject);
|
|
|
|
procedure btnClearMappingsClick(Sender: TObject);
|
2016-07-25 11:23:25 +00:00
|
|
|
procedure btnDeleteMappingClick(Sender: TObject);
|
|
|
|
procedure Button5Click(Sender: TObject);
|
|
|
|
procedure DatasetComboChange(Sender: TObject);
|
|
|
|
procedure DatasetFieldLBKeyPress(Sender: TObject; var Key: Char);
|
|
|
|
procedure DBFieldSelected(Sender: TObject);
|
2008-02-03 12:05:55 +00:00
|
|
|
procedure FieldMappingsLBClick(Sender: TObject);
|
|
|
|
procedure FieldMappingsLBKeyPress(Sender: TObject; var Key: Char);
|
|
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
2016-07-25 11:23:25 +00:00
|
|
|
procedure FormShow(Sender: TObject);
|
|
|
|
procedure VPFieldLBKeyPress(Sender: TObject; var Key: Char);
|
|
|
|
procedure VpFieldSelected(Sender: TObject);
|
2008-02-03 12:05:55 +00:00
|
|
|
private
|
2016-07-23 21:14:14 +00:00
|
|
|
DSResActive: Boolean;
|
|
|
|
DSEventActive: Boolean;
|
2008-02-03 12:05:55 +00:00
|
|
|
DSContactActive: Boolean;
|
2016-07-23 21:14:14 +00:00
|
|
|
DSTaskActive: Boolean;
|
2016-07-25 11:23:25 +00:00
|
|
|
function GetSelectedFieldMappings: TCollection;
|
2008-02-03 12:05:55 +00:00
|
|
|
procedure SyncObjects;
|
|
|
|
procedure OpenDatasets;
|
2016-07-23 21:14:14 +00:00
|
|
|
procedure PositionControls;
|
2008-02-03 12:05:55 +00:00
|
|
|
public
|
|
|
|
FlexDS: TVpFlexDataStore;
|
|
|
|
ResDS: TDataset;
|
|
|
|
EventsDS: TDataset;
|
|
|
|
ContactsDS: TDataset;
|
|
|
|
TasksDS: TDataset;
|
|
|
|
end;
|
2016-11-21 17:12:05 +00:00
|
|
|
(*
|
2008-02-03 12:05:55 +00:00
|
|
|
{$IFDEF RUNTIMETEST}
|
|
|
|
procedure RuntimeTest(FlexDS: TVpFlexDataStore);
|
|
|
|
{$ELSE}
|
|
|
|
TVpFlexDSEditor = class(TComponentEditor)
|
2016-07-23 21:14:14 +00:00
|
|
|
procedure ExecuteVerb(Index: Integer); override;
|
|
|
|
function GetVerb(Index: Integer): string; override;
|
|
|
|
function GetVerbCount: Integer; override;
|
2008-02-03 12:05:55 +00:00
|
|
|
end;
|
|
|
|
{$ENDIF}
|
2016-11-21 17:12:05 +00:00
|
|
|
*)
|
2008-02-03 12:05:55 +00:00
|
|
|
|
|
|
|
implementation
|
2016-06-07 15:09:01 +00:00
|
|
|
{$IFDEF LCL}
|
2016-06-07 16:34:18 +00:00
|
|
|
{$R *.lfm}
|
2016-06-07 15:09:01 +00:00
|
|
|
{$ELSE}
|
2016-06-07 16:34:18 +00:00
|
|
|
{$R *.dfm}
|
2016-06-07 15:09:01 +00:00
|
|
|
{$ENDIF}
|
|
|
|
|
2008-02-03 12:05:55 +00:00
|
|
|
uses
|
2017-05-19 16:22:42 +00:00
|
|
|
math,
|
2016-07-12 18:00:32 +00:00
|
|
|
vpConst, VpMisc;
|
2016-11-21 17:12:05 +00:00
|
|
|
(*
|
2008-02-03 12:05:55 +00:00
|
|
|
{$IFDEF RUNTIMETEST}
|
|
|
|
{ Runtime test }
|
|
|
|
|
|
|
|
procedure RuntimeTest(FlexDS: TVpFlexDataStore);
|
|
|
|
var
|
|
|
|
frmFieldMapper: TfrmFieldMapper;
|
|
|
|
begin
|
|
|
|
if FlexDS = nil then
|
|
|
|
Exit;
|
|
|
|
|
|
|
|
Application.CreateForm(TfrmFieldMapper, frmFieldMapper);
|
|
|
|
|
|
|
|
try
|
|
|
|
frmFieldMapper.FlexDS := FlexDS;
|
|
|
|
|
|
|
|
if FlexDS.ResourceDataSource <> nil then
|
2016-07-23 21:14:14 +00:00
|
|
|
frmFieldMapper.ResDS := FlexDS.ResourceDataSource.DataSet;
|
2008-02-03 12:05:55 +00:00
|
|
|
|
|
|
|
if FlexDS.EventsDataSource <> nil then
|
2016-07-23 21:14:14 +00:00
|
|
|
frmFieldMapper.EventsDS := FlexDS.EventsDataSource.DataSet;
|
2008-02-03 12:05:55 +00:00
|
|
|
|
|
|
|
if FlexDS.ContactsDataSource <> nil then
|
|
|
|
frmFieldMapper.ContactsDS := FlexDS.ContactsDataSource.DataSet;
|
|
|
|
|
|
|
|
if FlexDS.TasksDataSource <> nil then
|
2016-07-23 21:14:14 +00:00
|
|
|
frmFieldMapper.TasksDS := FlexDS.TasksDataSource.DataSet;
|
2008-02-03 12:05:55 +00:00
|
|
|
|
|
|
|
frmFieldMapper.ShowModal;
|
|
|
|
|
|
|
|
finally
|
|
|
|
frmFieldMapper.release;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
|
|
|
{$ELSE} {RUNTIMETEST}
|
|
|
|
|
2016-06-07 15:09:01 +00:00
|
|
|
{$IFDEF LCL}
|
2016-07-23 21:14:14 +00:00
|
|
|
procedure MapDatabaseFields(Designer: TComponentEditorDesigner;
|
|
|
|
FlexDS: TVpFlexDataStore);
|
2016-06-07 15:09:01 +00:00
|
|
|
{$ELSE}
|
2008-02-03 12:05:55 +00:00
|
|
|
{$IFDEF VERSION6}
|
2016-07-23 21:14:14 +00:00
|
|
|
procedure MapDatabaseFields(Designer: TComponentEditorDesigner;; // was: Designer : IDesigner;
|
|
|
|
FlexDS: TVpFlexDataStore);
|
2008-02-03 12:05:55 +00:00
|
|
|
{$ELSE}
|
2016-07-23 21:14:14 +00:00
|
|
|
procedure MapDatabaseFields(Designer: IFormDesigner;
|
|
|
|
FlexDS: TVpFlexDataStore);
|
2016-06-07 15:09:01 +00:00
|
|
|
{$ENDIF}{$ENDIF}
|
2008-02-03 12:05:55 +00:00
|
|
|
var
|
|
|
|
frmFieldMapper: TfrmFieldMapper;
|
2016-07-24 14:44:45 +00:00
|
|
|
savedResourceMappings: TCollection;
|
|
|
|
savedContactMappings: TCollection;
|
|
|
|
savedEventMappings: TCollection;
|
|
|
|
savedTaskMappings: TCollection;
|
2008-02-03 12:05:55 +00:00
|
|
|
begin
|
|
|
|
if FlexDS = nil then
|
|
|
|
Exit;
|
2016-07-24 14:44:45 +00:00
|
|
|
|
|
|
|
savedResourceMappings := TCollection.Create(TVpFieldMapping);
|
|
|
|
savedContactMappings := TCollection.Create(TVpFieldMapping);
|
|
|
|
savedEventMappings := TCollection.Create(TVpFieldMapping);
|
|
|
|
savedTaskMappings := TCollection.Create(TVpFieldMapping);
|
2008-02-03 12:05:55 +00:00
|
|
|
try
|
2016-07-24 14:44:45 +00:00
|
|
|
savedResourceMappings.Assign(FlexDS.ResourceMappings);
|
|
|
|
savedContactMappings.Assign(FlexDS.ContactMappings);
|
|
|
|
savedEventMappings.Assign(FlexDS.EventMappings);
|
|
|
|
savedTaskMappings.Assign(FlexDS.TaskMappings);
|
|
|
|
|
|
|
|
Application.CreateForm(TfrmFieldMapper, frmFieldMapper);
|
|
|
|
try
|
|
|
|
frmFieldMapper.FlexDS := FlexDS;
|
|
|
|
if FlexDS.ResourceDataSource <> nil then
|
|
|
|
frmFieldMapper.ResDS := FlexDS.ResourceDataSource.DataSet;
|
|
|
|
if FlexDS.EventsDataSource <> nil then
|
|
|
|
frmFieldMapper.EventsDS := FlexDS.EventsDataSource.DataSet;
|
|
|
|
if FlexDS.ContactsDataSource <> nil then
|
|
|
|
frmFieldMapper.ContactsDS := FlexDS.ContactsDataSource.DataSet;
|
|
|
|
if FlexDS.TasksDataSource <> nil then
|
|
|
|
frmFieldMapper.TasksDS := FlexDS.TasksDataSource.DataSet;
|
|
|
|
if frmFieldMapper.ShowModal <> mrOK then begin
|
|
|
|
FlexDS.ResourceMappings.Assign(savedResourceMappings);
|
|
|
|
FlexDS.ContactMappings.Assign(savedContactMappings);
|
|
|
|
FlexDS.EventMappings.Assign(savedEventMappings);
|
|
|
|
FlexDS.TaskMappings.Assign(savedTaskMappings);
|
|
|
|
end;
|
|
|
|
finally
|
|
|
|
frmFieldMapper.Release;
|
|
|
|
end;
|
|
|
|
Designer.Modified;
|
|
|
|
|
2008-02-03 12:05:55 +00:00
|
|
|
finally
|
2016-07-24 14:44:45 +00:00
|
|
|
savedResourceMappings.Free;
|
|
|
|
savedContactMappings.Free;
|
|
|
|
savedEventMappings.Free;
|
|
|
|
savedTaskMappings.Free;
|
2008-02-03 12:05:55 +00:00
|
|
|
end;
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
|
|
|
{*** TVpNavBarEditor ***}
|
|
|
|
|
2016-07-23 21:14:14 +00:00
|
|
|
procedure TVpFlexDSEditor.ExecuteVerb(Index: Integer);
|
2008-02-03 12:05:55 +00:00
|
|
|
begin
|
|
|
|
if Index = 0 then
|
|
|
|
MapDatabaseFields(Designer, (Component as TVpFlexDataStore));
|
|
|
|
end;
|
|
|
|
|
2016-07-23 21:14:14 +00:00
|
|
|
function TVpFlexDSEditor.GetVerb(Index: Integer): string;
|
2008-02-03 12:05:55 +00:00
|
|
|
begin
|
|
|
|
if Index = 0 then
|
|
|
|
Result := 'Map Database Fields...';
|
|
|
|
end;
|
|
|
|
|
2016-07-23 21:14:14 +00:00
|
|
|
function TVpFlexDSEditor.GetVerbCount: Integer;
|
2008-02-03 12:05:55 +00:00
|
|
|
begin
|
|
|
|
Result := 1;
|
|
|
|
end;
|
|
|
|
{$ENDIF} {RuntimeTest}
|
2016-11-21 17:12:05 +00:00
|
|
|
*)
|
2008-02-03 12:05:55 +00:00
|
|
|
|
|
|
|
procedure TfrmFieldMapper.FormShow(Sender: TObject);
|
|
|
|
begin
|
2016-07-23 21:14:14 +00:00
|
|
|
PositionControls;
|
|
|
|
|
2008-02-03 12:05:55 +00:00
|
|
|
DatasetCombo.Items.Clear;
|
|
|
|
DatasetCombo.Text := '';
|
|
|
|
|
|
|
|
try
|
|
|
|
OpenDatasets;
|
|
|
|
finally
|
|
|
|
{Load DatasetCombo}
|
|
|
|
if (ResDS <> nil) and (ResDS.Active) then
|
|
|
|
DatasetCombo.Items.Add(ResourceTableName)
|
|
|
|
else
|
|
|
|
FlexDS.ResourceMappings.Clear;
|
|
|
|
|
|
|
|
if (EventsDS <> nil) and (EventsDS.Active) then
|
|
|
|
DatasetCombo.Items.Add(EventsTableName)
|
|
|
|
else
|
|
|
|
FlexDS.EventMappings.Clear;
|
|
|
|
|
|
|
|
if (ContactsDS <> nil) and (ContactsDS.Active) then
|
|
|
|
DatasetCombo.Items.Add(ContactsTableName)
|
|
|
|
else
|
|
|
|
FlexDS.ContactMappings.Clear;
|
|
|
|
|
|
|
|
if (TasksDS <> nil) and (TasksDS.Active) then
|
|
|
|
DatasetCombo.Items.Add(TasksTableName)
|
|
|
|
else
|
|
|
|
FlexDS.TaskMappings.Clear;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
|
|
|
procedure TfrmFieldMapper.OpenDatasets;
|
|
|
|
var
|
|
|
|
ErrorStr: string;
|
|
|
|
begin
|
|
|
|
ErrorStr := '';
|
|
|
|
|
|
|
|
DSResActive := false;
|
|
|
|
DSEventActive := false;
|
|
|
|
|
|
|
|
{Open the Resources Dataset}
|
|
|
|
if ResDS <> nil then begin
|
|
|
|
DSResActive := ResDS.Active;
|
|
|
|
if not ResDS.Active then
|
|
|
|
try
|
|
|
|
ResDS.Open;
|
|
|
|
except
|
|
|
|
ErrorStr := ' Resources (Failed to open)'#13#10;
|
|
|
|
end;
|
|
|
|
end else
|
|
|
|
ErrorStr := ' Resources (Datasource not assigned)'#13#10;
|
|
|
|
|
|
|
|
{Open the Events Dataset}
|
|
|
|
if EventsDS <> nil then begin
|
|
|
|
DSEventActive := EventsDS.Active;
|
|
|
|
if not EventsDS.Active then
|
|
|
|
try
|
|
|
|
EventsDS.Open;
|
|
|
|
except
|
|
|
|
ErrorStr := ErrorStr + ' Events (Failed to open)'#13#10;
|
|
|
|
end;
|
|
|
|
end else
|
|
|
|
ErrorStr := ErrorStr + ' Events (Datasource not assigned)'#13#10;
|
|
|
|
|
|
|
|
{Open the Contacts Dataset}
|
|
|
|
if ContactsDS <> nil then begin
|
|
|
|
DSContactActive := ContactsDS.Active;
|
|
|
|
try
|
|
|
|
ContactsDS.Open;
|
|
|
|
except
|
|
|
|
ErrorStr := ErrorStr + ' Contacts (Failed to open)'#13#10;
|
|
|
|
end;
|
|
|
|
end else
|
|
|
|
ErrorStr := ErrorStr + ' Contacts (Datasource not assigned)'#13#10;
|
|
|
|
|
|
|
|
{Open the Tasks Dataset}
|
|
|
|
if TasksDS <> nil then begin
|
|
|
|
DSTaskActive := TasksDS.Active;
|
|
|
|
try
|
|
|
|
TasksDS.Open;
|
|
|
|
except
|
|
|
|
ErrorStr := ErrorStr + ' Tasks (Failed to open)'#13#10;
|
|
|
|
end;
|
|
|
|
end else
|
|
|
|
ErrorStr := ErrorStr + ' Tasks (Datasource not assigned)'#13#10;
|
|
|
|
|
|
|
|
{ let the user know if there was a prolen opening any of the datasets. }
|
|
|
|
if (ErrorStr <> '') then
|
|
|
|
Application.MessageBox(PChar('There was an error opening the following '
|
|
|
|
+ 'datasets'#13#10#10 + ErrorStr + #10
|
|
|
|
+ 'Field mapping for these tables will not be available until the '
|
2016-07-24 14:44:45 +00:00
|
|
|
+ 'errors are corrected. Any previously assigned mappings will be kept.'),
|
|
|
|
'Error Opening Dataset(s)', 0);
|
2008-02-03 12:05:55 +00:00
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
2016-07-23 21:14:14 +00:00
|
|
|
procedure TfrmFieldMapper.PositionControls;
|
|
|
|
var
|
2017-05-19 16:22:42 +00:00
|
|
|
w, h: Integer;
|
2016-07-23 21:14:14 +00:00
|
|
|
begin
|
2017-05-19 16:22:42 +00:00
|
|
|
btnAddMapping.AutoSize := true;
|
|
|
|
btnAddAll.AutoSize := true;
|
|
|
|
w := Max(btnAddMapping.Width, btnAddAll.Width);
|
|
|
|
h := btnAddMapping.Height;
|
|
|
|
|
|
|
|
btnAddMapping.AutoSize := false;
|
2017-05-19 16:44:40 +00:00
|
|
|
btnAddMapping.Height := w * 2 div 3; //h;
|
2017-05-19 16:22:42 +00:00
|
|
|
btnAddMapping.Width := w;
|
|
|
|
|
|
|
|
btnAddAll.AutoSize := false;
|
2017-05-19 16:44:40 +00:00
|
|
|
btnAddAll.Height := w * 2 div 3; //h;
|
2017-05-19 16:22:42 +00:00
|
|
|
btnAddAll.Width := w;
|
|
|
|
|
2017-05-19 16:44:40 +00:00
|
|
|
btnDeleteMapping.AutoSize := true;
|
|
|
|
btnClearMappings.AutoSize := true;
|
|
|
|
w := max(btnDeleteMapping.Width, btnClearMappings.Width);
|
|
|
|
h := btnDeleteMapping.Height;
|
|
|
|
|
|
|
|
btnDeleteMapping.AutoSize := false;
|
|
|
|
btnDeleteMapping.Height := h;
|
|
|
|
btnDeleteMapping.Width := w;
|
|
|
|
|
|
|
|
btnClearMappings.AutoSize := false;
|
|
|
|
btnClearMappings.Height := h;
|
|
|
|
btnClearMappings.Width := w;
|
|
|
|
|
2017-05-19 16:22:42 +00:00
|
|
|
AlignOKCancel(BtnOK, BtnCancel, ButtonPanel);
|
2016-07-23 21:14:14 +00:00
|
|
|
end;
|
|
|
|
|
2008-02-03 12:05:55 +00:00
|
|
|
procedure TfrmFieldMapper.DatasetComboChange(Sender: TObject);
|
|
|
|
begin
|
2016-07-25 11:23:25 +00:00
|
|
|
btnAddAll.Enabled := DatasetCombo.ItemIndex > -1;
|
2008-02-03 12:05:55 +00:00
|
|
|
SyncObjects;
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
|
|
|
procedure TfrmFieldMapper.SyncObjects;
|
|
|
|
var
|
|
|
|
I: integer;
|
|
|
|
FM: TVpFieldMapping;
|
|
|
|
MC: TCollection;
|
|
|
|
begin
|
|
|
|
MC := nil;
|
|
|
|
FieldMappingsLB.Items.Clear;
|
|
|
|
DatasetFieldLB.Items.Clear;
|
|
|
|
VpFieldLB.Clear;
|
|
|
|
|
|
|
|
if DatasetCombo.Text = ResourceTableName then begin
|
|
|
|
MC := FlexDS.ResourceMappings;
|
|
|
|
if not ResDS.Active then
|
|
|
|
ResDS.Open;
|
|
|
|
ResDS.FieldDefs.GetItemNames(DataSetFieldLB.Items);
|
|
|
|
VpFieldLB.Items.Add('ResourceID');
|
|
|
|
VpFieldLB.Items.Add('Description');
|
|
|
|
VpFieldLB.Items.Add('Notes');
|
|
|
|
VpFieldLB.Items.Add('ImageIndex');
|
2016-06-10 23:24:14 +00:00
|
|
|
VpFieldLB.Items.Add('ResourceActive');
|
2008-02-03 12:05:55 +00:00
|
|
|
VpFieldLB.Items.Add('UserField0');
|
|
|
|
VpFieldLB.Items.Add('UserField1');
|
|
|
|
VpFieldLB.Items.Add('UserField2');
|
|
|
|
VpFieldLB.Items.Add('UserField3');
|
|
|
|
VpFieldLB.Items.Add('UserField4');
|
|
|
|
VpFieldLB.Items.Add('UserField5');
|
|
|
|
VpFieldLB.Items.Add('UserField6');
|
|
|
|
VpFieldLB.Items.Add('UserField7');
|
|
|
|
VpFieldLB.Items.Add('UserField8');
|
|
|
|
VpFieldLB.Items.Add('UserField9');
|
|
|
|
end
|
|
|
|
|
|
|
|
else if DatasetCombo.Text = EventsTableName then begin
|
|
|
|
MC := FlexDS.EventMappings;
|
|
|
|
EventsDS.FieldDefs.GetItemNames(DataSetFieldLB.Items);
|
|
|
|
VpFieldLB.Items.Add('RecordID');
|
2016-06-12 12:53:26 +00:00
|
|
|
VpFieldLB.Items.Add('ResourceID');
|
2008-02-03 12:05:55 +00:00
|
|
|
VpFieldLB.Items.Add('StartTime');
|
|
|
|
VpFieldLB.Items.Add('EndTime');
|
|
|
|
VpFieldLB.Items.Add('Description');
|
2016-06-12 12:53:26 +00:00
|
|
|
VpFieldLB.Items.Add('Location');
|
|
|
|
VpFieldLB.Items.Add('Notes');
|
2008-02-03 12:05:55 +00:00
|
|
|
VpFieldLB.Items.Add('Category');
|
|
|
|
VpFieldLB.Items.Add('AllDayEvent');
|
2016-06-12 12:53:26 +00:00
|
|
|
VpFieldLB.Items.Add('DingPath');
|
2008-02-03 12:05:55 +00:00
|
|
|
VpFieldLB.Items.Add('AlarmSet');
|
2016-06-12 12:53:26 +00:00
|
|
|
VpFieldLB.Items.Add('AlarmAdvance');
|
|
|
|
VpFieldLB.Items.Add('AlarmAdvanceType');
|
2008-02-03 12:05:55 +00:00
|
|
|
VpFieldLB.Items.Add('SnoozeTime');
|
|
|
|
VpFieldLB.Items.Add('RepeatCode');
|
|
|
|
VpFieldLB.Items.Add('RepeatRangeEnd');
|
2016-06-12 12:53:26 +00:00
|
|
|
VpFieldLB.Items.Add('CustomInterval');
|
2008-02-03 12:05:55 +00:00
|
|
|
VpFieldLB.Items.Add('UserField0');
|
|
|
|
VpFieldLB.Items.Add('UserField1');
|
|
|
|
VpFieldLB.Items.Add('UserField2');
|
|
|
|
VpFieldLB.Items.Add('UserField3');
|
|
|
|
VpFieldLB.Items.Add('UserField4');
|
|
|
|
VpFieldLB.Items.Add('UserField5');
|
|
|
|
VpFieldLB.Items.Add('UserField6');
|
|
|
|
VpFieldLB.Items.Add('UserField7');
|
|
|
|
VpFieldLB.Items.Add('UserField8');
|
|
|
|
VpFieldLB.Items.Add('UserField9');
|
|
|
|
end
|
|
|
|
|
|
|
|
else if DatasetCombo.Text = ContactsTableName then begin
|
|
|
|
MC := FlexDS.ContactMappings;
|
|
|
|
ContactsDS.FieldDefs.GetItemNames(DataSetFieldLB.Items);
|
|
|
|
VpFieldLB.Items.Add('RecordID');
|
2016-06-12 12:53:26 +00:00
|
|
|
VpFieldLB.Items.Add('ResourceID');
|
2008-02-03 12:05:55 +00:00
|
|
|
VpFieldLB.Items.Add('FirstName');
|
|
|
|
VpFieldLB.Items.Add('LastName');
|
|
|
|
VpFieldLB.Items.Add('Birthdate');
|
|
|
|
VpFieldLB.Items.Add('Anniversary');
|
|
|
|
VpFieldLB.Items.Add('Title');
|
|
|
|
VpFieldLB.Items.Add('Company');
|
2016-06-12 12:53:26 +00:00
|
|
|
VpFieldLB.Items.Add('Job_Position');
|
2008-02-03 12:05:55 +00:00
|
|
|
VpFieldLB.Items.Add('Address');
|
|
|
|
VpFieldLB.Items.Add('City');
|
|
|
|
VpFieldLB.Items.Add('State');
|
|
|
|
VpFieldLB.Items.Add('Zip');
|
|
|
|
VpFieldLB.Items.Add('Country');
|
2016-06-12 12:53:26 +00:00
|
|
|
VpFieldLB.Items.Add('Notes');
|
2008-02-03 12:05:55 +00:00
|
|
|
VpFieldLB.Items.Add('Phone1');
|
|
|
|
VpFieldLB.Items.Add('Phone2');
|
|
|
|
VpFieldLB.Items.Add('Phone3');
|
|
|
|
VpFieldLB.Items.Add('Phone4');
|
|
|
|
VpFieldLB.Items.Add('Phone5');
|
|
|
|
VpFieldLB.Items.Add('PhoneType1');
|
|
|
|
VpFieldLB.Items.Add('PhoneType2');
|
|
|
|
VpFieldLB.Items.Add('PhoneType3');
|
|
|
|
VpFieldLB.Items.Add('PhoneType4');
|
|
|
|
VpFieldLB.Items.Add('PhoneType5');
|
|
|
|
VpFieldLB.Items.Add('Category');
|
2016-06-12 12:53:26 +00:00
|
|
|
VpFieldLB.Items.Add('EMail');
|
2008-02-03 12:05:55 +00:00
|
|
|
VpFieldLB.Items.Add('Custom1');
|
|
|
|
VpFieldLB.Items.Add('Custom2');
|
|
|
|
VpFieldLB.Items.Add('Custom3');
|
|
|
|
VpFieldLB.Items.Add('Custom4');
|
|
|
|
VpFieldLB.Items.Add('UserField0');
|
|
|
|
VpFieldLB.Items.Add('UserField1');
|
|
|
|
VpFieldLB.Items.Add('UserField2');
|
|
|
|
VpFieldLB.Items.Add('UserField3');
|
|
|
|
VpFieldLB.Items.Add('UserField4');
|
|
|
|
VpFieldLB.Items.Add('UserField5');
|
|
|
|
VpFieldLB.Items.Add('UserField6');
|
|
|
|
VpFieldLB.Items.Add('UserField7');
|
|
|
|
VpFieldLB.Items.Add('UserField8');
|
|
|
|
VpFieldLB.Items.Add('UserField9');
|
|
|
|
end
|
|
|
|
|
|
|
|
else if DatasetCombo.Text = TasksTableName then begin
|
|
|
|
MC := FlexDS.TaskMappings;
|
|
|
|
TasksDS.FieldDefs.GetItemNames(DataSetFieldLB.Items);
|
|
|
|
VpFieldLB.Items.Add('RecordID');
|
2016-06-12 12:53:26 +00:00
|
|
|
VpFieldLB.Items.Add('ResourceID');
|
2008-02-03 12:05:55 +00:00
|
|
|
VpFieldLB.Items.Add('Complete');
|
|
|
|
VpFieldLB.Items.Add('Description');
|
|
|
|
VpFieldLB.Items.Add('Details');
|
|
|
|
VpFieldLB.Items.Add('CreatedOn');
|
|
|
|
VpFieldLB.Items.Add('Priority');
|
|
|
|
VpFieldLB.Items.Add('Category');
|
2016-06-12 12:53:26 +00:00
|
|
|
VpFieldLB.Items.Add('CompletedOn');
|
2008-02-03 12:05:55 +00:00
|
|
|
VpFieldLB.Items.Add('DueDate');
|
|
|
|
VpFieldLB.Items.Add('UserField0');
|
|
|
|
VpFieldLB.Items.Add('UserField1');
|
|
|
|
VpFieldLB.Items.Add('UserField2');
|
|
|
|
VpFieldLB.Items.Add('UserField3');
|
|
|
|
VpFieldLB.Items.Add('UserField4');
|
|
|
|
VpFieldLB.Items.Add('UserField5');
|
|
|
|
VpFieldLB.Items.Add('UserField6');
|
|
|
|
VpFieldLB.Items.Add('UserField7');
|
|
|
|
VpFieldLB.Items.Add('UserField8');
|
|
|
|
VpFieldLB.Items.Add('UserField9');
|
|
|
|
end;
|
|
|
|
|
|
|
|
if MC <> nil then
|
|
|
|
for I := 0 to pred(MC.Count) do begin
|
|
|
|
FM := TVpFieldMapping(MC.Items[I]);
|
|
|
|
{Delete mapped selection from the DatabaseFields list}
|
|
|
|
if (DatasetFieldLB.Items.IndexOf(FM.DBField) > -1) then
|
|
|
|
DatasetFieldLB.Items.Delete(DatasetFieldLB.Items.IndexOf(FM.DBField));
|
|
|
|
{Delete mapped selection from the VPFields List}
|
|
|
|
if (VPFieldLB.Items.IndexOf(FM.VPField) > -1) then
|
|
|
|
VPFieldLB.Items.Delete(VPFieldLB.Items.IndexOf(FM.VPField));
|
|
|
|
|
|
|
|
{Add the field mapping to the Field Mappings Listbox}
|
|
|
|
FieldMappingsLB.Items.Add(FM.DBField + ' -> ' + FM.VPField);
|
|
|
|
end;
|
|
|
|
|
|
|
|
{enable/disable buttons}
|
|
|
|
btnDeleteMapping.Enabled := false;
|
|
|
|
btnClearMappings.Enabled := FieldMappingsLB.Items.Count > 0;
|
|
|
|
btnAddMapping.Enabled := false;
|
2016-07-25 11:23:25 +00:00
|
|
|
btnAddAll.Enabled := false;
|
2008-02-03 12:05:55 +00:00
|
|
|
|
|
|
|
VpFieldLB.ItemIndex := -1;
|
|
|
|
DatasetFieldLB.ItemIndex := -1;
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
|
|
|
procedure TfrmFieldMapper.DBFieldSelected(Sender: TObject);
|
|
|
|
begin
|
|
|
|
btnAddMapping.Enabled := (VpFieldLB.ItemIndex > -1);
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
|
|
|
procedure TfrmFieldMapper.DatasetFieldLBKeyPress(Sender: TObject;
|
|
|
|
var Key: Char);
|
|
|
|
begin
|
2016-07-12 18:00:32 +00:00
|
|
|
Unused(Key);
|
2008-02-03 12:05:55 +00:00
|
|
|
DbFieldSelected(sender);
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
|
|
|
procedure TfrmFieldMapper.VpFieldSelected(Sender: TObject);
|
|
|
|
begin
|
|
|
|
btnAddMapping.Enabled := (DatasetFieldLB.ItemIndex > -1);
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
|
|
|
procedure TfrmFieldMapper.VPFieldLBKeyPress(Sender: TObject;
|
|
|
|
var Key: Char);
|
|
|
|
begin
|
2016-07-12 18:00:32 +00:00
|
|
|
Unused(Key);
|
2008-02-03 12:05:55 +00:00
|
|
|
VpFieldSelected(Sender);
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
2016-07-25 11:23:25 +00:00
|
|
|
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;
|
|
|
|
|
2008-02-03 12:05:55 +00:00
|
|
|
procedure TfrmFieldMapper.btnAddMappingClick(Sender: TObject);
|
|
|
|
var
|
|
|
|
FM: TVpFieldMapping;
|
|
|
|
MC: TCollection;
|
|
|
|
begin
|
2016-07-25 11:23:25 +00:00
|
|
|
MC := GetSelectedFieldMappings;
|
|
|
|
if MC = nil then
|
|
|
|
exit;
|
2008-02-03 12:05:55 +00:00
|
|
|
|
2016-07-25 11:23:25 +00:00
|
|
|
FM := TVpFieldMapping(MC.Add);
|
|
|
|
FM.DBField := DatasetFieldLB.Items[DatasetFieldLB.ItemIndex];
|
|
|
|
FM.VPField := VPFieldLB.Items[VPFieldLB.ItemIndex];
|
|
|
|
SyncObjects;
|
2008-02-03 12:05:55 +00:00
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
|
|
|
procedure TfrmFieldMapper.Button5Click(Sender: TObject);
|
|
|
|
begin
|
|
|
|
// Help;
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
|
|
|
procedure TfrmFieldMapper.btnDeleteMappingClick(Sender: TObject);
|
2016-07-25 11:23:25 +00:00
|
|
|
var
|
|
|
|
MC: TCollection;
|
2008-02-03 12:05:55 +00:00
|
|
|
begin
|
|
|
|
if FieldMappingsLB.ItemIndex > -1 then begin
|
2016-07-25 11:23:25 +00:00
|
|
|
MC := GetSelectedFieldMappings;
|
|
|
|
if MC <> nil then begin
|
|
|
|
MC.Items[FieldMappingsLB.ItemIndex].Free;
|
|
|
|
SyncObjects;
|
|
|
|
end;
|
2008-02-03 12:05:55 +00:00
|
|
|
end;
|
|
|
|
end;
|
2016-07-25 11:23:25 +00:00
|
|
|
|
2008-02-03 12:05:55 +00:00
|
|
|
{=====}
|
|
|
|
|
|
|
|
procedure TfrmFieldMapper.btnClearMappingsClick(Sender: TObject);
|
|
|
|
var
|
|
|
|
MC: TCollection;
|
|
|
|
begin
|
|
|
|
MC := nil;
|
|
|
|
if FieldMappingsLB.Items.Count > 0 then begin
|
2016-07-25 11:23:25 +00:00
|
|
|
MC := GetSelectedFieldMappings;
|
2008-02-03 12:05:55 +00:00
|
|
|
if MC <> nil then begin
|
|
|
|
while (MC.Count > 0) do
|
|
|
|
MC.Items[0].Free;
|
|
|
|
SyncObjects;
|
|
|
|
end;
|
2016-07-25 11:23:25 +00:00
|
|
|
btnAddAll.Enabled := DatasetCombo.ItemIndex > -1;
|
2008-02-03 12:05:55 +00:00
|
|
|
end;
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
|
|
|
procedure TfrmFieldMapper.FieldMappingsLBClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
btnDeleteMapping.Enabled := FieldMappingsLB.ItemIndex > -1;
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
|
|
|
procedure TfrmFieldMapper.FieldMappingsLBKeyPress(Sender: TObject;
|
|
|
|
var Key: Char);
|
|
|
|
begin
|
2016-07-12 18:00:32 +00:00
|
|
|
Unused(Key);
|
2008-02-03 12:05:55 +00:00
|
|
|
FieldMappingsLBClick(Sender);
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
|
|
|
procedure TfrmFieldMapper.FormClose(Sender: TObject;
|
|
|
|
var Action: TCloseAction);
|
|
|
|
begin
|
2016-07-12 18:00:32 +00:00
|
|
|
Unused(Action);
|
2008-02-03 12:05:55 +00:00
|
|
|
{reset all datasets to their original active status}
|
|
|
|
if ResDS <> nil then
|
|
|
|
ResDS.Active := DSResActive;
|
|
|
|
if EventsDS <> nil then
|
|
|
|
EventsDS.Active := DSEventActive;
|
|
|
|
if ContactsDS <> nil then
|
|
|
|
ContactsDS.Active := DSContactActive;
|
|
|
|
if TasksDS <> nil then
|
|
|
|
TasksDS.Active := DSTaskActive;
|
|
|
|
end;
|
|
|
|
{=====}
|
|
|
|
|
2016-07-25 11:23:25 +00:00
|
|
|
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;
|
|
|
|
|
2008-02-03 12:05:55 +00:00
|
|
|
end.
|
|
|
|
|
|
|
|
|
|
|
|
|