AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem mit dem zugreifen auf dyn. Shapes.
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit dem zugreifen auf dyn. Shapes.

Ein Thema von Thorben86 · begonnen am 14. Okt 2004 · letzter Beitrag vom 15. Okt 2004
 
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#1

Problem mit dem zugreifen auf dyn. Shapes.

  Alt 14. Okt 2004, 22:07
Hi, ich hab wieder ein Problem mit meinen dynamischen Shapes. Ic hspeicher die jetzt in nem Array. allerdings kommt eine Exception wenn ich in der 2. Procedure die erste For-Schleife auf die größe des Arrays stelle. wenn ich dort die anzahl der scheiben einstelle, kommt keine exception, er findet jedoch die Komponente auch nicht. Mache ich beim Suchen irgend was falsch, weil eigentlich müsste es die Komponente mit dem Namen ja geben.

Erstellung:
Delphi-Quellcode:
var i:integer;
shape:TShape;
anzahl:integer;
begin
  for I:=1 to 30 do
  shapes[i].free;
  Stapel[1].Anzahl := 0;
  
  for anzahl := 1 to sp_scheibenzahl.value do begin
     Shapes[anzahl] := TShape.Create(self);
    Shapes[anzahl].Name :='im_st'+ InttoStr(Startstapel) + 'nr' + InttoStr(Stapel[Startstapel].Anzahl);
    Shapes[anzahl].Parent := Form1;
    shapes[anzahl].Width := 100;
    shapes[anzahl].Height := 15;
    shapes[anzahl].Top := Stapel[Startstapel].Top - (15 * (Stapel[Startstapel].Anzahl+1));
    shapes[anzahl].Left := Stapel[Startstapel].left - (shapes[anzahl].Width div 2);
    shapes[anzahl].Shape := stRoundRect;
    inc(Stapel[Startstapel].Anzahl);
end;

end;
Zugreifen:
Delphi-Quellcode:
var
   Kompo:TShape;
   i:Integer;
begin
for i:=1 to 30 do //Hier Exception
begin
if (Shapes[i].name = 'im_st'+ InttoStr(Startstapel) + 'nr' + InttoStr(Stapel[Startstapel].Anzahl)) then
begin
showmessage('1');
Kompo := Shapes[i];
end;
end;

if (Kompo <> nil) then
begin
Kompo.Left := Stapel[Zielstapel].left - (Kompo.Width div 2);
Kompo.Top := Stapel[Zielstapel].Top - (15 * (Stapel[Zielstapel].Anzahl+1)) ;
inc(Stapel[Startstapel].Anzahl,-1);
inc(Stapel[Zielstapel].Anzahl);
Kompo.Name := 'im_st'+ InttoStr(Zielstapel) + 'nr' + InttoStr(Stapel[Zielstapel].Anzahl);
end;

end;
Edit: Array deklaration: shapes : Array[1..30] of TShape;

die showmesage ist nur dafür da, um zu sehen, of der in die if-Abfrage rein kommt, tut er aber nicht, also is kompo dann nil und der verändert nix, ich weis aber nicht, wie ich das ändern kann.
  Mit Zitat antworten Zitat
 


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 16:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz