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