Ich kommentiere mal das Beispiel von DeddyH
Delphi-Quellcode:
type
(* Mögliche Stati *)
TLEDState = (lsOff, lsActive, lsInactive);
TLED = class(TGraphicControl)
private
FState: TLEDState;
procedure SetState(const Value: TLEDState);
protected
// Überschreiben der Zeichen-Methode
procedure Paint; override;
published
// Eigenschaft für den Status
property State: TLEDState read FState write SetState;
end;
procedure TLED.Paint;
var
LEDColor: TColor;
begin
inherited;
// Abhängig vom Status die Zeichenfarbe festlegen
case FState of
lsActive:
LEDColor := clGreen;
lsInactive:
LEDColor := clRed;
else
LEDColor := clGray;
end;
// Zeichnen
// Hintergrundfarbe festlegen
Canvas.Brush.Color := LEDColor;
// Eine Ellipse zeichnen
Canvas.Ellipse( 0, 0, ClientWidth, ClientHeight );
end;
procedure TLED.SetState(const Value: TLEDState);
begin
// Ist der neue Wert ungleich dem aktuellen
if FState <> Value then
// dann
begin
// diesen neuen Wert speichern
FState := Value;
// und diese Komponente zum Neuzeichnen vormerken
Invalidate;
end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)