Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: -fixed- Panel überladen und anzeigen

  Alt 10. Dez 2012, 02:26
Soweit funktioniert auch alles, jetzt geht es daran die Sache Grafisch darzustellen:
Dazu habe ich eine Klasse von TPanel abgeleitet die ich jetzt immer mit neuen Panels als Scheiben befüllen will.
Warum leitest du von einem Panel ab?
Das ist doch unflexibel und umständlich.

Stattdessen nimmt man eine ganz normale Klasse:
Delphi-Quellcode:
  TVisTower = class(TObject)
  private
    FContainer : TWinControl;

  protected
    procedure MaleTurm(ATower: TTower);
  public
    constructor Create(AContainer:TWinControl);
  published

  end;
und übergibt einen "Container".
Das könnte ein Panel, eine Groupbox oder ein Formular sein.
Kurz gesagt, jedes Control, dass andere Controls aufnehmen kann ist als Basis geeignet.
Auf diesem Container werden nun die farbigen Panels, die die Scheiben darstellen erzeugt.
Delphi-Quellcode:
  while not ATower.IsEmpty do
  begin
    schicht := TPanel.Create(FContainer);
    schicht.Anchors := [akBottom];
    schicht.Width := FContainer.Width - (i * 4);
    schicht.Left := 2;
    schicht.Height := 10;
    schicht.Top := i * schicht.Height;
    if ((i mod 2) = 0) then
       schicht.Color := clRed
    else
       schicht.Color := clGreen;

    schicht.Caption:= IntToStr(ATower.Get);
    // Diese Zuweisung macht das neu erzeugte Panel erst sichtbar!
    schicht.Parent := FContainer;
    inc(i);
  end;

Geändert von sx2008 (10. Dez 2012 um 02:37 Uhr)
  Mit Zitat antworten Zitat