Delphi 6 ListBox Kompilierfehler

Code:
procedure fill(n:integer);
var i:integer;
begin
 randomize;
 for i:=0 to n do
 begin
  lbNumbers.items[i] := IntToStr(1 + random(7));
 end;
end;

procedure TfrmNames.btnAddClick(Sender: TObject);
begin
 fill(10);
end;

Undeclared identifier: 'lbNumbers'

lbNumbers ist ne ListBox. Wenn ich es ohne Procedure mache, d.h. den Code der Procedure an die Stelle von "fill(10)" schreibe geht es. Hat jemand eine Ahnung wieso?
 
Das liegt daran, dass fill() eine globale Funktion ist und die Member der Klasse TfrmNames nicht "sehen" kann.(lbNumbers z.B.) Als Lösung könntest du fill() als Methode der Klasse TfrmNames deklarieren.
 
Eine andere Möglichkeit ist es, die ParentKlasse der Listbox anzusprechen, also die Form (TfrmNames). Die ist nämlich global bekannt. :)
Also:
frmNames.lbNumbers.items := IntToStr(1 + random(7));frmNames.lbNumbers.items := IntToStr(1 + random(7));


Weiterhin viel Spass mit Delphi. :)
 
Zurück
Oben