Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Array aus Labeln mit Events

  Alt 3. Nov 2013, 12:07
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)
  Mit Zitat antworten Zitat