// Lösungen zu "Richard Kaiser: C++ mit dem Borland C++Builder 2007", ISBN: 978-3-540-69575-2
// Copyright Richard Kaiser, 2007. http://www.rkaiser.de. All rights reserved.
// Diese Quelltexte dürfen in eigenen Programmen verwendet werden, wenn sie einen Hinweis auf die Quelle (die ersten beiden Zeilen) enthalten. In keinem Fall wird eine Haftung für direkte, indirekte, zufällige oder Folgeschäden übernommen, die sich aus der Nutzung ergeben.
// It is permitted to use this source text in programs of your own, provided that it contains a reference to the source (the first two lines above). All liabilities for use of the code are disclaimed.

/*
 Das Makro PACKAGE ist in "include\vcl\sysmac.h" folgendermaßen definiert:
 #define PACKAGE   __declspec(package)  // Implemented in a package
 Klassen, die mit ihm definiert wurden, können in einem Package verwendet
 werden. Dieses Makro ist für die Aufgaben 9.8 notwendig.
*/


// --------------- Aufgabe 4: TValueEdit -------------------

class PACKAGE TValueEdit: public TEdit {
  double FValue;
  int FDecimalPlaces; // engl.; decimal places
  AnsiString FormatString;
  void __fastcall SetDecimalPlaces(int x);
  void __fastcall SetValue(double x);
 __published:
   __property double Value = {read=FValue , write=SetValue};
   __property int DecimalPlaces = {read=FDecimalPlaces , write=SetDecimalPlaces};
 public:
  __fastcall TValueEdit(TForm *Form,int l,int t,int w,int h);
  __fastcall TValueEdit(TComponent* AOwner);
};

// --------------- Aufgabe 5: TColBorderLabel --------------

class PACKAGE TColBorderLabel : public TCustomLabel {
  private:
    TColor FBColor;
    int FBWidth;
    bool FShow;
    TTimer* FTimer;
    int FInterval;
    void __fastcall SetColor(TColor Value);
    void __fastcall SetWidth(int Value);
    void __fastcall SetInterval(int Value);
    void __fastcall Show(bool Value);
    void __fastcall TimerEvent(TObject* Sender);
  protected:
    void __fastcall Paint(); // override;
  public:
   __fastcall TColBorderLabel(TComponent* AOwner,TWinControl* Parent_, int Left_, int Top_, int Width_, int Height_);
   __fastcall TColBorderLabel(TComponent* AOwner);
  __published:
     // eigene properties

    __property TColor BorderColor = {read=FBColor, write=SetColor};
    __property int BorderWidth={read=FBWidth, write=SetWidth};
    __property bool ShowBorder={read=FShow, write=Show};
    __property int BlinkInterval={read=FInterval, write=SetInterval};

 // TControl veröffentlicht nur wenige Eigenschaften; durch
 // die folgenden Deklarationen werden die unsichtbaren
 // Eigenschaften der Vorgänger sichtbar

    __property Align;         __property Alignment;
    __property AutoSize;      __property Caption;
    __property Color;         __property Cursor;
    __property DragCursor;    __property DragMode;
    __property Enabled;       __property FocusControl;
    __property Font;          __property ParentColor;
    __property ParentFont;    __property ParentShowHint;
    __property ShowAccelChar; __property ShowHint;
    __property Transparent;   __property Visible;
    __property WordWrap;

    __property OnClick;       __property OnDblClick;
    __property OnDragDrop;    __property OnDragOver;
    __property OnEndDrag;     __property OnMouseDown;
    __property OnMouseMove;   __property OnMouseUp;
};

