Benötigte Zeichenwerkzeuge ermitteln

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Behandlung mehrerer Zeichenobjekte in einer Anwendung

Ein Grafikprogramm muss die Möglichkeit haben, zu erkennen, welche Art von Zeichenwerkzeug (z.B. Linie, Rechteck, Ellipse oder abgerundetes Rechteck) ein Benutzer zu einem bestimmten Zeitpunkt verwenden will.

Sie könnten zu diesem Zweck jedem Werkzeugtyp eine Nummer zuweisen, müssten sich dann jedoch merken, welche Zahl für welches Werkzeug steht. Dies könnten Sie erreichen, indem Sie jeder Zahl einen aussagekräftigen Konstantennamen zuweisen. Im Quelltext könnten Sie dann jedoch nicht unterscheiden, welche Zahlen sich im gültigen Bereich befinden und vom richtigen Typ sind. Delphi bietet jedoch eine Lösung für dieses Problem. Sie können einen Aufzählungstyp deklarieren.

Ein Aufzählungstyp ist eine effektive Möglichkeit, Konstanten sequentielle Werte zuzuweisen. Da es sich außerdem um eine Typdeklaration handelt, können Sie die Typprüfung von Delphi verwenden, um sicherzustellen, dass nur gültige Werte zugewiesen werden.

Um einen Aufzählungstyp zu deklarieren, verwenden Sie das reservierte Wort type, gefolgt von einem Typbezeichner, einem Gleichheitszeichen und (in Klammern eingeschlossen und durch Kommas getrennt) den Bezeichnern für die Werte des Typs.

Der folgende Quelltext deklariert beispielsweise einen Aufzählungstyp für jedes in einer Grafikanwendung vorhandene Zeichenwerkzeug:



 type
 TDrawingTool = (dtLine, dtRectangle, dtEllipse, dtRoundRect);



 typedef enum {dtLine, dtRectangle, dtEllipse, dtRoundRect} TDrawingTool;



Per Konvention beginnen Typbezeichner mit dem Buchstaben T. Eine Gruppe gleichartiger Konstanten (wie in einem Aufzählungstyp) beginnt mit einem Präfix aus zwei Buchstaben (wie dt für "drawing tool").

Die Deklaration des Typs TDrawingTool entspricht der Deklaration einer Gruppe von Konstanten:



 const
   dtLine = 0;
   dtRectangle = 1;
   dtEllipse = 2;
   dtRoundRect = 3;



Der Hauptunterschied besteht darin, dass bei der Deklaration eines Aufzählungstyps den Konstanten nicht nur ein Wert, sondern auch ein Typ zugewiesen wird. Dies ermöglicht die Verwendung der Typprüfung von Delphi und trägt dazu bei, Fehler zu vermeiden. Einer Variablen des Typs TDrawingTool kann nur eine der Konstanten dtLine bis dtRoundRect zugewiesen werden. Jeder Versuch, eine andere Zahl zuzuweisen (auch wenn sie im Bereich 0 bis 3 liegt), wird vom Compiler zurückgewiesen.

Im folgenden Quelltext wird einem Formular ein Feld hinzugefügt, das zum Speichern des aktuellen Zeichenwerkzeugs dient:



 type
 TDrawingTool = (dtLine, dtRectangle, dtEllipse, dtRoundRect);
 TForm1 = class(TForm)
 ...{ Methodendeklarationen }
 public
 Drawing: Boolean;
 Origin, MovePt: TPoint;
 DrawingTool: TDrawingTool; { Feld zum Speichern des aktuellen Werkzeugs }
 end;



 enum TDrawingTool {dtLine, dtRectangle, dtEllipse, dtRoundRect};
 class TForm1 : public TForm
 {
 __published:  // IDE-verwaltete Komponenten
   void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
   TShiftState Shift, int X, int Y);
   void __fastcall FormMouseMove(TObject *Sender, TShiftState Shift, int X,
   int Y);
   void __fastcall FormMouseUp(TObject *Sender, TMouseButton Button,
   TShiftState Shift, int X, int Y);
 private:
 public:
   __fastcall TForm1(TComponent* Owner);
   bool Drawing;  //Feld, das angibt, ob eine Taste gedrückt wurde
   TDrawingTool DrawingTool;  // Feld zum Speichern des aktuellen Werkzeugs
 };



Siehe auch