Das mit dieser zyklischen Farbzuweisung:
Ist der Zyklus für alle Labels oder pro Label?
Hier mal ein Beispiel für alle Labels
Delphi-Quellcode:
type
TForm1 = class( TForm )
...
private
FLabelClickCount : Integer;
FLabels : array[1..4,1..12] of TLabel;
protected
procedure LabelsClick( Sender : TObject );
public
...
end;
var
Form1: TForm1;
procedure TForm1.FormCreate(Sender: TObject);
var
i,j : integer;
LLabel : TLabel;
begin
for i := 1 to 4 do
for j := 1 to 12 do
begin
LLabel := TLabel.Create(Self);
LLabel.Parent := Self;
LLabel.Left := 144+(i-1)*48;
LLabel.Top := 160+(j-1)*48;
LLabel.visible := true;
LLabel.color := clGray;
LLabel.caption := ' ';
LLabel.font.size := 15;
LLabel.OnClick := LabelsClick; // <- Event zuweisen
FLabels[i,j] := LLabel;
end;
end;
procedure TForm1.LabelsClick( Sender : TObject );
const
CLabelColors : array[0..3] of TColor = (clBlack, clBlue, clGreen, clRed);
var
LLabel : TLabel;
begin
// In Sender ist die Referenz zum Label enthalten, also brauchen wir nur casten
LLabel := Sender as TLabel;
// Jeden Klick mitzählen
Inc( FlabelClickCount );
// Abhängig von der Anzahl der Klicks eine Farbe aus dem Zyklus zuweisen
LLabel.Font := CLabelColors[FLabelClickCount mod 4];
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)