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/)
-   -   Eigenes Edit (https://www.delphipraxis.net/165361-eigenes-edit.html)

mb1996 26. Dez 2011 15:56

Eigenes Edit
 
Hi Leute,
ich bin gerade dabei ein eigenes Edit zu entwickeln. Nun stehte ich aber vor einem Problem. Ich möchte gerne die Farbe ändern, wenn das Edit wirklich notwendig ist.
Nun kommt aber leider schon ein Fehler.


Delphi-Quellcode:
[...]
  public
   constructor Create(AOwner: TComponent); override;
   procedure RequiredRefresh;
[...]

constructor TEEdit.Create(AOwner: TComponent);
begin
  RequiredRefresh;
end;

procedure TEEdit.RequiredRefresh;
begin
  if FRequired=True then TEEdit.Color:=$004080FF;  <---Fehler
end;
Der Fehler: E2233 Auf Eigenschaft 'Color' kann hier nicht zugegriffen werden


Wie kann ich diesen Fehler beheben?

Daniel 26. Dez 2011 16:03

AW: Eigenes Edit
 
Jo. "TEEdit.Color" wäre ein Zugriff auf eine Klassen-Variable. Du möchtest aber - wenn ich das richtig verstehe - die Farbe einer einzelnen Instanz ändern. Das wäre dann wohl "self.Color".

Wenn Du Dich in der Richtung weiter schlau machen magst, dann ist das Stichwort "Klassenvariable" für Dich relevant.

mb1996 26. Dez 2011 16:30

AW: Eigenes Edit
 
Dann kommt aber immer ein Fehler, wenn ich das Edit auf mein Formular ziehen möchte. Ich kann es aber installieren.
:?

Daniel 26. Dez 2011 16:36

AW: Eigenes Edit
 
hm. Wenn "ein Fehler" kommt, ist die Sache natürlich klar. Dann kann es nur "eine Ursache" geben, nämlich die, dass ... :gruebel:

So allgemein wüsste ich auch nicht, wo der Fehler liegt. Es ist mir nicht bekannt, dass man in einem abgeleiteten Edit im Konstruktor nicht die Farbe setzen dürfte. Jetzt müsste man tiefer einsteigen: Angefangen mit der Frage, welcher Fehler es konkret ist, der da auftritt, über die Frage, ob Du von einem normalen TEdit ableitest oder von was anderem bis hin zu einem Kompilieren mit Debug-DCUs, dem Ausführen im Einzelschritt und der dann möglicherweise offensichtlichen Antwort auf die Frage, an welcher Stelle der Fehler auftritt.

DeddyH 26. Dez 2011 16:36

AW: Eigenes Edit
 
Wenn Du schon im Konstruktor die Farbe ändern willst, solltest Du zumindest vorher den geerbten Konstruktor aufrufen. Außerdem vergleicht man niemals (!!!) mit true. Und drittens wäre eine Property Required mit entsprechendem Setter vielleicht zielführend.

Daniel 26. Dez 2011 16:38

AW: Eigenes Edit
 
ui - stimmt. In diesem Fall wäre ein Crash-Kurs in Sachen Vererbung und Komponenten-Entwicklung vielleicht angebracht. Ich bin mir sicher, dass man mit 30 Minuten Schmökern in Tutorials locker 2 Stunden an (weniger) Fehlersuche gewinnt.

DeddyH 26. Dez 2011 16:48

AW: Eigenes Edit
 
An dieser Stelle kann man wieder einmal nur dazu raten, die Klassenvervollständigung zu nutzen, dann fügt Delphi freundlicherweise das "inherited" gleich selbst ein.

Sir Rufo 26. Dez 2011 17:36

AW: Eigenes Edit
 
zudem man das setzen der Farbe im Setter der Property Required erledigen sollte und das RequiredRefresh eigentlich eine private/protected Methode ist


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