📄 frxeditmd.pas
字号:
{******************************************}
{ }
{ FastReport v3.0 }
{ Master-Detail editor }
{ }
{ Copyright (c) 1998-2005 }
{ by Alexander Tzyganenko, }
{ Fast Reports Inc. }
{ }
{******************************************}
unit frxEditMD;
interface
{$I frx.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
frxClass, StdCtrls, ExtCtrls, frxCustomDB
{$IFDEF Delphi6}
, Variants
{$ENDIF};
type
TfrxMDEditorForm = class(TForm)
DetailLB:TListBox;
MasterLB:TListBox;
Label1:TLabel;
Label2:TLabel;
AddB:TButton;
LinksLB:TListBox;
Label3:TLabel;
ClearB:TButton;
OkB:TButton;
CancelB:TButton;
Bevel1:TBevel;
procedure FormShow(Sender:TObject);
procedure FormHide(Sender:TObject);
procedure ClearBClick(Sender:TObject);
procedure DetailLBClick(Sender:TObject);
procedure MasterLBClick(Sender:TObject);
procedure AddBClick(Sender:TObject);
procedure FormCreate(Sender:TObject);
private
FDetailDS:TfrxCustomDataset;
FMasterDS:TfrxCustomDBDataset;
FMasterFields:String;
procedure FillLists;
public
property DataSet:TfrxCustomDataset read FDetailDS write FDetailDS;
end;
implementation
{$R *.DFM}
uses frxUtils, frxRes;
procedure TfrxMDEditorForm.FillLists;
var
i:Integer;
s:String;
sl:TStrings;
begin
FDetailDS.GetFieldList(DetailLB.Items);
FMasterDS.GetFieldList(MasterLB.Items);
LinksLB.Items.Clear;
sl:= TStringList.Create;
frxSetCommaText(FMasterFields, sl);
for i:= 0 to sl.Count-1 do
begin
s:= sl.Names[i];
if DetailLB.Items.IndexOf(s)<>-1 then
DetailLB.Items.Delete(DetailLB.Items.IndexOf(s));
s:= sl.Values[sl.Names[i]];
if MasterLB.Items.IndexOf(s)<>-1 then
MasterLB.Items.Delete(MasterLB.Items.IndexOf(s));
LinksLB.Items.Add(sl[i]);
end;
AddB.Enabled:= False;
sl.Free;
end;
procedure TfrxMDEditorForm.FormShow(Sender:TObject);
begin
FMasterDS:= FDetailDS.Master;
FMasterFields:= FDetailDS.MasterFields;
FillLists;
end;
procedure TfrxMDEditorForm.FormHide(Sender:TObject);
begin
if ModalResult = mrOk then
FDetailDS.MasterFields:= FMasterFields;
end;
procedure TfrxMDEditorForm.ClearBClick(Sender:TObject);
begin
FMasterFields:= '';
FillLists;
end;
procedure TfrxMDEditorForm.DetailLBClick(Sender:TObject);
begin
if MasterLB.ItemIndex<>-1 then
AddB.Enabled:= True;
end;
procedure TfrxMDEditorForm.MasterLBClick(Sender:TObject);
begin
if DetailLB.ItemIndex<>-1 then
AddB.Enabled:= True;
end;
procedure TfrxMDEditorForm.AddBClick(Sender:TObject);
var
s:String;
begin
s:= DetailLB.Items[DetailLB.ItemIndex]+'='+MasterLB.Items[MasterLB.ItemIndex];
if FMasterFields = '' then
FMasterFields:= s else
FMasterFields:= FMasterFields+';'+s;
FillLists;
end;
procedure TfrxMDEditorForm.FormCreate(Sender:TObject);
begin
frxResources.LocalizeForm(Self);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -