Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Die Farbe von TLabel mit einem Click ändern ? (https://www.delphipraxis.net/42360-die-farbe-von-tlabel-mit-einem-click-aendern.html)

smart 17. Mär 2005 18:52


Die Farbe von TLabel mit einem Click ändern ?
 
Hallo Alle zusammen!
Ich möchte die Farbe mehrer TLabel auf einer Form mit einem Click ändern und habe mir folgende procedure geschrieben. Leider klappt die Sache nicht. Was mache ich falsch?

Delphi-Quellcode:
procedure TForm1.MyLabel(var Farbe: Integer);
begin
With TLabel do
begin
     Color := Farbe;
     end;
end;


//Aufruf
procedure TForm1.Button1Click(Sender: TObject);
Var
Farbton: Integer;
begin
Farbton := 59233;
MyLabel(Farbton);
end;

malo 17. Mär 2005 19:01

Re: Die Farbe von TLabel mit einem Click ändern ?
 
Versuch mal den Integer-Wert mit Delphi-Referenz durchsuchenIntToColor zu konvertieren ;)

edit: ungetestet!

edit2: Und bist du dir sicher, dass dein Label auf "TLabel" heißt? Eventuell musst du das noch in "Label1" ändern :zwinker:

Pr0g 17. Mär 2005 19:04

Re: Die Farbe von TLabel mit einem Click ändern ?
 
Warum nutzt du nicht direkt TColor? Und das "With...Do" kannst du dir bei einem Befehl auch sparen.

MfG Pr0g

Nils_13 17. Mär 2005 19:06

Re: Die Farbe von TLabel mit einem Click ändern ?
 
@malo: Wieso ? Sie will doch alle Farben ändern :zwinker:

@smart: wenn man ermittelt, wie viele labels es gibt und dann die farben nur noch abändern.

smart 17. Mär 2005 19:14

Re: Die Farbe von TLabel mit einem Click ändern ?
 
Ja, ich habe den Fehler: Instanz-Variable 'Color' in diesem Zusammenhang nicht verfügbar. Viel kann ich mit diesem Fehler leider nicht anfangen.

BenjaminH 17. Mär 2005 19:15

Re: Die Farbe von TLabel mit einem Click ändern ?
 
Versuchs mal so
Delphi-Quellcode:
procedure TForm1.MyLabel(var Farbe: Integer);
Var i:Integer;
begin
  for i:=0 to COmponentCount-1 do
    If Components[i] is TLabel Then
      TLabel(Components[i]).Color := Farbe;
end;

Pr0g 17. Mär 2005 19:20

Re: Die Farbe von TLabel mit einem Click ändern ?
 
Du greifst auch einfach nur auf die Klasse TLabel zu und nicht auf eine spezielle Instanz, das geht natürlich nicht. Schreib folgendes in den private-Abschnitt deiner Form:
Delphi-Quellcode:
  private
    { Private-Deklarationen }
    procedure ChangeLabelColors(const AColor: TColor);
Dann die Implemetierung der Prozedur:
Delphi-Quellcode:
procedure TForm1.ChangeLabelColors(const AColor: TColor);
var
  i: Integer;
begin
  for i := 0 to ComponentCount - 1 do
    if (Components[i] is TLabel) then
      (Components[i] as TLabel).Font.Color := AColor;
end;
Ich habe jetzt mal Font.Color genommen, da du warscheinlich die Schrfitfarbe und nicht die Hintergrundfarbe ändern willst. Aufrufen kannst du das ganze dann so:
Delphi-Quellcode:
ChangeLabelColors(clNavy);
Edit: @BenjaminH: Warum machst den Parameter als "var"?
Edit2: Achso, das war ja oben schon.

MfG Pr0g

smart 17. Mär 2005 19:26

Re: Die Farbe von TLabel mit einem Click ändern ?
 
@BenjaminH und @Pr0g vilen Dank für Euere Mühe. Es klappt beides. Ich hatte vergessen die Komponenten zu zählen, wenn ich dass richtig begriffen habe.

Binärbaum 17. Mär 2005 23:08

Re: Die Farbe von TLabel mit einem Click ändern ?
 
Zitat:

Zitat von Pr0g
Edit: @BenjaminH: Warum machst den Parameter als "var"?
Edit2: Achso, das war ja oben schon.

Das var kann man in dem Fall auch weglassen, da ein Wertparameter auch reicht. Wenn man aber möchte, kann man stattdessen const verwenden.

MfG
Binärbaum

Pr0g 17. Mär 2005 23:54

Re: Die Farbe von TLabel mit einem Click ändern ?
 
Zitat:

Zitat von Binärbaum
Das var kann man in dem Fall auch weglassen, da ein Wertparameter auch reicht. Wenn man aber möchte, kann man stattdessen const verwenden.

Schon klar, habe ich ja oben im Code auch gemacht. Hatte mich nur gewundert , warum er es als "var" hatte (gerade weil es keinen Sinn machte), dann aber gesehen, dass er warscheinlich einfach den Code aus dem ersten Post übernommen hatte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 Uhr.
Seite 1 von 2  1 2      

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