FastReport_2022_VCL/LibD28/frxEditAliases.pas
2024-01-01 16:13:08 +01:00

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.