unit fODRadConShRes;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
  Buttons, ORCtrls, ORfn, ExtCtrls;

type
  TfrmODRadConShRes = class(TForm)
    cmdOK: TButton;
    cmdCancel: TButton;
    cboSource: TORComboBox;
    SrcLabel: TLabel;
    pnlBase: TORAutoPanel;
    txtResearch: TCaptionEdit;
    procedure cmdOKClick(Sender: TObject);
    procedure cmdCancelClick(Sender: TObject);
  private
    FSource: string  ;
    FChanged: Boolean;
  end;

procedure SelectSource(FontSize: Integer; SrcType: char; var Source: string) ;

implementation

{$R *.DFM}

uses rODRad, rCore, uCore;

const
  TX_CS_TEXT = 'Select Source, or press Cancel.';
  TX_CS_CAP = 'No Source';
  TX_R_TEXT = 'Enter Source (3-40 characters), or press Cancel.';
  TX_R_CAP = 'No Source';

procedure SelectSource(FontSize: Integer; SrcType: char; var Source: string) ;
{ displays Source entry/selection form and returns a record of the selection }
var
  frmODRadConShRes: TfrmODRadConShRes;
  W, H: Integer;
begin
  frmODRadConShRes := TfrmODRadConShRes.Create(Application);
  try
    with frmODRadConShRes do
    begin
      Font.Size := FontSize;
      W := ClientWidth;
      H := ClientHeight;
      ResizeToFont(FontSize, W, H);
      ClientWidth  := W; pnlBase.Width  := W;
      ClientHeight := H; pnlBase.Height := H;
      FChanged := False;
      if SrcType in ['C','S'] then with cboSource do
         begin
           Items.Assign(SubsetOfRadSources(SrcType));
           if Items.Count > 0 then
            begin
             txtResearch.Enabled := False;
             Enabled := True;
             SelectByID(Piece(Source,U,1));
             BringToFront;
             ShowModal;
            end
           {else if Items.Count = 1 then
             FSource := Items[0]}
           else
             FSource := '-1';
         end
      else if SrcType = 'R' then
        begin
          cboSource.Enabled := False;
          txtResearch.BringToFront;
          txtResearch.Text := Source;
          ShowModal;
          FSource := txtResearch.Text;
        end;
      Source:= FSource ;
    end; {frmODRadConShRes}
  finally
    frmODRadConShRes.Release;
  end;
end;

procedure TfrmODRadConShRes.cmdCancelClick(Sender: TObject);
begin
  FChanged := False ;
  FSource := '';
  Close;
end;

procedure TfrmODRadConShRes.cmdOKClick(Sender: TObject);
begin
 if cboSource.Enabled then with cboSource do
  begin
   if ItemIEN = 0 then
    begin
     InfoBox(TX_CS_TEXT, TX_CS_CAP, MB_OK or MB_ICONWARNING);
     FChanged := False ;
     FSource := '';
     Exit;
    end;
   FChanged := True;
   FSource := Items[ItemIndex];
  end
 else
  begin
   if (Length(txtResearch.Text)<3) or (Length(txtResearch.Text)> 40) then
    begin
     InfoBox(TX_R_TEXT, TX_R_CAP, MB_OK or MB_ICONWARNING);
     FChanged := False ;
     FSource := '';
     Exit;
    end ;
   FChanged := True;
   FSource := txtResearch.Text;
  end;
 Close;
end;

end.
