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 Problem mit TControl.Color (https://www.delphipraxis.net/111730-problem-mit-tcontrol-color.html)

Quake 8. Apr 2008 14:48


Problem mit TControl.Color
 
Hallo,

ich habe zwar schon die Suche benutzt aber nichts gefunden.

Ich nutzte Delphi 7.

Warum kann ich einem TControl keine Farbe zuordnen. Ich bekomme die Fehlermeldung "Undefinierter Bezeichner Color". Schaue ich in die Onlinehilfe, ist Color aber eine Eigenschaft von TControl.

Delphi-Quellcode:
var
  x: TControl;
begin
  x.color := clBlue;

DeddyH 8. Apr 2008 14:49

Re: Problem mit TControl.Color
 
Es ist aber eine protected-Eigenschaft.

Quake 8. Apr 2008 15:11

Re: Problem mit TControl.Color
 
In der Hilfe steht :
Delphi-Quellcode:
property Color: TColor
Sind Propertys nicht generel Public?

DeddyH 8. Apr 2008 15:12

Re: Problem mit TControl.Color
 
Nein.

Quake 8. Apr 2008 15:20

Re: Problem mit TControl.Color
 
Danke erstmal :-D

Hast du auch noch für mich einen kleinen Tipp, wie ich die Farbe von einem unbekannten TControl verändern kann? Ich dachte eigendlich folgendes zu machen :
Delphi-Quellcode:
  for i := 0 to MyGroup.ControlCount-1 do
  begin
      MyGroup.Controls[i].Color := clred;
  end;

DeddyH 8. Apr 2008 15:32

Re: Problem mit TControl.Color
 
Evtl. per RTTI?

Sherlock 8. Apr 2008 15:38

Re: Problem mit TControl.Color
 
Zitat:

Zitat von Quake
Danke erstmal :-D

Hast du auch noch für mich einen kleinen Tipp, wie ich die Farbe von einem unbekannten TControl verändern kann? Ich dachte eigendlich folgendes zu machen :
Delphi-Quellcode:
  for i := 0 to MyGroup.ControlCount-1 do
  begin
      MyGroup.Controls[i].Color := clred;
  end;

Ist das überhaupt sinnvoll? Labels sollte man zB eher über label.font.color einfärben.
Vielleicht solltest Du Dir eine Routine machen, die je nach Control einfärbt.
Delphi-Quellcode:
  for i := 0 to MyGroup.ControlCount-1 do
  begin
      if MyGroup.Controls[i] is TLabel then
         TLabel(MyGroup.Controls[i]).Font.Color := clred;
      if MyGroup.Controls[i] is TCheckBox then
         TCheckBox(MyGroup.Controls[i]).Color := clred;
// etc.
  end;

Quake 8. Apr 2008 16:53

Re: Problem mit TControl.Color
 
Mein Beispiel ist auch nur ein Pseudocode. TLabel habe ich schon ausgeklammert. Ich wollte jetzt aber nicht für alle möglichen Controls (Edit, Spin, Checkbox usw.) eine if then Abfrage machen. Das ist mir zu aufwendig :wink: .

shmia 8. Apr 2008 16:56

Re: Problem mit TControl.Color
 
Delphi-Quellcode:
type
  TControlCracker=class(TControl);
var
  x: TControl;
begin
  // der Trick: protected Properties werden so zugänglich
  TControlCracker(x).color := clBlue;

Quake 8. Apr 2008 17:01

Re: Problem mit TControl.Color
 
Ich finde solch eine Methode zwar beknackt und umständlich :wall:, aber vielen Dank so funktioniert es, so werde ich es machen. Also vielen Dank nochmal. :thumb:


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