179 lines
4.3 KiB
ObjectPascal
179 lines
4.3 KiB
ObjectPascal
|
|
{******************************************}
|
|
{ }
|
|
{ FastReport VCL }
|
|
{ Tab order editor }
|
|
{ }
|
|
{ Copyright (c) 1998-2021 }
|
|
{ by Fast Reports Inc. }
|
|
{ }
|
|
{******************************************}
|
|
|
|
unit frxEditTabOrder;
|
|
|
|
interface
|
|
|
|
{$I frx.inc}
|
|
|
|
uses
|
|
{$IFNDEF FPC}
|
|
Windows, Messages,
|
|
{$ENDIF}
|
|
SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, frxClass, frxBaseForm
|
|
{$IFDEF FPC}
|
|
, LCLType
|
|
{$ENDIF}
|
|
;
|
|
|
|
type
|
|
TfrxTabOrderEditorForm = class(TfrxBaseForm)
|
|
OkB: TButton;
|
|
CancelB: TButton;
|
|
Label1: TLabel;
|
|
UpB: TButton;
|
|
DownB: TButton;
|
|
ControlsLB: TListBox;
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure FormHide(Sender: TObject);
|
|
procedure UpBClick(Sender: TObject);
|
|
procedure DownBClick(Sender: TObject);
|
|
procedure FormKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
private
|
|
FOldOrder: TList;
|
|
FParent: TfrxComponent;
|
|
procedure UpdateOrder;
|
|
public
|
|
constructor Create(AOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
procedure UpdateResouces; override;
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
{$IFDEF FPC}
|
|
{$R *.lfm}
|
|
{$ELSE}
|
|
{$R *.DFM}
|
|
{$ENDIF}
|
|
|
|
uses frxRes;
|
|
|
|
|
|
constructor TfrxTabOrderEditorForm.Create(AOwner: TComponent);
|
|
begin
|
|
inherited;
|
|
FOldOrder := TList.Create;
|
|
end;
|
|
|
|
destructor TfrxTabOrderEditorForm.Destroy;
|
|
begin
|
|
FOldOrder.Free;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrxTabOrderEditorForm.FormCreate(Sender: TObject);
|
|
begin
|
|
if UseRightToLeftAlignment then
|
|
FlipChildren(True);
|
|
end;
|
|
|
|
procedure TfrxTabOrderEditorForm.FormShow(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
l: TList;
|
|
begin
|
|
if TfrxCustomDesigner(Owner).SelectedObjects.Count = 0 then
|
|
FParent := TfrxCustomDesigner(Owner).Page
|
|
else
|
|
FParent := TfrxComponent(TfrxCustomDesigner(Owner).SelectedObjects[0]);
|
|
l := FParent.Objects;
|
|
for i := 0 to l.Count - 1 do
|
|
begin
|
|
FOldOrder.Add(l[i]);
|
|
if (TObject(l[i]) is TfrxDialogControl) and
|
|
(TfrxDialogControl(l[i]).Control is TWinControl) then
|
|
ControlsLB.Items.AddObject(TfrxDialogControl(l[i]).Name + ': ' +
|
|
TfrxDialogControl(l[i]).GetDescription, TObject(l[i]));
|
|
end;
|
|
end;
|
|
|
|
procedure TfrxTabOrderEditorForm.FormHide(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
if ModalResult <> mrOk then
|
|
for i := 0 to FOldOrder.Count - 1 do
|
|
FParent.Objects[i] := FOldOrder[i];
|
|
end;
|
|
|
|
procedure TfrxTabOrderEditorForm.UpdateOrder;
|
|
var
|
|
i: Integer;
|
|
c: TfrxDialogControl;
|
|
begin
|
|
{ TabOrder is self-arranged property, set it to big values to avoid conflicts }
|
|
for i := 0 to ControlsLB.Items.Count - 1 do
|
|
begin
|
|
c := TfrxDialogControl(ControlsLB.Items.Objects[i]);
|
|
TWinControl(c.Control).TabOrder := 1000 + i;
|
|
end;
|
|
{ set to normal values }
|
|
for i := 0 to ControlsLB.Items.Count - 1 do
|
|
begin
|
|
c := TfrxDialogControl(ControlsLB.Items.Objects[i]);
|
|
TWinControl(c.Control).TabOrder := i;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrxTabOrderEditorForm.UpdateResouces;
|
|
begin
|
|
inherited;
|
|
Caption := frxGet(5400);
|
|
Label1.Caption := frxGet(5401);
|
|
OkB.Caption := frxGet(1);
|
|
CancelB.Caption := frxGet(2);
|
|
UpB.Caption := frxGet(5402);
|
|
DownB.Caption := frxGet(5403);
|
|
end;
|
|
|
|
procedure TfrxTabOrderEditorForm.UpBClick(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
i := ControlsLB.ItemIndex;
|
|
if (i = -1) or (i = 0) then Exit;
|
|
|
|
FParent.Objects.Exchange(FParent.Objects.IndexOf(ControlsLB.Items.Objects[i]),
|
|
FParent.Objects.IndexOf(ControlsLB.Items.Objects[i - 1]));
|
|
ControlsLB.Items.Exchange(i, i - 1);
|
|
ControlsLB.ItemIndex := i - 1;
|
|
UpdateOrder;
|
|
end;
|
|
|
|
procedure TfrxTabOrderEditorForm.DownBClick(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
i := ControlsLB.ItemIndex;
|
|
if (i = -1) or (i = ControlsLB.Items.Count - 1) then Exit;
|
|
|
|
FParent.Objects.Exchange(FParent.Objects.IndexOf(ControlsLB.Items.Objects[i]),
|
|
FParent.Objects.IndexOf(ControlsLB.Items.Objects[i + 1]));
|
|
ControlsLB.Items.Exchange(i, i + 1);
|
|
ControlsLB.ItemIndex := i + 1;
|
|
UpdateOrder;
|
|
end;
|
|
|
|
procedure TfrxTabOrderEditorForm.FormKeyDown(Sender: TObject;
|
|
var Key: Word; Shift: TShiftState);
|
|
begin
|
|
if Key = VK_F1 then
|
|
frxResources.Help(Self);
|
|
end;
|
|
|
|
end.
|