AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Parent.Color ermitteln bei ParentColor=False

Ein Thema von skyobserver · begonnen am 5. Mai 2016 · letzter Beitrag vom 5. Mai 2016
Antwort Antwort
Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Parent.Color ermitteln bei ParentColor=False

  Alt 5. Mai 2016, 20:17
Gib es eine Möglichkeit die Eigenschaft "Color" des Parent-Objectes
zu ermitteln, wenn "ParentColor" auf False steht?
Ich möchte die eigene Eigenschaft "Color" setzen und trotzdem die
Parent "Color" ermitteln.

FColor ist "private" und die property "Color" bei TWinControl noch
nicht "published...
Die größte Enttäuschung für einen Perfektionisten ist die Realität
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.604 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Parent.Color ermitteln bei ParentColor=False

  Alt 5. Mai 2016, 20:38
Gib es eine Möglichkeit die Eigenschaft "Color" des Parent-Objectes
zu ermitteln, wenn "ParentColor" auf False steht?
Ich möchte die eigene Eigenschaft "Color" setzen und trotzdem die
Parent "Color" ermitteln.

FColor ist "private" und die property "Color" bei TWinControl noch
nicht "published...
Delphi-Quellcode:
type
  TWinControlHack = class(TWinControl)
  end;

function TWinControl_GetColor(_ctl: TWinControl): TColor;
begin
  Result := TWinControlHack(_ctl).Color;
end;
(Untested.)
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Parent.Color ermitteln bei ParentColor=False

  Alt 5. Mai 2016, 21:28
Besten Dank! So funktioniert es!

Es fehlte zwar noch eine Zeile aber der Gedanke ist richtig.
Hier noch mal für alle:

Da die Eigenschaft "Parent" vom Typ TWinControl ist, leiten
wir davon eine neue Klasse TestWinControl ab. In dieser
ändern wir die Sichtbarkeit der Eigenschaft "Color" indem
wir sie vom Bereich "private" nach "public" verschieben:
Code:
  TestWinControl = class(TWinControl)
  public
    property Color;
  end;
Im untergeordneten Object können wir dann auf die Eigenschaft
"Color" des übergeordneten Objects zugreifen, indem wir die
"Parent" Eigenschaft mit der neuen Klasse casten:
Code:
  ParentClr := TestWinControl(Parent).Color;
Die größte Enttäuschung für einen Perfektionisten ist die Realität
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Parent.Color ermitteln bei ParentColor=False

  Alt 5. Mai 2016, 22:27
Zitat:
Es fehlte zwar noch eine Zeile ...
Jain.
Theoretisch Ja, aber praktisch Nein.


Alles in der selben Unit der Deklaration ist wie PUBLIC.
Somit hat man da automatisch auch auf PROTECTED Zugriff.

Aus diesem Grund wurde inzwischen STRICT PRIVATE und STRICT PROTECTED eingeführt.
Inzwischen war es das, mit der "berühmten" Abwärtskompatibilität, somit hätte man das PRIVATE und PROTECTED eigentlich auch reparieren und das "falsche" Verhalten mit neuem Namen implementieren können.
Genauso, wie AnsiSameText plötzlich UNICODE ist, aber WideSameText kein String/UnicodeString und SameText kein UNICODE.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 5. Mai 2016 um 22:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Parent.Color ermitteln bei ParentColor=False

  Alt 5. Mai 2016, 22:38
TWinControl ist aber nicht in meiner Unit deklariert und
ich nehme keine Änderungen an den VCL Units vor!

Ich muss die Hilfsklasse also in meinen Units deklarieren
von wo aus ich keinen Zugriff auf "FColor" oder "Color" habe...

Außerdem hätte dann nur die Hilfklasse den Zugriff auf die
"protected" Eigenschaften und für jede andere andere Unit
wären sie wieder unsichtbar!

Der Code ist getestet und funktioniert!
Die größte Enttäuschung für einen Perfektionisten ist die Realität

Geändert von skyobserver ( 5. Mai 2016 um 22:56 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 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