Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Was überschreiben beim TEdit? (https://www.delphipraxis.net/93396-ueberschreiben-beim-tedit.html)

guidobrose 5. Jun 2007 09:43


Was überschreiben beim TEdit?
 
Hallo,

ich habe mal wieder etwas ganz banales für euch...

Ich schreibe mir eine kleine Erweiterung für TEdit (Angehängtes Label mit ein paar optischen Verschönerungen). Um das Ganze jetzt perfekt zu machen, hätte ich gerne noch das erstens abhängig von Edit.Enabled das Label die Farbe ändert und zweitens wenn Edit.Focused die Farbe des Editfeldes geändert wird. Im Prinzip recht einfach, wenn man weiß, welche Methoden man überschreiben muss. Aber welche?

Delphi-Quellcode:
  TXTEdit = class(TEdit)
  private
    FLabeled: Boolean;
    FCaption: TCaption;
    FLabel: TXTEditLabel;
    procedure SetLabeled(Value: Boolean);
    procedure SetCaption(Value: TCaption);
  public
    constructor Create(AOwner: TComponent; AParent: TWinControl);
    property Labeled: Boolean read FLabeled write SetLabeled;
    property Caption: TCaption read FCaption write SetCaption;

  end;

SirThornberry 5. Jun 2007 10:09

Re: Was überschreiben beim TEdit?
 
Welche Delphiversion hast du? Hast du schon den Quelltext von TCustomEdit angeschaut?

guidobrose 5. Jun 2007 10:29

Re: Was überschreiben beim TEdit?
 
Ich verwende Turbo Delphi Explorer, die Komponente wird also nicht visuell...

Ich habe mir die Deklarationen schon mal angeschaut. Wäre DoEnter und DoExit von TWinControl evtl. die richtige Stelle für die Farbänderung solbald das Edit den Focus bekommt?

SirThornberry 5. Jun 2007 11:03

Re: Was überschreiben beim TEdit?
 
ich könnte jetzt ja oder nein sagen aber das würde dir nur in dem Fall helfen.
1.) Hier eine Herangehensweise an das ganze. Schalte in den Projektoptionen DebugDCUs an.
2.) weise einem Edit ein OnEnter zu und setze darin einen Haltepunkt.
3.) Starte das Programm, entere das Edit und das Programm sollte am Haltepunkt stehen bleiben
4.) Schau dir den Call-Stack an (View->Debug Windows->Call Stack). Prüfe welche von den dortigen Methoden virtuell/dynamic sind und überschrieben werden können.

Resultat für deinen Fall: DoEnter sollte die Methode sein welche du gesucht hast.

guidobrose 5. Jun 2007 11:13

Re: Was überschreiben beim TEdit?
 
Danke für die dezenten Hinweise (ehrlich)!

Ich habe es mit DoEnter versucht, hat aber leider nicht hingehauen. Jetzt habe ich es mit CMEnter versucht und es klappt. CMEnabledChanged habe ich dabei auch gleich entdeckt und damit alle meine Probleme erschlagen.

Guido


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:54 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