Einzelnen Beitrag anzeigen

Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#4

Re: Auf dynamisch erstelltes Objekt zugreifen?

  Alt 31. Aug 2005, 16:26
Also hier mal mein gesammter Code, wo ich das machen will:
(Sorry wegen dem Style.. musste schnell gehen);

Delphi-Quellcode:
  procedure TForm1.starter;
VAR
  myPic : TImage;
  i,bNr : INTEGER;
  filename, bName,s : STRING;

begin
  filename := extractfilepath(application.ExeName)+'mb.src';
  IF fileexists(filename)THEN
  BEGIN
    Listbox2.Items.LoadFromFile(filename);
    For i := 1 TO Listbox2.Count DO
    BEGIN
      s := Listbox2.Items[i-1];
      bNr := strtoint(Copy(s,1,pos(';',s)-1)); delete(s,1,pos(';',s));
      bName := Copy(s,1,pos('.',s)-1);
      myPic := TImage.create(self);
      with myPic do
      begin
        parent := Testbox;
        name := bName+'XX'+inttostr(bNr);
        OnClick := Image2Click;
        filename := extractfilepath(application.ExeName)+'\gfx\'+bName+'.jpg';
        IF Fileexists(filename) THEN
          Picture.LoadFromFile(filename) ELSE
          showmessage('Kann Datei '+filename+'.jpg nicht finden - Programm wird beendet');
        IF (i MOD 2) = 0 THEN
        BEGIN top := i * 26 - 50; left := 54 END ELSE
        BEGIN top := i * 26 - 24; left := 2; END;
        Stretch := TRUE; Height := 50; Width := 50;
      end;
     END;
  END ELSE
  BEGIN
    showmessage('Kann Datei mb.src nicht finden - Programm wird beendet');
  END;
END.
In der Datei mb.src stehen in jeder Zeile ein Index dann ein ';' dann ein bildname(z.B. bild.gif)und dann wieder ein ';'. Im Ordner gfx befinden sich die Bilder, aber als jpg. Die Bilder sollen alle in der Testbox(Scrollbox) angezeigt werden. Quasie alles während der Laufzeit erstellte TImages, die geordnet (immer 2 Nebeneinander, x unter einander) angezeigt werden. Der Name der Objekte ist dann jeweils Bildname(ohne Endung)+'XX'+Index.

Das funktioniert auch alles Wunderbar...

Problem: Ich weiß quasi nicht wie viele Zeilen in der mb.src, deswegen muss das ganze halt halbwegs "dynamisch" abläuft. Und ich kann nicht einfach vorher X(Zeilenanzahl von mb.src) Images deklarieren, da ich ja nicht weiß, wie gro0 X ist.

An einigen Stellen des Programms will ich aber direkt auf Eigenschaften einzelner Bilder zugreifen. (z.B. um den Index aus dem Namen aufzuschlüsseln, oder um das Bild was angezeigt wird, in ein einer Variabel abzulegen etc.)

Nun hoffe ich, dass ich wärend der Laufzeit auf ein Objekt über seinen Namen zugreifen kann, dass der Compiler vor Programmstart noch gar nicht kennt.

Das muss doch gehen.

Evian


PS: Warum dieser Blödsinn eigentlich?! Naja das ganze ist ein Mapeditor für ein Browsergame. In der Scrollbox wurden die Terrain-Arten angezeigt und dann konnte der BG-Entwickler sich quasi seine Karten einfach zusammenklicken und letztendlich als SQL-Anweisungen abspeichern. Funktionierte auch alles Super... nur kommt der Typ andauernd mit neuen Terrainarten und ich sollte das Programm anpassen. -KEIN BOCK MEHR! ...Also soll sich das Programm die Bilder aus einem eigenen Ordner(gfx) und Terraininformationen aus der mb.src ziehen.
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat