home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 October
/
Chip_2001-10_cd1.bin
/
zkuste
/
delphi
/
kolekce
/
d6
/
FRCLX.ZIP
/
SOURCE
/
IBX
/
FR_IBXMd.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
2001-07-06
|
4KB
|
169 lines
{******************************************}
{ }
{ FastReport CLX v2.4 - IBX components }
{ Master/detail definition }
{ }
{ Copyright (c) 2000 by EMS }
{ Copyright (c) 1998-2001 by Tzyganenko A. }
{ }
{******************************************}
unit FR_IBXMd;
interface
{$I FR.inc}
uses
Types, SysUtils, Classes, QGraphics, QControls, QForms, QDialogs,
DB, IBTable, QExtCtrls, QStdCtrls, FR_Const;
type
TfrIBXFieldsLinkForm = class(TForm)
DetailL: TListBox;
MasterL: TListBox;
Label1: TLabel;
Label2: TLabel;
AddB: TButton;
JoinL: TListBox;
Label3: TLabel;
ClearB: TButton;
Bevel1: TBevel;
OkB: TButton;
CancelB: TButton;
procedure FormShow(Sender: TObject);
procedure FormHide(Sender: TObject);
procedure ClearBClick(Sender: TObject);
procedure DetailLDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure DetailLClick(Sender: TObject);
procedure MasterLClick(Sender: TObject);
procedure AddBClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FMasterFields, FCurFields: String;
lm, ld: TStringList;
procedure FillLists;
procedure Localize;
public
{ Public declarations }
MasterDS: TDataset;
DetailDS: TIBTable;
end;
implementation
uses FR_Utils;
{$R *.xfm}
procedure TfrIBXFieldsLinkForm.FillLists;
var
i: Integer;
s: String;
begin
MasterL.Items.Assign(lm);
DetailL.Items.Assign(ld);
JoinL.Items.Clear;
i := 1;
while i <= Length(FCurFields) do
begin
s := ExtractFieldName(FCurFields, i);
JoinL.Items.Add(DetailL.Items[0] + ' -> ' + s);
DetailL.Items.Delete(0);
MasterL.Items.Delete(MasterL.Items.IndexOf(s));
end;
AddB.Enabled := False;
end;
procedure TfrIBXFieldsLinkForm.FormShow(Sender: TObject);
var
i: Integer;
begin
Caption := DetailDS.Name + ' -> ' + MasterDS.Name;
lm := TStringList.Create;
ld := TStringList.Create;
FMasterFields := DetailDS.MasterFields;
FCurFields := FMasterFields;
MasterDS.GetFieldNames(lm);
DetailDS.Open;
for i := 0 to DetailDS.IndexFieldCount - 1 do
ld.Add(DetailDS.IndexFields[i].FieldName);
DetailDS.Close;
FillLists;
end;
procedure TfrIBXFieldsLinkForm.FormHide(Sender: TObject);
begin
if ModalResult = mrOk then
DetailDS.MasterFields := FCurFields else
DetailDS.MasterFields := FMasterFields;
ld.Free;
lm.Free;
end;
procedure TfrIBXFieldsLinkForm.ClearBClick(Sender: TObject);
begin
FCurFields := '';
FillLists;
end;
procedure TfrIBXFieldsLinkForm.DetailLDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
with DetailL.Canvas do
begin
if Index > 0 then
Font.Color := clBtnShadow;
FillRect(Rect);
TextOut(Rect.Left + 2, Rect.Top, DetailL.Items[Index]);
end;
end;
procedure TfrIBXFieldsLinkForm.DetailLClick(Sender: TObject);
begin
if DetailL.ItemIndex > 0 then
DetailL.ItemIndex := 0;
if MasterL.ItemIndex <> -1 then
AddB.Enabled := True;
end;
procedure TfrIBXFieldsLinkForm.MasterLClick(Sender: TObject);
begin
if DetailL.ItemIndex <> -1 then
AddB.Enabled := True;
end;
procedure TfrIBXFieldsLinkForm.AddBClick(Sender: TObject);
var s: String;
begin
s := MasterL.Items[MasterL.ItemIndex];
if FCurFields = '' then
FCurFields := s else
FCurFields := FCurFields + ';' + s;
FillLists;
end;
procedure TfrIBXFieldsLinkForm.Localize;
begin
Label1.Caption := S56130;
Label2.Caption := S56131;
Label3.Caption := S56132;
AddB.Caption := S56133;
ClearB.Caption := S56134;
OkB.Caption := (SOk);
CancelB.Caption := (SCancel);
end;
procedure TfrIBXFieldsLinkForm.FormCreate(Sender: TObject);
begin
Localize;
end;
end.