![]() |
Stringlist als Index über TImages
In meinem Programm werden kleine Kreise(TImage) erzeugt, das ganze wird von einem Timer gemacht, der alle Einstellungen anpasst und den Namen des erstellten Objekts in eine Stringlist einfügt.
Die Stringlist ist damit ich mit einer For-do Anweisung schnell auf alle erzeugten Bilder zugreifen kann. Das geht, aber ich habe eine Anweisung geschrieben:
Delphi-Quellcode:
Das ist nur ein kleiner Ausschnitt, aber hier gibts immer den Fehler. Im Tag des Bildes wird eine Zahl gespeichert, die als Richtung dient, wie auf einer Uhr.
procedure TForm1.Move(B: TImage; P: TPanel);
begin if B.Tag = 3 then begin //Richtung überprüfen if B.Left+B.Width > P.Width //Wenn das Bild an den Rand kommt, then B.Tag := 9; //dann soll es in die entgegengesetzte Richtung weiter B.Left := B.Left+5; //5 Pixels nach Rechts end; Ein anderer Timer sorgt dafür, dass sich alle Bilder bewegen:
Delphi-Quellcode:
Wieso gibt es da einen Fehler, wenn ich das Bild schon zur Entwicklungszeit einsetzte, einen Namen gebe und dann ohne die for-do Anweisung sondern nur Move(...) eingebe, funktioniert alles. :wall:
for I := 0 to StringList.Count-1 do
Move(TImage( FindComponent(StringList[I]) ), Panel1); end; Das ist ganz schön schwierig, ich hoffe jemand versteht mich. Danke schonmal!!!!!!!!!!!!!!!!!!! |
Re: Stringlist als Index über TImages
Moin F.W.,
Fehler ist gut. Welcher, und an welcher Stelle? Hast Du Dir schon mal überlegt das ganze mit einer TImageList zu machen? |
Re: Stringlist als Index über TImages
Liste der Anhänge anzeigen (Anzahl: 1)
An der Stelle von "if B.Tag = 3 then begin //Richtung überprüfen" bekomme ich eine Zugriffsverletzung.
Eine Stringlist finde ich, ist hier besser geeignet, da ich sie ja nur brauche, um die Namen der Objekte zu "merken".(Daher FindComponent) Es ist vielleicht besser, wenn ich das Projekt einfach mal hierherstelle. Es soll am Ende ein Bildschirmschoner sein. Edit:GANZ WICHTIG: Bei dem AddTimer muss der B.Tagwert auf 3 gestellt werden und der Hint auf '6'!!! Das ist, weil ich herumprobiert habe und es dann aber vergessen habe, zurückzustellen! |
Re: Stringlist als Index über TImages
Moin F.W.,
Zitat:
Wenn Du hier eine AV bekommst, existiert das übergebene Image Objekt nicht. |
Re: Stringlist als Index über TImages
Aber was kann ich jetzt tun?
Existieren müssen sie, weil ich ihre Namen mit Hilfe von einem OnclickEvent geprüft habe, sie hießen so, wie sie sollten. Und genau so werden sie auch angesprochen. |
Re: Stringlist als Index über TImages
Moin F.W.,
der Fehler liegt darin, dass Du das falsche FindComponent ansprichst. Da Du es in einer Methode des Formulares direkt aufrufst, ist es das FindComponent des Formulares. Da nun aber der Parent für die TImages das Panel ist, liefert FindComponent immer nil zurück, denn die Images sind ja nicht im ComponentArray des Formulares enthalten. Nimm mal einfach Feld.FindComponent. |
Re: Stringlist als Index über TImages
Hi,
du lässt an der falschen Stelle suchen. > Move(TImage(Feld.FindComponent(LB[I])), Add: Da war wohl einer schneller :shock: |
Re: Stringlist als Index über TImages
Danke, es funktioniert! Jetzt nurnoch einige Spielereien rein, dann ist er fertig.
Soll ich das fertige Teil mal posten? |
Re: Stringlist als Index über TImages
Liste der Anhänge anzeigen (Anzahl: 1)
Ja.
Was hast du den gegen ein Image-Array? Da müssen zum Beispiel die Bilder nicht jedes mal neu gesucht werden. :mrgreen: |
Re: Stringlist als Index über TImages
Liste der Anhänge anzeigen (Anzahl: 2)
Das ist eine gute Idee, die Variante ist jetzt aber nochnicht dabei, da ich keine großen Unterschiede feststellen konnte.
Ihr wisst ja sicher wie das mit den Bildschirmschonern ist, einfach ins Windows-Verzeichnis ziehen und dann über Desktop-Rechtsklick->Bildschirmschoner einstellen. Was mich an der Stelle noch interessieren würde ist, welche Bedeutung ein Copyright hat, und wie man das am besten schreibt. In meinem Programm steht es so drin, wie ich es für ok hielt, aber was ist wenn das nicht so ist? :roll: Also danke nochmal an alle!! :thuimb: Edit: Neue Version jetzt mit einem ImageArray Wenn man rechtsklickt sieht man wie viele Bubbles schon über den Bildschirm gerauscht sind! Edit2: Das obere ist das neue! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 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