Woran es wohl liegt?
Ich möchte ein Panel während der Laufzeit erzeugen und kriege die Merldung:
Delphi-Quellcode:
public
{ Public-Deklarationen }
procedure erzeugePanel(Lft,
tp,wdth,hght:integer);
procedure erzeugeLabels(MDatum:TDatetime);
function LblFeiertag(LTag,LMonat:byte;LArray:THolidayTable):
string;
//...
implementation
//...
procedure TForm1.erzeugePanel(Lft,
tp,wdth,hght:integer);
begin
Panel1:=TPanel.Create(Form1);
Panel1.Parent:=Form1;
Panel1.visible:=true;
Panel1.Left:= Lft;
Panel1.top:=
tp;
Panel1.width:=wdth;
Panel1.height:=hght;
end;
[Fehler] Unit1.pas(65): E2003 Undefinierter Bezeichner: 'Panel1'
Setze ich aber eine Komponente TPanel auf das Formular, dann wird auch die Prozedur 'erzeugePanel' ausgeführt.
Dasselbe bei einem Array aus Labeln:
Delphi-Quellcode:
{global}
var
Labels: array of TLabel; // <- unbekannter Bezeichner ???
//....
procedure TForm1.erzeugeLabels(MDatum:TDatetime);
var
index, // Zeilenzähler
Reihe:integer; // Spaltenzähler
index2,FTmp:integer;
tg: byte;
begin
//...
tg:= TageInMonat(MDatum);
SetLength(Labels,tg+1);
FTmp:=TagNummer(MDatum);
index2 := 1; Reihe:=0;
for index:=1 to tg do
begin
Labels[index]:=TLabel.Create(Panel1);
If ((Labels[index].top+Labels[index].height)*index2 + 100) >= Panel1.ClientHeight then
begin
inc(Reihe); index2:=1;
Labels[index].left:=60*Reihe;
Labels[index].Top:= 1+(index2*20);
end;
Labels[index].Parent:= Panel1;
Labels[index].Top := 1+(index2*20);
Labels[index].Left := 60+(150*Reihe);
Labels[index].Height:= 20;
Labels[index].Width:=140;
Labels[index].AutoSize := false;
Labels[index].Font.Size := 10;
Labels[index].name:='Labels'+inttostr(index);
Labels[index].Caption:= inttostr(index)+' '+NamendesTages(ArrIdxalsTagDatum(index,MonthOf(Now),YearOf(Now)));
Labels[index].Alignment := taLeftjustify;
Labels[index].Cursor:=crHandPoint;
Labels[index].Font.color:=clmaroon;
Labels[index].color:= clmoneygreen;
if (NamendesTages(ArrIdxalsTagDatum(index,MonthOf(Now),YearOf(Now))) = 'Samstag') or
(NamendesTages(ArrIdxalsTagDatum(index,MonthOf(Now),YearOf(Now))) = 'Sonntag') then Labels[index].Color:= clskyblue;
if (MonthOf(MDatum)= MonthOf(Now))and (FTmp=index)then Labels[index].Color:= clred;
if LblFeiertag(index, monthOf(MDatum), FTArray)<>'' then
begin
Labels[index].caption:= LblFeiertag(index,monthOf(MDatum), FTArray);
Labels[index].Color:= clyellow;
end;
Labels[index].Tag:= index;
Labels[index].OnClick := ClickEvent; //<-ClickEreignis zuweisen !!!
inc(index2);
end;
end;
Auch hier muss mindestens ein Label auf das Formular gezogen werden, damit bei ' var Labels: Array of TLabel' das 'TLabel' nicht unbekannt ist.
Da stimmt doch was nicht, oder?