222 lines
5.2 KiB
ObjectPascal
222 lines
5.2 KiB
ObjectPascal
|
|
{******************************************}
|
|
{ }
|
|
{ FastReport VCL }
|
|
{ Aliases editor }
|
|
{ }
|
|
{ Copyright (c) 1998-2021 }
|
|
{ by Fast Reports Inc. }
|
|
{ }
|
|
{******************************************}
|
|
|
|
unit frxEditAliases;
|
|
|
|
interface
|
|
|
|
{$I frx.inc}
|
|
|
|
uses
|
|
{$IFNDEF FPC}
|
|
Windows, Messages,
|
|
{$ENDIF}
|
|
SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, ComCtrls, frxClass, frxBaseForm
|
|
{$IFDEF FPC}
|
|
, LResources, LCLType
|
|
{$ENDIF}
|
|
{$IFDEF Delphi6}
|
|
, Variants
|
|
{$ENDIF};
|
|
|
|
|
|
type
|
|
TfrxAliasesEditorForm = class(TfrxBaseForm)
|
|
AliasesLV: TListView;
|
|
OkB: TButton;
|
|
CancelB: TButton;
|
|
ResetB: TButton;
|
|
HintL: TLabel;
|
|
DSAliasL: TLabel;
|
|
DSAliasE: TEdit;
|
|
FieldAliasesL: TLabel;
|
|
UpdateB: TButton;
|
|
procedure FormHide(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure ResetBClick(Sender: TObject);
|
|
procedure AliasesLVKeyPress(Sender: TObject; var Key: Char);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure UpdateBClick(Sender: TObject);
|
|
procedure FormKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
procedure AliasesLVEdited(Sender: TObject; Item: TListItem;
|
|
var S: String);
|
|
private
|
|
FDataSet: TfrxCustomDBDataset;
|
|
procedure BuildAliasList(List: TStrings);
|
|
public
|
|
procedure UpdateResouces; override;
|
|
property DataSet: TfrxCustomDBDataset read FDataSet write FDataSet;
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
{$IFNDEF FPC}
|
|
{$R *.DFM}
|
|
{$ELSE}
|
|
{$R *.lfm}
|
|
{$ENDIF}
|
|
|
|
uses frxRes;
|
|
|
|
|
|
procedure TfrxAliasesEditorForm.BuildAliasList(List: TStrings);
|
|
var
|
|
i: Integer;
|
|
Item: TListItem;
|
|
s: String;
|
|
begin
|
|
AliasesLV.Items.Clear;
|
|
for i := 0 to List.Count - 1 do
|
|
begin
|
|
s := List.Names[i];
|
|
Item := AliasesLV.Items.Add;
|
|
Item.Caption := List.Values[s];
|
|
if s[1] = '-' then { field is disabled }
|
|
s := Copy(s, 2, 255) else
|
|
Item.Checked := True;
|
|
Item.SubItems.Add(s);
|
|
end;
|
|
if AliasesLV.Items.Count <> 0 then
|
|
AliasesLV.Selected := AliasesLV.Items[0];
|
|
end;
|
|
|
|
procedure TfrxAliasesEditorForm.FormShow(Sender: TObject);
|
|
begin
|
|
DSAliasE.Text := FDataSet.UserName;
|
|
BuildAliasList(FDataSet.FieldAliases);
|
|
if FDataSet.FieldAliases.Count = 0 then
|
|
ResetBClick(nil);
|
|
end;
|
|
|
|
procedure TfrxAliasesEditorForm.FormHide(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
s: String;
|
|
begin
|
|
if ModalResult = mrOk then
|
|
begin
|
|
FDataSet.UserName := DSAliasE.Text;
|
|
FDataSet.FieldAliases.Clear;
|
|
for i := 0 to AliasesLV.Items.Count - 1 do
|
|
begin
|
|
s := AliasesLV.Items[i].SubItems[0];
|
|
if not AliasesLV.Items[i].Checked then { disable the field }
|
|
s := '-' + s;
|
|
FDataSet.FieldAliases.Add(s + '=' + AliasesLV.Items[i].Caption);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrxAliasesEditorForm.ResetBClick(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
l1, l2: TStrings;
|
|
begin
|
|
l1 := TStringList.Create;
|
|
l2 := TStringList.Create;
|
|
l1.Assign(FDataSet.FieldAliases);
|
|
{ clear aliases to get real field names }
|
|
FDataSet.FieldAliases.Clear;
|
|
FDataSet.GetFieldList(l2);
|
|
{ set aliases back }
|
|
FDataSet.FieldAliases.Assign(l1);
|
|
l1.Free;
|
|
|
|
for i := 0 to l2.Count - 1 do
|
|
l2[i] := l2[i] + '=' + l2[i];
|
|
|
|
BuildAliasList(l2);
|
|
l2.Free;
|
|
end;
|
|
|
|
procedure TfrxAliasesEditorForm.UpdateBClick(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
l1, l2: TStrings;
|
|
begin
|
|
l1 := TStringList.Create;
|
|
l2 := TStringList.Create;
|
|
l1.Assign(FDataSet.FieldAliases);
|
|
try
|
|
{ clear aliases to get real field names }
|
|
FDataSet.FieldAliases.Clear;
|
|
FDataSet.GetFieldList(l2);
|
|
finally
|
|
{ set aliases back }
|
|
FDataSet.FieldAliases.Assign(l1);
|
|
end;
|
|
|
|
for i := 0 to l2.Count - 1 do
|
|
if l1.IndexOfName(l2[i]) = -1 then
|
|
l2[i] := l2[i] + '=' + l2[i]
|
|
else
|
|
l2[i] := l2[i] + '=' + l1.Values[l2[i]];
|
|
|
|
BuildAliasList(l2);
|
|
l1.Free;
|
|
l2.Free;
|
|
end;
|
|
|
|
procedure TfrxAliasesEditorForm.UpdateResouces;
|
|
begin
|
|
inherited;
|
|
Caption := frxGet(3600);
|
|
HintL.Caption := frxGet(3601);
|
|
DSAliasL.Caption := frxGet(3602);
|
|
FieldAliasesL.Caption := frxGet(3603);
|
|
OkB.Caption := frxGet(1);
|
|
CancelB.Caption := frxGet(2);
|
|
ResetB.Caption := frxGet(3604);
|
|
UpdateB.Caption := frxGet(3605);
|
|
AliasesLV.Columns[0].Caption := frxResources.Get('alUserName');
|
|
AliasesLV.Columns[1].Caption := frxResources.Get('alOriginal');
|
|
end;
|
|
|
|
procedure TfrxAliasesEditorForm.AliasesLVKeyPress(Sender: TObject;
|
|
var Key: Char);
|
|
begin
|
|
{$IFNDEF FPC}
|
|
if (Key = #13) and (AliasesLV.Selected <> nil) then
|
|
AliasesLV.Selected.EditCaption;
|
|
{$ENDIF}
|
|
end;
|
|
|
|
procedure TfrxAliasesEditorForm.FormCreate(Sender: TObject);
|
|
begin
|
|
if UseRightToLeftAlignment then
|
|
FlipChildren(True);
|
|
end;
|
|
|
|
procedure TfrxAliasesEditorForm.FormKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
begin
|
|
if Key = VK_F1 then
|
|
frxResources.Help(Self);
|
|
{$IFNDEF FPC}
|
|
if Key = VK_F2 then
|
|
AliasesLV.Selected.EditCaption;
|
|
{$ENDIF}
|
|
if Key = VK_F5 then
|
|
UpdateBClick(nil);
|
|
end;
|
|
|
|
procedure TfrxAliasesEditorForm.AliasesLVEdited(Sender: TObject;
|
|
Item: TListItem; var S: String);
|
|
begin
|
|
if s = '' then
|
|
s := AliasesLV.Selected.SubItems[0];
|
|
end;
|
|
|
|
end.
|