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 >
Pascal/Delphi Source File  |  2001-01-16  |  5KB  |  168 lines

  1. unit MasterDetailFormUnit;
  2. //******************************************************************************
  3. //                    Delphi Dao Project Version 1.6
  4. //                 Copyright (c) 2000 by Kiril Antonov
  5. //******************************************************************************
  6.  
  7. interface
  8.                           
  9. uses                                          
  10.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  11.   StdCtrls;
  12.  
  13. type
  14.   TMasterDetailForm = class(TForm)
  15.     GroupBox1: TGroupBox;
  16.     Label1: TLabel;
  17.     ListBox1: TListBox;
  18.     Button1: TButton;
  19.     ListBox2: TListBox;
  20.     Label2: TLabel;
  21.     Label3: TLabel;
  22.     ListBox3: TListBox;
  23.     Button2: TButton;
  24.     Button3: TButton;
  25.     Button4: TButton;
  26.     Button5: TButton;
  27.     procedure Button5Click(Sender: TObject);
  28.     procedure Button4Click(Sender: TObject);
  29.     procedure ListBox1Click(Sender: TObject);
  30.     procedure ListBox2Click(Sender: TObject);
  31.     procedure ListBox3Click(Sender: TObject);
  32.     procedure Button3Click(Sender: TObject);
  33.     procedure Button1Click(Sender: TObject);
  34.     procedure Button2Click(Sender: TObject);
  35.     Procedure ProcessJoinedFields;
  36.   private
  37.     { Private declarations }
  38.   public
  39.     { Public declarations }
  40.     Function Execute(DetailFields,MasterFields:TStrings;Var JoinedFields:TStrings):Boolean;
  41.   end;
  42.  
  43. var
  44.   MasterDetailForm: TMasterDetailForm;
  45.  
  46. implementation
  47. {$R *.DFM}
  48.  Var
  49.    JoinedFieldsTemp:TStrings;
  50.  
  51. procedure TMasterDetailForm.Button5Click(Sender: TObject);
  52. begin
  53.  ModalResult:=mrCancel;
  54. end;
  55.  
  56. procedure TMasterDetailForm.Button4Click(Sender: TObject);
  57. begin
  58.  JoinedFieldsTemp.Clear;
  59.  JoinedFieldsTemp.AddStrings(ListBox3.Items);
  60.  ModalResult:=mrOk;
  61. end;
  62.  
  63. Procedure TMasterDetailForm.ProcessJoinedFields;
  64.  Var
  65.   X,I:Integer;
  66.   S,MasterField,DetailField:String;
  67. Begin
  68.   For X:=0 to ListBox3.Items.Count-1 do                     
  69.       Begin
  70.         S := ListBox3.Items[X];
  71.         I := Pos(' -> ',S);
  72.         if I > 0 Then
  73.         Begin
  74.          DetailField:=Copy(S,1,I-1);
  75.          Delete(S,1,I+Length(' -> ')-1);
  76.          MasterField:=S;
  77.          ListBox1.Items.Delete(ListBox1.Items.IndexOf(DetailField));
  78.          ListBox2.Items.Delete(ListBox2.Items.IndexOf(MasterField));
  79.         End;
  80.       End;
  81. End;
  82.  
  83. procedure TMasterDetailForm.ListBox1Click(Sender: TObject);
  84. begin
  85.  if (ListBox1.ItemIndex <> -1) And (ListBox2.ItemIndex <> -1) Then Button1.Enabled:=True Else Button1.Enabled:=False;
  86. end;
  87.  
  88. procedure TMasterDetailForm.ListBox2Click(Sender: TObject);
  89. begin
  90.  if (ListBox1.ItemIndex <> -1) And (ListBox2.ItemIndex <> -1) Then Button1.Enabled:=True Else Button1.Enabled:=False;
  91. end;
  92.  
  93. procedure TMasterDetailForm.ListBox3Click(Sender: TObject);
  94. begin
  95.  if (ListBox3.ItemIndex <> -1) Then Button2.Enabled:=True Else Button2.Enabled:=False;
  96. end;
  97.  
  98.  
  99. procedure TMasterDetailForm.Button1Click(Sender: TObject);
  100. Var
  101.   MI,DI:Integer;
  102.   MasterField,DetailField:String;
  103. begin
  104.   DI:=ListBox1.ItemIndex;
  105.   MI:=ListBox2.ItemIndex;
  106.   DetailField:=ListBox1.Items[DI];
  107.   MasterField:=ListBox2.Items[MI];
  108.   ListBox3.Items.Insert(0,DetailField+' -> '+MasterField);
  109.   ListBox1.Items.Delete(DI);
  110.   ListBox2.Items.Delete(MI);
  111.   Button1.Enabled:=False;
  112.   Button3.Enabled:=True;
  113.   Button4.Enabled:=True;
  114. end;
  115.  
  116. procedure TMasterDetailForm.Button2Click(Sender: TObject);
  117. Var
  118.     I:Integer;
  119.     S,MasterField,DetailField:String;
  120. begin
  121.     I:=ListBox3.ItemIndex;
  122.     if I = -1 Then Exit;
  123.     S:=ListBox3.Items[I];
  124.     ListBox3.Items.Delete(I);
  125.     I:=Pos(' -> ',S);
  126.     if I > 0 Then
  127.        Begin
  128.          DetailField:=Copy(S,1,I-1);
  129.          Delete(S,1,I+Length(' -> ')-1);
  130.          MasterField:=S;
  131.          ListBox1.Items.Add(DetailField);
  132.          ListBox2.Items.Add(MasterField);
  133.        End;
  134.     Button2.Enabled:=False;
  135.     Button4.Enabled:=True;
  136. end;
  137.                                                     
  138. procedure TMasterDetailForm.Button3Click(Sender: TObject);
  139. begin
  140.   Repeat
  141.     ListBox3.ItemIndex:=0;
  142.     Button2.Click;
  143.   Until ListBox3.Items.Count=0;
  144.   Button3.Enabled:=False;
  145.   Button4.Enabled:=True;
  146. end;
  147.  
  148. Function TMasterDetailForm.Execute(DetailFields,MasterFields:TStrings;Var JoinedFields:TStrings):Boolean;
  149. Begin
  150.  ListBox1.Clear;
  151.  ListBox1.Items.AddStrings(DetailFields);
  152.  
  153.  ListBox2.Clear;
  154.  ListBox2.Items.AddStrings(MasterFields);
  155.  
  156.  ListBox3.Clear;
  157.  ListBox3.Items.AddStrings(JoinedFields);
  158.  ProcessJoinedFields;
  159.  if JoinedFields.Count > 0 Then Button3.Enabled:=True Else Button3.Enabled:=False;
  160.  JoinedFieldsTemp:=TStringList.Create;
  161.  JoinedFieldsTemp.SetText(JoinedFields.GetText);
  162.  if ShowModal = mrOK Then Result:=True Else Result:=False;
  163.  JoinedFields.SetText(JoinedFieldsTemp.GetText);
  164. End;
  165.  
  166.  
  167. end.
  168.