unit fODChangeEvtDisp;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  fAutoSz, StdCtrls, ORFn, ExtCtrls, ORCtrls;

type
  TfrmChangeEventDisp = class(TfrmAutoSz)
    lblTop: TMemo;
    pnlTop: TPanel;
    lstCVOrders: TCaptionListBox;
    pnlBottom: TPanel;
    cmdOK: TButton;
    cmdCancel: TButton;
    procedure lstCVOrdersDrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure lstCVOrdersMeasureItem(Control: TWinControl; Index: Integer;
      var AHeight: Integer);
    procedure cmdOKClick(Sender: TObject);
    procedure cmdCancelClick(Sender: TObject);
  private
    FOKPressed: boolean;
  public
    { Public declarations }
  end;

function DispOrdersForEventChange(AnOrderList: TList; ACap: string): boolean;

implementation

{$R *.DFM}
uses rOrders;

function DispOrdersForEventChange(AnOrderList: TList; ACap: string): boolean;
var
  frmChangeEventDisp: TfrmChangeEventDisp;
  i: integer;
  AnOrder: TOrder;
begin
  frmChangeEventDisp := TFrmChangeEventDisp.Create(Application);
  frmChangeEventDisp.lblTop.Text := ACap;
  frmChangeEventDisp.lstCVOrders.Caption := ACap;
  for i := 0 to AnOrderList.Count - 1 do
  begin
    AnOrder := TOrder(AnOrderList[i]);
    frmChangeEventDisp.lstCVOrders.Items.Add(AnOrder.Text);
  end;
  frmChangeEventDisp.ShowModal;
  Result := frmChangeEventDisp.FOKPressed;
end;

procedure TfrmChangeEventDisp.lstCVOrdersDrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  x: string;
  ARect: TRect;
begin
  inherited;
  x := '';
  ARect := Rect;
  with lstCVOrders do
  begin
    Canvas.FillRect(ARect);
    Canvas.Pen.Color := clSilver;
    Canvas.MoveTo(0, ARect.Bottom - 1);
    Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
    if Index < Items.Count then
    begin
      x := Items[Index];
      DrawText(Canvas.handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
    end;
  end;
end;


procedure TfrmChangeEventDisp.lstCVOrdersMeasureItem(Control: TWinControl;
  Index: Integer; var AHeight: Integer);
var
  x:string;
  ARect: TRect;
begin
  inherited;
  AHeight := MainFontHeight + 3;
  with lstCVOrders do if Index < Items.Count then
  begin
    x := Items[index];
    ARect := ItemRect(Index);
    AHeight  := DrawText(Canvas.Handle, PChar(x), Length(x), ARect,
          DT_CALCRECT or DT_LEFT or DT_NOPREFIX or DT_WORDBREAK) + 2;
    if AHeight > 255 then AHeight := 255;
    if AHeight <  13 then AHeight := 13;
  end;
end;

procedure TfrmChangeEventDisp.cmdOKClick(Sender: TObject);
begin
  inherited;
  FOKPressed := True;
  Close;
end;

procedure TfrmChangeEventDisp.cmdCancelClick(Sender: TObject);
begin
  inherited;
  FOKPressed := False;
  Close;
end;

end.
