Entwickler-Ecke

Multimedia / Grafik - Panels zerstören


sunday_2 - Mo 30.12.02 14:15
Titel: Panels zerstören
Hi Leute,

Folgendes Prob: ich erstelle zur Laufzeit diverse Panels die die selbe Farbe haben wie der hintergrund ( um Grafiken abzudecken ).

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var NewPanel: array[1..207] of TPanel;
          NewPanel[Panelzaehler]:= TPanel.create(P_SP_Grafik);
          NewPanel[Panelzaehler].Parent:= P_SP_Grafik;
          NewPanel[Panelzaehler].Caption:= '';
          NewPanel[Panelzaehler].Top:= 40+((j)*31);
          NewPanel[Panelzaehler].Left:=96+((i)*31);
          NewPanel[Panelzaehler].ParentColor:= true;
          NewPanel[Panelzaehler].Height:=31;
          NewPanel[Panelzaehler].Width:=31;
          NewPanel[Panelzaehler].BevelOuter:=bvRaised;
          NewPanel[Panelzaehler].Visible:= true;

ich habe allerdings keine Ahnung wie ich diese zerstören kann um die dahinter liegenden Grafiken wieder sichtbar zu machen. (Wichtig ist, die Panels dürfen nicht mehr existieren. Das Array NewPanel muß wieder komplett leer sein).
Habe es bisher so versucht, klappt leider nicht.

Quelltext
1:
2:
3:
4:
5:
if length(NewPanel[1].Name) > 0 then
        begin
        for i:=1 to 207 do
            NewPanel[i].Free;         
        end;



Für hilfe wäre ich echt dankbar.

P.S. Viel Spaß morgen Nacht! :wink:


Dev4u.ch - Mo 30.12.02 14:30

alsoc ich weiss auch nicht wie das geht..
aber versuchs doch mal mit..


Quelltext
1:
newpanel.free                    


oder


Quelltext
1:
2:
3:
4:
5:
if length(NewPanel[1].Name) > 0 then 
        begin 
        for i:= 207 downto i do 
            NewPanel[i].Free;    //vielleicht auch .Destroy?      
        end;


sunday_2 - Mo 30.12.02 15:02

Das klappt so nicht.
Das Problem ist, das ich die Abfrage, ob es bereits newPanel gibt beim Start benötige. Da springt er allerdings sofort raus bei

Quelltext
1:
if length(NewPanel[1].Name) > 0 then                    

da NewPanel[1].Name natürlich noch nicht existiert. Ich brauche die abfrage aber auf 'Spiel starten' da es ja möglich sein soll, das Spiel ein zweites mal zu spielen ohne erst das ganze Programm zu beenden und neu zu starten. Quasi ein Teufelskreis :evil:


Dev4u.ch - Mo 30.12.02 15:25

du könntest die panels in eine TList hinzufügen..

dann kannst du schauen ob TList.items.count < 0 ist..


sunday_2 - Mo 30.12.02 15:48

Das könnte klappen :)

Vielen dank und guten Rutsch!