Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Positionsaktualisierung von Komponenten wie z.B. TEdit (https://www.delphipraxis.net/150182-positionsaktualisierung-von-komponenten-wie-z-b-tedit.html)

Ookami 9. Apr 2010 13:25


Positionsaktualisierung von Komponenten wie z.B. TEdit
 
Hallo zusammen und speziell an diejenigen, die selbst VCL-Komponenten entwickeln.

Ich tue mir noch schwer, mit der Entwicklung von Komponenten im Allgemeinen. Habe aber inzwischen eine Lektüre gefunden, die mir das Thema einigermaßen verständlich machte.
Jetzt im Moment kämpfe ich noch mit mehreren Problemen herum, wie z.B. einen Font einbinden, usw.
Aber die Frage, die mich im Moment beschäftigt ist die, dass ich mich wundere, dass die Position der Komponente sich beim verschieben nicht ändert. Also genauer gesagt die Positionsangaben wie .Left, .Top und so weiter.
Bei Komponenten wie TEdit, TLabel und den anderen geht das ja automatisch.

Delphi-Quellcode:
type
  TTitleRect = class(TControl)
    Canvas:   TCanvas;
    FFont:        TFont;
  private
    { Private-Deklarationen }
    FFrameStyle:  TFrameStyle;
    FLeft:        Integer;
    FWidth:       Integer;
    FTop:         Integer;
    FHeight:      Integer;
    FFrWidth:     Integer;
    FTitle:       String;
    FBkColor:     TColor;
    FFtColor:     TColor;
    FFrColor:     TColor;
    FShowFrame:   Boolean;
    Procedure SetLeft (Value: Integer);
    Function GetLeft : Integer;
  protected
    { Protected-Deklarationen }
    Rect:     TRect;
  public
    { Public-Deklarationen }
    Constructor Create (aOwner: TComponent); override;
    Destructor Destroy; override;
    Procedure  Draw;
  published
    { Published-Deklarationen }
    property Left: Integer Read FLeft Write FLeft;
    property Width: Integer Read FWidth Write FWidth;
    property Top: Integer Read FTop Write FTop;
    property Height: Integer Read FHeight Write FHeight;
    property FrWidth: Integer Read FFrWidth Write FFrWidth;
    property Font: TFont Read FFont Write FFont;
    property Title: String Read FTitle Write FTitle;
    property BkColor: TColor Write FBkColor;
    property FtColor: TColor Write FFtColor;
    property FrColor: TColor Write FFrColor;
    property ShowFrame: Boolean Write FShowFrame;
    property onClick;
    property onDblClick;
    property onMouseDown;
    property onMouseMove;
    property onMouseUp;
  end;
Es ist nichts besonderes, im eigentlichen Sinne noch weniger als ein TPanel. Es geht mir hier auch einfach nur um das Verständnis.

Gruß an Alle
Wolfgang

himitsu 9. Apr 2010 13:28

Re: Positionsaktualisierung von Komponenten wie z.B. TEdit
 
TControl besitzt doch schon Eigenschaften für Left, Width, Top und Height
und diese werden auch von der VCL genutzt.
Deine eigenen Eigenschaften sind TControl nicht bekannt und werden daher nicht verwendet.

TControl ist der Vorfahre aller VCL-Komponenten und über diesen werden diese Dinge auch geregelt, da die VCL-Steuerung selber keinen dessen Nachfahren direkt kennen kann.

Wenn du die Positionsbestimmung beeinflussen willst, dann mußt du SetBounds überschreiben.

Ookami 9. Apr 2010 13:39

Re: Positionsaktualisierung von Komponenten wie z.B. TEdit
 
Hallo Himitsu,

was du mir damit sagen willst, ist dass ich mich nicht an die Konventionen gehalten habe. Sprich die Parameter, die mir Probleme bereiten sind schon definiert und von mir überschrieben worden und das auch noch falsch.

D.h. für Dummies: Alles was im Vorgänger definiert wurde brauche ich nicht mehr definieren. Und das gilt dann wohl nicht nur für Variable sondern auch für die Properties oder Events u.s.w?

mkinzler 9. Apr 2010 13:44

Re: Positionsaktualisierung von Komponenten wie z.B. TEdit
 
Ja. Das ist das Prinzip der Vererbung

Ookami 9. Apr 2010 13:46

Re: Positionsaktualisierung von Komponenten wie z.B. TEdit
 
Danke Dir, das heißt dann ein langes Wochenende zwischenschalten, um das alles zu verdauen.
Gottseidank habe ich nichts vor. :-D

himitsu 9. Apr 2010 13:51

Re: Positionsaktualisierung von Komponenten wie z.B. TEdit
 
Zitat:

Zitat von mkinzler
Ja. Das ist das Prinzip der Vererbung

Jupp, das was in Vorfahren schon existierst, muß du auch nutzen ... was eigenes Einführen bringt meißt nicht viel, wie du ja siehst.

Wenn eine Methode z.B. schon als VIRTUAL deklariert ist, dann könnte man sie nachträglich noch überschreiben/verändern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz