Einzelnen Beitrag anzeigen

Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#1

Problem mit Feld in selbstdefinierter Klasse

  Alt 16. Aug 2004, 02:58
Hi erstmal, bin jetz, obwohl ich schon länger hier lese und auch fast immer gute antworten gefunden hab , auf ein problem gestoßen zu dem ich hier nirgendswo was gefunden hab... (und hab so mal ganz davon abgesehn meinen ersten post hier )

Naja aber zum Problem, ich habe innerhalb einer selbstdefinierten klasse des typs tpanel eine private-deklarierte variable des typs tscrollbox, die wiederum mit weiteren panels gefüllt werden soll, was über den schreibzugriff auf die property PCCount geregelt werden soll
Delphi-Quellcode:
type TPCButtonList = class(TPanel)
  private
    FPCCount: Integer;
    ScrollBox: TScrollBox; // <-- besagtes Feld
    procedure SetPCCount(Count: Word); // <-- prozedur die das füllen regeln soll
  protected
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure SetBounds(ALeft,ATop: Integer); reintroduce;
    property PCCount: Integer read FPCCount write SetPCCount;
  published
  end;
nun funktioniert das auch beim ersten mal soweit ganz gut, im constructor wird die scrollbox initialisiert, ich füll sie beim erstellen mit werten,
Delphi-Quellcode:
  procedure InitializiseForm(Form: TForm);
  begin
    with TPCButtonList.Create(Application) do begin
      Parent := Form;
      Name := 'PCButtonList';
      SetBounds(13,10);
      PCCount := 24; // <-- was hier passiert, 24 is jetz einfach irgendein wert
    end;
und alles is super, aber wenn ich nachträglich PCCount nochmal verändern will, löst quasi schon das angucken der variable ne exception aus, ich kann in der SetPCCount prozedur nicht mal überprüfen ob scrollbox nil ist ohne eine exception auszulösen...

der vollständigkeit halber hier nochmal die Set prozedur:
Delphi-Quellcode:
procedure TPCButtonList.SetPCCount(Count: Word);
var I: Integer;
const Tops: array[0..14] of Byte = (14,0,1,2,3,4,5,6,7,8,9,10,11,12,13);
begin
  if ScrollBox.ComponentCount-1 <> -1 then
    for I := 0 to ScrollBox.ComponentCount-1 do
      ScrollBox.Components[I].Free;
  for I := 1 to Count do begin
    with TPanel.Create(Application) do begin
      Parent := ScrollBox;
      Name := 'Rechner' + IntToStr(I);
      Caption := 'SomeTitle' + ' ' + IntToStr(I);
      SetBounds((Pred(I)div 15)*70,30*Tops[I mod 15],65,22);
    end;
  end;
  FPCCount := Count;
end;
Naja der worte viel die frage natürlich kurz: woran liegt es das ich dieses feld bzw. diese variable nich mehr aufrufen kann?
bin dankbar für jede antwort
  Mit Zitat antworten Zitat