![]() |
Re: Neue Komponente / Properties speichern ?
Zitat:
Zitat:
Gruß, teebee |
Re: Neue Komponente / Properties speichern ?
Zitat:
"To have a control use the same color as its parent control, set ParentColor to true If ParentColor is false the control uses its own Color property." Gruss Hans |
Re: Neue Komponente / Properties speichern ?
Weil mich die Sache interessiert hat, hab ich mal ein bisschen rumprobiert. Hier das Ergebnis:
Delphi-Quellcode:
unit EditEx;
interface uses Windows, Messages, SysUtils, Classes, Controls, StdCtrls, Graphics; type TEditEx = class(TEdit) private FColor: TColor; FCursor: TCursor; FOnlyShow: Boolean; function GetColor: TColor; function GetCursor: TCursor; function IsColorStored: Boolean; function IsCursorStored: Boolean; procedure SetColor(const Value: TColor); procedure SetCursor(const Value: TCursor); procedure SetOnlyShow(const Value: Boolean); published property Color: TColor read GetColor write SetColor stored IsColorStored default clWindow; property Cursor: TCursor read GetCursor write SetCursor stored IsCursorStored default crDefault; property OnlyShow: Boolean read FOnlyShow write SetOnlyShow; end; procedure Register; implementation procedure Register; begin RegisterComponents('Beispiele', [TEditEx]); end; { TEditEx } function TEditEx.GetColor: TColor; begin Result := inherited Color; end; function TEditEx.GetCursor: TCursor; begin Result := inherited Cursor; end; function TEditEx.IsColorStored: Boolean; begin Result := not ParentColor and not OnlyShow; end; function TEditEx.IsCursorStored: Boolean; begin Result := not OnlyShow; end; procedure TEditEx.SetColor(const Value: TColor); begin if not OnlyShow then inherited Color := Value; end; procedure TEditEx.SetCursor(const Value: TCursor); begin if not OnlyShow then inherited Cursor := Value; end; procedure TEditEx.SetOnlyShow(const Value: Boolean); begin if FOnlyShow <> Value then begin FOnlyShow := Value; if OnlyShow then begin FColor := inherited Color; FCursor := inherited Cursor; inherited Color := clBtnFace; inherited Cursor := crArrow; end else begin inherited Color := FColor; inherited Cursor := FCursor; end; end; end; end. |
Re: Neue Komponente / Properties speichern ?
Moin!
Trotzdem gibt ParentColor nicht die Farbe des Parents wieder sondern es stellt nur ein Flag da. Es gibt nur True oder False wieder, aber keinen Farbwert... Und genau das war gemeint - was die Color Eigenschaft abhängig von dem Wert enthält ist die andere Frage... MfG Muetze1 |
Re: Neue Komponente / Properties speichern ?
OK, sorum hast Du natürlich recht...
Was das 'Überschreiben' der privaten Methoden angeht, habe ich mal selber etwas rumprobiert. Man kann auf jeden Fall eine statische private Methode der Basisklasse neu deklarieren. Die neue Methode lässt sich auch von einer abgeleiteten Instanz aufrufen. In Deinem Fall soll aber die neu deklarierte Methode von einer Eigenschaft aufgerufen werden, die sich in der Basisklasse befindet. Das geht leider nicht, es wird die Methode der Basisklasse aufgerufen. Man müsste auch die Eigenschaft neu deklarieren. Dazu wiederum müsste man auch das entsprechende private Feld neu deklarieren. Andere Methoden aus der Basisklasse würden dann aber nicht auf das richtige (neue) Feld zugreifen. Schade, geht also wohl doch nicht :( Gruß, teebee |
Re: Neue Komponente / Properties speichern ?
Zitat:
|
Re: Neue Komponente / Properties speichern ?
Zitat:
Gruß, teebee |
Re: Neue Komponente / Properties speichern ?
Zitat:
|
Re: Neue Komponente / Properties speichern ?
Zitat:
In diesem Fall hier scheint es ja egal zu sein, prinzipiell kann es aber Probleme machen. Gruß, teebee |
Re: Neue Komponente / Properties speichern ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz