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

View File

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