home *** CD-ROM | disk | FTP | other *** search
- unit DQLinkOp;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, ExtCtrls, Buttons, DQLinkCtrl;
- // StdUtil
-
- type
- TFormDQLinkOption = class(TForm)
- GroupBox1: TGroupBox;
- Label1: TLabel;
- LForm: TLabel;
- Label2: TLabel;
- LTo: TLabel;
- LBLink: TListBox;
- BBOK: TBitBtn;
- BBHelp: TBitBtn;
- CBType: TComboBox;
- Label3: TLabel;
- procedure FormShow(Sender: TObject);
- procedure FormKeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- procedure BBOKClick(Sender: TObject);
- procedure BBHelpClick(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure LBLinkClick(Sender: TObject);
- procedure CBTypeChange(Sender: TObject);
- private
- bType: Boolean;
- Function GetString (LinkPtr: RQueryLinkPtr): String;
- public
- TableLink: TList;
- end;
-
- var
- FormDQLinkOption: TFormDQLinkOption;
-
- implementation
- {$R *.DFM}
- Procedure TFormDQLinkOption.FormCreate(Sender: TObject);
- Begin
- TableLink := nil;
- End;
- Procedure TFormDQLinkOption.FormShow(Sender: TObject);
- Var
- i: Integer;
- St: String;
- LinkPtr: RQueryLinkPtr;
- Begin
- if TableLink = nil Then Exit;
- LBLink.Items.BeginUpdate;
- Try
- For i := 0 To TableLink.Count - 1 Do
- Begin
- LinkPtr := RQueryLinkPtr (TableLink[i]);
- St := GetString (LinkPtr);
- LBLink.Items.Add (St);
- End;
- Finally
- LBLink.Items.EndUpdate;
- End;
- End;
- Procedure TFormDQLinkOption.FormKeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- Begin
- Case Key of
- VK_RETURN: BBOKClick (nil);
- VK_F1: BBHelpClick (nil);
- End;
- End;
- Procedure TFormDQLinkOption.BBOKClick(Sender: TObject);
- Begin
- Close;
- ModalResult := mrOK;
- End;
- Procedure TFormDQLinkOption.BBHelpClick(Sender: TObject);
- Begin
- Beep;
- End;
- Function TFormDQLinkOption.GetString (LinkPtr: RQueryLinkPtr): String;
- Begin
- Result := '';
- Case LinkPtr^.QueryLinkType of
- tltEqual,
- tltGreater,
- tltLess,
- tltGreaterEqual,
- tltLessEqual,
- tltNotEqual:
- Result := LinkPtr^.MAlias + '.' + LinkPtr^.MField;
- End;
- Case LinkPtr^.QueryLinkType of
- tltEqual: Result := Result + ' = ';
- tltGreater: Result := Result + ' > ';
- tltLess: Result := Result + ' < ';
- tltGreaterEqual: Result := Result + ' >= ';
- tltLessEqual: Result := Result + ' <= ';
- tltNotEqual: Result := Result + ' <> ';
- tltLeftOuter: Result := Result + ' LEFT OUTER JOIN ON ';
- tltRightOuter: Result := Result + ' RIGHT OUTER JOIN ON ';
- End;
- Case LinkPtr^.QueryLinkType of
- tltLeftOuter,
- tltRightOuter:
- Begin
- Result := Result + LinkPtr^.MAlias + '.' + LinkPtr^.MField;
- Result := Result + ' = ';
- End;
- End;
- Result := Result + LinkPtr^.DAlias + '.' + LinkPtr^.DField;
- End;
- Procedure TFormDQLinkOption.LBLinkClick(Sender: TObject);
- Var
- LinkPtr: RQueryLinkPtr;
- Begin
- if LBLink.ItemIndex < 0 Then Exit;
- LinkPtr := RQueryLinkPtr (TableLink.Items[LBLink.ItemIndex]);
- LForm.Caption := LinkPtr^.MAlias + '.' + LinkPtr^.MField;
- LTo.Caption := LinkPtr^.DAlias + '.' + LinkPtr^.DField;
- bType := TRUE;
- CBType.ItemIndex := Integer (LinkPtr^.QueryLinkType);
- bType := FALSE;
- End;
- Procedure TFormDQLinkOption.CBTypeChange(Sender: TObject);
- Var
- LinkPtr: RQueryLinkPtr;
- iTemp: Integer;
- Begin
- if bType Then Exit;
- iTemp := LBLink.ItemIndex;
- if iTemp < 0 Then Exit;
-
- LinkPtr := RQueryLinkPtr (TableLink.Items[LBLink.ItemIndex]);
- LinkPtr^.QueryLinkType := TQueryLinkType (CBType.ItemIndex);
- LBLink.Items.Strings[LBLink.ItemIndex] := GetString (LinkPtr);
- LBLink.ItemIndex := iTemp;
- End;
-
- End.
-