Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: Mehrere Panel gleichzeitig färben

  Alt 11. Nov 2011, 18:16
Ich würde wahrscheinlich eher über Controls iterieren als über Components. Controls bezieht sich auf Parent-Beziehung, während Components die Owner-Beziehung auswertet. Aber in meinen Augen ist die eigene Verwaltung über ein Array/eine Liste sowieso die beste Lösung, da man dort gezielt Panels aufnehmen bzw. ausschließen kann.

[edit] Beispiel (ich erzeuge die Panels hier dynamisch, das muss man natürlich nicht, man kann sie auch einzeln den Array-Elementen zuweisen):
Delphi-Quellcode:
const
  PANELCOUNT = 42;
  PANELSPERCOL = 3;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDblClick(Sender: TObject);
  private
    { Private-Deklarationen }
    FPanels: array [1 .. PANELCOUNT] of TPanel;
  public
    { Public-Deklarationen }
  end;

...

procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
  CntRows: integer;
begin
  CntRows := PANELCOUNT div PANELSPERCOL;
  for i := Low(FPanels) to High(FPanels) do
    begin
      FPanels[i] := TPanel.Create(self);
      FPanels[i].Parent := self;
      FPanels[i].ParentBackground := false;
      FPanels[i].Height := ClientHeight div CntRows;
      FPanels[i].Width := ClientWidth div PANELSPERCOL;
      FPanels[i].Left := ClientWidth div PANELSPERCOL * (i mod PANELSPERCOL);
      FPanels[i].Top := ClientHeight div CntRows * (i mod CntRows);
    end;
end;

procedure TForm1.FormDblClick(Sender: TObject);
var
  i: integer;
begin
  for i := Low(FPanels) to High(FPanels) do
    FPanels[i].Color := clRed;
end;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (11. Nov 2011 um 18:22 Uhr)
  Mit Zitat antworten Zitat