  Quick Report Editor

  Copyright (c) 1997 Demidov Andre (andre@lion.tu-chel.ac.ru)
                V1.0

  It is FREEWARE component and must be FREEWARE after
     all your modifications.
  If you modify this component then
     send your modifications to autor, please.

  Install RX library first! (TColorComboBox need for work)
  Remove {$DEFINE QR20} in QREPEDIT.PAS, if you use QR1.0
  Copy files from subdirectory ENG to main directory

Using:
  Replace all TQRLabel, TQRMemo, TQRShape, TQRBand to
    TAQRLabel, TAQRMemo, TAQRShape, TAQRBand in .frm and .pas files

  Place the TAQReditor on report form

  for QR1.0:
    Place the AQRBand with BandType=rbPageHeader on the form if you no have one
    It need for setting top margin.
    Switch Ruler property to qrrCmHV for user comfort

  To edit report at run-time execute
     Form.AQREditor1.EditReport

  It show the form with the menu
    File                    Edit
      Load                    Position and size
      Save                    Properties
      Printer setup           Create
      Preview                    Label
      Page parameters            Shape
      Close                      Memo
                              Delete

  Right mouse button on any control show popup menu
     Position and size
     Properties
     Delete
     To back
     To front

  "Position and size" enable moving and resizing of controls.
  To resize the control pull right bottom angle or
      bottom middle or right middle.
  File name for saving and loading set in the AQREditor
  User can't select file name because he may replace a important file


  Components:

  TAQRLabel is TQRLabel modification
    add properties:
      FieldName:string[32] to output a value by the name
      FieldFormat:string[32] to format output value
      AutoResize:TAutoResizeType to point the action on resizing parent band
            arNoChange - no action
            arChangeSize - change size
            arChangePos - change position

  TAQRMemo is TQRMemo modification
    add properties:
      FieldName:string[32] to output a value by the name
      FieldFormat:string[32] to format output value
      AutoResize:TAutoResizeType to point the action on resizing parent band
            arNoChange - no action
            arChangeSize - change size
            arChangePos - change position
    add method
      function GetTextHeight:integer;
        get height text in memo

  TAQRShape is TQRMemo modification
    add properties:
      AutoResize:TAutoResizeType to point the action on resizing parent band
            arNoChange - no action
            arChangeSize - change size
            arChangePos - change position

  TAQRBand is TQRBand modification
    add properties:
      HeightAutoResize:integer to resize the band and its controls

  TAQREditor must be sole on report
    methods:
      procedure EditReport;
        run the report editor
      procedure LoadReport;
        load the saved report (may execute in OnCreate event of form)
      procedure SetFieldInteger(const FieldName:string; Value:longint);
      procedure SetFieldFloat(const FieldName:string; Value:extended);
      procedure SetFieldString(const FieldName:string; const Value:string);
      procedure SetFieldDateTime(const FieldName:string; Value:TDateTime);
        set new value to all fields (labels and memos) have this FieldName
      procedure SetFieldValue(const FieldName:string;
           ValueType:TFormatValueType; ValuePtr:Pointer);
        common case
          ValueType is fvInteger or fvFloat or fvDateTime or fvString
          ValuePtr  is the pointer to the value
      procedure DefaultFormatValue(const FormatStr:string;
         ValueType:TFormatValueType; ValuePtr:Pointer; var ResultStr:string);
            virtual;
        default procedure to format the value by FormatStr

    properties:
      FileName:string is the name of file contain the report

    events:
      OnPrintPreview:TNotifyEvent run before QickReport.Preview
        you must set field values etc.
      OnCreateMenu:TNotifyEvent run after menu creation for
         your modifications
      OnGetFieldNames:TGetFieldNamesEvent
         TGetFieldNamesEvent = procedure(Sender:TObject; FieldNames:TStrings)
                               of object;
        you must return field names
      OnGetFieldFormats:TGetFieldFormatsEvent
          TGetFieldFormatsEvent = procedure(Sender:TObject;
              const FieldName:string; FieldFormats:TStrings) of object;
        you must return field formats for this field
      OnFormatValue:TFormatValueEvent
          TFormatValueEvent = procedure(Sender:TObject; const FormatStr:string;
                     ValueType:TFormatValueType; ValuePtr:Pointer;
                     var ResultStr:string) of object;
        format the value using FormatStr


