Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Stringlist als Index über TImages (https://www.delphipraxis.net/11862-stringlist-als-index-ueber-timages.html)

F.W. 15. Nov 2003 12:51


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:
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;
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.

Ein anderer Timer sorgt dafür, dass sich alle Bilder bewegen:
Delphi-Quellcode:
for I := 0 to StringList.Count-1 do
   Move(TImage( FindComponent(StringList[I]) ), Panel1);
end;
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:


Das ist ganz schön schwierig, ich hoffe jemand versteht mich.

Danke schonmal!!!!!!!!!!!!!!!!!!!

Christian Seehase 15. Nov 2003 13:11

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?

F.W. 15. Nov 2003 13:33

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!

Christian Seehase 15. Nov 2003 13:34

Re: Stringlist als Index über TImages
 
Moin F.W.,

Zitat:

Zitat von F.W.
An der Stelle von "if B.Tag = 3 then begin //Richtung überprüfen" bekomme ich eine Zugriffsverletzung.

Dann schau mal Deine Programmstruktur genau durch.
Wenn Du hier eine AV bekommst, existiert das übergebene Image Objekt nicht.

F.W. 15. Nov 2003 13:43

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.

Christian Seehase 15. Nov 2003 13:56

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.

himitsu 15. Nov 2003 13:58

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:

F.W. 15. Nov 2003 14:15

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?

himitsu 15. Nov 2003 14:31

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:

F.W. 15. Nov 2003 15:22

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 03:38 Uhr.
Seite 1 von 2  1 2      

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