home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2003 February
/
Chip_2003-02_cd1.bin
/
zkuste
/
delphi
/
kompon
/
d34567
/
KADAO77.ZIP
/
MasterDetailFormUnit.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
2001-01-16
|
5KB
|
168 lines
unit MasterDetailFormUnit;
//******************************************************************************
// Delphi Dao Project Version 1.6
// Copyright (c) 2000 by Kiril Antonov
//******************************************************************************
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TMasterDetailForm = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
ListBox1: TListBox;
Button1: TButton;
ListBox2: TListBox;
Label2: TLabel;
Label3: TLabel;
ListBox3: TListBox;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
procedure Button5Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure ListBox2Click(Sender: TObject);
procedure ListBox3Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
Procedure ProcessJoinedFields;
private
{ Private declarations }
public
{ Public declarations }
Function Execute(DetailFields,MasterFields:TStrings;Var JoinedFields:TStrings):Boolean;
end;
var
MasterDetailForm: TMasterDetailForm;
implementation
{$R *.DFM}
Var
JoinedFieldsTemp:TStrings;
procedure TMasterDetailForm.Button5Click(Sender: TObject);
begin
ModalResult:=mrCancel;
end;
procedure TMasterDetailForm.Button4Click(Sender: TObject);
begin
JoinedFieldsTemp.Clear;
JoinedFieldsTemp.AddStrings(ListBox3.Items);
ModalResult:=mrOk;
end;
Procedure TMasterDetailForm.ProcessJoinedFields;
Var
X,I:Integer;
S,MasterField,DetailField:String;
Begin
For X:=0 to ListBox3.Items.Count-1 do
Begin
S := ListBox3.Items[X];
I := Pos(' -> ',S);
if I > 0 Then
Begin
DetailField:=Copy(S,1,I-1);
Delete(S,1,I+Length(' -> ')-1);
MasterField:=S;
ListBox1.Items.Delete(ListBox1.Items.IndexOf(DetailField));
ListBox2.Items.Delete(ListBox2.Items.IndexOf(MasterField));
End;
End;
End;
procedure TMasterDetailForm.ListBox1Click(Sender: TObject);
begin
if (ListBox1.ItemIndex <> -1) And (ListBox2.ItemIndex <> -1) Then Button1.Enabled:=True Else Button1.Enabled:=False;
end;
procedure TMasterDetailForm.ListBox2Click(Sender: TObject);
begin
if (ListBox1.ItemIndex <> -1) And (ListBox2.ItemIndex <> -1) Then Button1.Enabled:=True Else Button1.Enabled:=False;
end;
procedure TMasterDetailForm.ListBox3Click(Sender: TObject);
begin
if (ListBox3.ItemIndex <> -1) Then Button2.Enabled:=True Else Button2.Enabled:=False;
end;
procedure TMasterDetailForm.Button1Click(Sender: TObject);
Var
MI,DI:Integer;
MasterField,DetailField:String;
begin
DI:=ListBox1.ItemIndex;
MI:=ListBox2.ItemIndex;
DetailField:=ListBox1.Items[DI];
MasterField:=ListBox2.Items[MI];
ListBox3.Items.Insert(0,DetailField+' -> '+MasterField);
ListBox1.Items.Delete(DI);
ListBox2.Items.Delete(MI);
Button1.Enabled:=False;
Button3.Enabled:=True;
Button4.Enabled:=True;
end;
procedure TMasterDetailForm.Button2Click(Sender: TObject);
Var
I:Integer;
S,MasterField,DetailField:String;
begin
I:=ListBox3.ItemIndex;
if I = -1 Then Exit;
S:=ListBox3.Items[I];
ListBox3.Items.Delete(I);
I:=Pos(' -> ',S);
if I > 0 Then
Begin
DetailField:=Copy(S,1,I-1);
Delete(S,1,I+Length(' -> ')-1);
MasterField:=S;
ListBox1.Items.Add(DetailField);
ListBox2.Items.Add(MasterField);
End;
Button2.Enabled:=False;
Button4.Enabled:=True;
end;
procedure TMasterDetailForm.Button3Click(Sender: TObject);
begin
Repeat
ListBox3.ItemIndex:=0;
Button2.Click;
Until ListBox3.Items.Count=0;
Button3.Enabled:=False;
Button4.Enabled:=True;
end;
Function TMasterDetailForm.Execute(DetailFields,MasterFields:TStrings;Var JoinedFields:TStrings):Boolean;
Begin
ListBox1.Clear;
ListBox1.Items.AddStrings(DetailFields);
ListBox2.Clear;
ListBox2.Items.AddStrings(MasterFields);
ListBox3.Clear;
ListBox3.Items.AddStrings(JoinedFields);
ProcessJoinedFields;
if JoinedFields.Count > 0 Then Button3.Enabled:=True Else Button3.Enabled:=False;
JoinedFieldsTemp:=TStringList.Create;
JoinedFieldsTemp.SetText(JoinedFields.GetText);
if ShowModal = mrOK Then Result:=True Else Result:=False;
JoinedFields.SetText(JoinedFieldsTemp.GetText);
End;
end.