tvplanit: Automatic positioning of controls in FlexDS field mapper.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5026 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-07-23 21:14:14 +00:00
parent 5bbdbed004
commit 257f3fd322
2 changed files with 63 additions and 35 deletions

View File

@ -22,13 +22,13 @@ object frmFieldMapper: TfrmFieldMapper
ClientHeight = 45 ClientHeight = 45
ClientWidth = 409 ClientWidth = 409
TabOrder = 1 TabOrder = 1
object Button2: TButton object BtnClose: TButton
Left = 325 Left = 325
Height = 25 Height = 25
Top = 8 Top = 8
Width = 75 Width = 75
Caption = 'Close' Caption = 'Close'
OnClick = Button2Click OnClick = BtnCloseClick
TabOrder = 0 TabOrder = 0
end end
end end
@ -51,7 +51,7 @@ object frmFieldMapper: TfrmFieldMapper
Top = 4 Top = 4
Width = 390 Width = 390
end end
object Label2: TLabel object lblDBFieldsAvail: TLabel
Left = 11 Left = 11
Height = 15 Height = 15
Top = 36 Top = 36
@ -59,7 +59,7 @@ object frmFieldMapper: TfrmFieldMapper
Caption = 'Available Dataset Fields:' Caption = 'Available Dataset Fields:'
ParentColor = False ParentColor = False
end end
object Label5: TLabel object lblFieldMappings: TLabel
Left = 35 Left = 35
Height = 15 Height = 15
Top = 329 Top = 329
@ -67,7 +67,7 @@ object frmFieldMapper: TfrmFieldMapper
Caption = 'Field Mappings:' Caption = 'Field Mappings:'
ParentColor = False ParentColor = False
end end
object Label6: TLabel object lblVPFieldsAvail: TLabel
Left = 242 Left = 242
Height = 15 Height = 15
Top = 36 Top = 36
@ -75,7 +75,7 @@ object frmFieldMapper: TfrmFieldMapper
Caption = 'Available Visual PlanIt Fields:' Caption = 'Available Visual PlanIt Fields:'
ParentColor = False ParentColor = False
end end
object Label1: TLabel object lblDataset: TLabel
Left = 11 Left = 11
Height = 15 Height = 15
Top = 13 Top = 13

View File

@ -53,14 +53,14 @@ type
TfrmFieldMapper = class(TForm) TfrmFieldMapper = class(TForm)
Panel1: TPanel; Panel1: TPanel;
Button2: TButton; BtnClose: TButton;
PageControl1: TPageControl; PageControl1: TPageControl;
TabSheet1: TTabSheet; TabSheet1: TTabSheet;
Bevel1: TBevel; Bevel1: TBevel;
Label2: TLabel; lblDBFieldsAvail: TLabel;
Label5: TLabel; lblFieldMappings: TLabel;
Label6: TLabel; lblVPFieldsAvail: TLabel;
Label1: TLabel; lblDataset: TLabel;
DatasetFieldLB: TListBox; DatasetFieldLB: TListBox;
VPFieldLB: TListBox; VPFieldLB: TListBox;
FieldMappingsLB: TListBox; FieldMappingsLB: TListBox;
@ -75,7 +75,7 @@ type
procedure VpFieldSelected(Sender: TObject); procedure VpFieldSelected(Sender: TObject);
procedure VPFieldLBKeyPress(Sender: TObject; var Key: Char); procedure VPFieldLBKeyPress(Sender: TObject; var Key: Char);
procedure btnAddMappingClick(Sender: TObject); procedure btnAddMappingClick(Sender: TObject);
procedure Button2Click(Sender: TObject); procedure BtnCloseClick(Sender: TObject);
procedure Button5Click(Sender: TObject); procedure Button5Click(Sender: TObject);
procedure btnDeleteMappingClick(Sender: TObject); procedure btnDeleteMappingClick(Sender: TObject);
procedure btnClearMappingsClick(Sender: TObject); procedure btnClearMappingsClick(Sender: TObject);
@ -83,12 +83,13 @@ type
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);
private private
DSResActive : Boolean; DSResActive: Boolean;
DSEventActive : Boolean; DSEventActive: Boolean;
DSContactActive: Boolean; DSContactActive: Boolean;
DSTaskActive : Boolean; DSTaskActive: Boolean;
procedure SyncObjects; procedure SyncObjects;
procedure OpenDatasets; procedure OpenDatasets;
procedure PositionControls;
public public
FlexDS: TVpFlexDataStore; FlexDS: TVpFlexDataStore;
ResDS: TDataset; ResDS: TDataset;
@ -101,9 +102,9 @@ type
procedure RuntimeTest(FlexDS: TVpFlexDataStore); procedure RuntimeTest(FlexDS: TVpFlexDataStore);
{$ELSE} {$ELSE}
TVpFlexDSEditor = class(TComponentEditor) TVpFlexDSEditor = class(TComponentEditor)
procedure ExecuteVerb(Index : Integer); override; procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index : Integer) : string; override; function GetVerb(Index: Integer): string; override;
function GetVerbCount : Integer; override; function GetVerbCount: Integer; override;
end; end;
{$ENDIF} {$ENDIF}
@ -133,16 +134,16 @@ begin
frmFieldMapper.FlexDS := FlexDS; frmFieldMapper.FlexDS := FlexDS;
if FlexDS.ResourceDataSource <> nil then if FlexDS.ResourceDataSource <> nil then
frmFieldMapper.ResDS := FlexDS.ResourceDataSource.DataSet; frmFieldMapper.ResDS := FlexDS.ResourceDataSource.DataSet;
if FlexDS.EventsDataSource <> nil then if FlexDS.EventsDataSource <> nil then
frmFieldMapper.EventsDS := FlexDS.EventsDataSource.DataSet; frmFieldMapper.EventsDS := FlexDS.EventsDataSource.DataSet;
if FlexDS.ContactsDataSource <> nil then if FlexDS.ContactsDataSource <> nil then
frmFieldMapper.ContactsDS := FlexDS.ContactsDataSource.DataSet; frmFieldMapper.ContactsDS := FlexDS.ContactsDataSource.DataSet;
if FlexDS.TasksDataSource <> nil then if FlexDS.TasksDataSource <> nil then
frmFieldMapper.TasksDS := FlexDS.TasksDataSource.DataSet; frmFieldMapper.TasksDS := FlexDS.TasksDataSource.DataSet;
frmFieldMapper.ShowModal; frmFieldMapper.ShowModal;
@ -155,15 +156,15 @@ end;
{$ELSE} {RUNTIMETEST} {$ELSE} {RUNTIMETEST}
{$IFDEF LCL} {$IFDEF LCL}
procedure MapDatabaseFields(Designer : TComponentEditorDesigner; procedure MapDatabaseFields(Designer: TComponentEditorDesigner;
FlexDS : TVpFlexDataStore); FlexDS: TVpFlexDataStore);
{$ELSE} {$ELSE}
{$IFDEF VERSION6} {$IFDEF VERSION6}
procedure MapDatabaseFields(Designer : TComponentEditorDesigner;; // was: Designer : IDesigner; procedure MapDatabaseFields(Designer: TComponentEditorDesigner;; // was: Designer : IDesigner;
FlexDS : TVpFlexDataStore); FlexDS: TVpFlexDataStore);
{$ELSE} {$ELSE}
procedure MapDatabaseFields(Designer : IFormDesigner; procedure MapDatabaseFields(Designer: IFormDesigner;
FlexDS : TVpFlexDataStore); FlexDS: TVpFlexDataStore);
{$ENDIF}{$ENDIF} {$ENDIF}{$ENDIF}
var var
frmFieldMapper: TfrmFieldMapper; frmFieldMapper: TfrmFieldMapper;
@ -174,16 +175,16 @@ begin
try try
frmFieldMapper.FlexDS := FlexDS; frmFieldMapper.FlexDS := FlexDS;
if FlexDS.ResourceDataSource <> nil then if FlexDS.ResourceDataSource <> nil then
frmFieldMapper.ResDS := FlexDS.ResourceDataSource.DataSet; frmFieldMapper.ResDS := FlexDS.ResourceDataSource.DataSet;
if FlexDS.EventsDataSource <> nil then if FlexDS.EventsDataSource <> nil then
frmFieldMapper.EventsDS := FlexDS.EventsDataSource.DataSet; frmFieldMapper.EventsDS := FlexDS.EventsDataSource.DataSet;
if FlexDS.ContactsDataSource <> nil then if FlexDS.ContactsDataSource <> nil then
frmFieldMapper.ContactsDS := FlexDS.ContactsDataSource.DataSet; frmFieldMapper.ContactsDS := FlexDS.ContactsDataSource.DataSet;
if FlexDS.TasksDataSource <> nil then if FlexDS.TasksDataSource <> nil then
frmFieldMapper.TasksDS := FlexDS.TasksDataSource.DataSet; frmFieldMapper.TasksDS := FlexDS.TasksDataSource.DataSet;
frmFieldMapper.ShowModal; frmFieldMapper.ShowModal;
finally finally
frmFieldMapper.release; frmFieldMapper.Release;
end; end;
Designer.Modified; Designer.Modified;
end; end;
@ -191,19 +192,19 @@ end;
{*** TVpNavBarEditor ***} {*** TVpNavBarEditor ***}
procedure TVpFlexDSEditor.ExecuteVerb(Index : Integer); procedure TVpFlexDSEditor.ExecuteVerb(Index: Integer);
begin begin
if Index = 0 then if Index = 0 then
MapDatabaseFields(Designer, (Component as TVpFlexDataStore)); MapDatabaseFields(Designer, (Component as TVpFlexDataStore));
end; end;
function TVpFlexDSEditor.GetVerb(Index : Integer) : string; function TVpFlexDSEditor.GetVerb(Index: Integer): string;
begin begin
if Index = 0 then if Index = 0 then
Result := 'Map Database Fields...'; Result := 'Map Database Fields...';
end; end;
function TVpFlexDSEditor.GetVerbCount : Integer; function TVpFlexDSEditor.GetVerbCount: Integer;
begin begin
Result := 1; Result := 1;
end; end;
@ -212,6 +213,8 @@ end;
procedure TfrmFieldMapper.FormShow(Sender: TObject); procedure TfrmFieldMapper.FormShow(Sender: TObject);
begin begin
PositionControls;
DatasetCombo.Items.Clear; DatasetCombo.Items.Clear;
DatasetCombo.Text := ''; DatasetCombo.Text := '';
@ -306,6 +309,31 @@ begin
end; end;
{=====} {=====}
procedure TfrmFieldMapper.PositionControls;
var
DELTA: Integer = 8;
w: Integer;
begin
DELTA := ScaleX(DELTA, DesignTimeDPI);
DataSetCombo.Left := lblDataset.Left + GetLabelWidth(lblDataset) + DELTA;
btnDeleteMapping.Width := GetButtonWidth(btnDeleteMapping);
w := FieldMappingsLB.Width + DELTA + btnDeleteMapping.Width;
if w > ClientWidth then begin
ClientWidth := w;
DatasetFieldLB.Width := (ClientWidth - DatasetFieldLB.Left *2 - btnAddMapping.Width - 2*DELTA) div 2;
VPFieldLB.Width := DatasetFieldLB.Width;
DatasetFieldLB.Left := (w - DatasetFieldLB.Width - 2*DELTA - btnAddMapping.Width - VPFieldLB.Width) div 2;
FieldMappingsLB.Left := DatasetFieldLB.Left;
lblFieldMappings.Left := FieldMappingsLB.Left;
btnDeleteMapping.Left := ClientWidth - DatasetFieldLB.Left - btnDeleteMapping.Width;
btnClearMappings.Left := btnDeleteMapping.Left;
btnClose.Left := w - DatasetFieldLB.Width - btnClose.Width;
end;
lblVPFieldsAvail.Left := RightOf(VPFieldLB) - GetLabelWidth(lblVPFieldsAvail);
end;
procedure TfrmFieldMapper.DatasetComboChange(Sender: TObject); procedure TfrmFieldMapper.DatasetComboChange(Sender: TObject);
begin begin
SyncObjects; SyncObjects;
@ -529,7 +557,7 @@ begin
end; end;
{=====} {=====}
procedure TfrmFieldMapper.Button2Click(Sender: TObject); procedure TfrmFieldMapper.BtnCloseClick(Sender: TObject);
begin begin
Close; Close;
end; end;