AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi parent / child management mit Drawgrids und Shapes
Thema durchsuchen
Ansicht
Themen-Optionen

parent / child management mit Drawgrids und Shapes

Ein Thema von Tiefflieger · begonnen am 22. Mai 2003 · letzter Beitrag vom 23. Mai 2003
Antwort Antwort
Tiefflieger

Registriert seit: 20. Mai 2003
18 Beiträge
 
Delphi 6 Personal
 
#1

parent / child management mit Drawgrids und Shapes

  Alt 22. Mai 2003, 18:29
ich versuche ein Vier-Gewinnt Spiel mit einem Drawgrid als Spielfeld und Shapes als Spielsteine zu realisieren.
Ich erzeuge jedesmal, wenn ich ein Spielstein ins Spielfeld einfüge, einen neuen Spielstein vom Typ TShape und weise der Eigenschaft parent des Spielsteines das Spielfeld zu:
Delphi-Quellcode:
procedure TFrm_VierGewinnt.SetzeSpielstein(Sender: TObject);
var spielstein : TShape;
begin
  spielstein := TShape.Create(Sender as TComponent);
  spielstein.Parent := Spielfeld;
  //es folgen noch zuweisungen für größe,farbe,position etc...
end;
spielfeld.ComponentCount zeigt dann auch immer die Gesamtanzahl der Spielsteine an.
Will ich aber alle Spielsteine mit folgendem Code löschen:
Delphi-Quellcode:
procedure TFrm_VierGewinnt.Menu_Spiel_NeuClick(Sender: TObject);
var i : integer;
begin
  for i := 0 to (Spielfeld.ComponentCount - 1) do
    if Spielfeld.Components[i] is TShape then
      Spielfeld.Components[i].Free;
end;
werden nur die roten steine entfernt, danach gibts die Fehlermeldung "List index out of bounds (AnzahlDerRotenSteine)"

1. wie kann der out of bounds sein, wenn ich den maximalwert vorher abgefragt hab?
2. warum kann ich eigentlich einem objekt TCanvas kein "parent" zuweisen?
[edit]
nach stundenlangem Tüffteln hab ichs geschafft :
wenn ich eine Komponente lösche, läßt das alle anderen Komponenten "Nachrücken"; das ist auch der Grund, warum immer nur die Hälfte gelöscht wurde: nachdem z.b. 3 von 6 Komponenten/steine gelöscht wurden, stand i auf 3, es gab aber nur noch 3 Komponenten/steine, die letzte Komponente hatte also da den index [2] -> fehler

bleibt die Frage, warum shapes keine parent-eigenschaft haben?
[/edit]
Irren ist menschlich.
Aber wenn man richtig Mist bauen will, braucht man einen Computer.

Dan Rather, CBS-Fernsehreporter
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#2
  Alt 23. Mai 2003, 14:22
Hi,

ich hab deine Frage etwas spät gesehen. Aber doch noch eine Erfsahrung von mir.

Wenn ich Listen löschen will, bei denen ich die einzelnen Elemente bearbeiten muß (frei geben wie bei dir), dann zähle ich immer rückwärts. Dann klappt alles wie am Schnürchen.

For Count := List.Count - 1 downto 0 do .... Zu deiner letzten Frage.

Bei mir hat TShape die Eigenschaft Parent. TShape ist von TControl abgeleitet und TControl definiert die Eigenschaft Parent. Somit hat TShape ein property Parent.

Gruß oki
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz