Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wie ändere ich unter best. Vorr. das Bild eines Images? (https://www.delphipraxis.net/63319-wie-aendere-ich-unter-best-vorr-das-bild-eines-images.html)

Inqui 16. Feb 2006 20:39


Wie ändere ich unter best. Vorr. das Bild eines Images?
 
Hallo liebe Delphi User!

Zunächst einmal sei gesagt, dass ich noch ein blutiger Anfänger in Delphi bin und ich habe, wer hätte es gedacht, ein "kleines" Problem mit meinem Delphi Programm, das ich bis jetzt noch nicht lösen konnte.

In der FormCreate erstelle ich zunächst ein 24x24 Felder "Spielfeld" aus vielen einzelnen images:

Delphi-Quellcode:
for j := 1 to 24 do begin
  for i := 1 to 24 do begin
  Bild[(j-1)*24+i]:=TImage.Create(Form1);
  Bild[(j-1)*24+i].Parent:=Form1;
  Bild[(j-1)*24+i].Height:=20;
  Bild[(j-1)*24+i].Width:=20;
  Bild[(j-1)*24+i].Left:=20*i;
  Bild[(j-1)*24+i].Top:=20*j;
  Bild[(j-1)*24+i].Name:='Feld'+InttoStr((j-1)*24+i);
  Bild[(j-1)*24+i].Picture.LoadFromFile('neutral.bmp');
  end;
end;
nun mächte ich in einer anderen Prozedur während der Laufzeit das angezeigte Bild eines dieser bestimmten "Felder" (bzw. Images) ändern, indem ich ein anderes Bild hineinlade.

Dabei ist mir die Stelle im array bzw. der Name des Images natürlich bekannt aber irgendwie komme ich nicht drauf wie ich mit diesen Informationen das entsprechende Image während der Laufzeit in einer anderen Prozedur ansprechen kann.Irgendwie vermute ich zwar, dass die Lösung ganz einfach ist aber naja ... :gruebel: :wall:

Ich hoffe ihr könnt mir helfen und danke Euch im vorraus.


Inqui

/edit

Ich habe es bisher mit
Delphi-Quellcode:
Bild[i].Picture.LoadFromFile('image1.bmp');
(i bezeichnet die mir bekannte Stelle des Feldes das geändert werden soll)
probiert, aber sobald die Bedingung für den "Austausch" erfüllt wurde kam ein EAccesViolation Fehler

mkinzler 16. Feb 2006 20:51

Re: Wie ändere ich unter best. Vorr. das Bild eines Images?
 
1.) Wo wurde der array Bild deklariert (Formularkalsse?)
2.) Handelt es sich um eine freie Prozedur, aus der zugegriffen wird oder einer anderen Methode der Form?

Inqui 16. Feb 2006 21:04

Re: Wie ändere ich unter best. Vorr. das Bild eines Images?
 
1) Ich habe das array sowohl Global deklariert als auch in der Formcreate und in der Prozedur, die das Bild ändern soll.
(sonst kam der fehler: Class does not have a default property)

2) Es handelt sich um eine freie Prozedur.

mkinzler 16. Feb 2006 21:10

Re: Wie ändere ich unter best. Vorr. das Bild eines Images?
 
Wenn du von mehreren Stellen aus auf die selber daten zugreifen willst, darfst du ihn nur einmal deklarieren.
-Wenn du ihn global deklarierst kannst du problemlos darauf zugreifen. davon würde ich aber abraten, außerdem macht dann das Laden im OnCreate wenig Sinn.
-Im Formular im public Teil, dann kanst du von der freien Prozedur mit Form.Bild... darauf zugreifen.
Besser aber freie Prozedur zur Methode machen und Array in private/protected deklarieren u.U Property erzeugen wenn freie Prozedur bleibt.

Inqui 16. Feb 2006 21:44

Re: Wie ändere ich unter best. Vorr. das Bild eines Images?
 
Ok also ich habe die überschüssigen Deklarationen entfernt, aber die EAccesViolation wurde dadurch ausgelöst, dass ich einen simplen Tippfehler beim Bildnamen hatte und er dann versucht hat nicht existente Bilder zu laden :wall:

Naja jedenfalls funktioniert jetzt alles so wie es soll und ich Danke dir für dine Hilfe :)

MfG

Inqui


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 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