So solltest du es besser machen:
Erst lädtst du jede Datei in eine tbitmap-Variable. Diese Bitmaps fasst du in einem Array zusammen:
Delphi-Quellcode:
var
bilder:array[0..1000] of tbitmap;
i:integer;
const
dateinamen:array[0..1000] of string = ('c:\bildnummer1.bmp','c:\bildnummer2.bmp',...);
begin
for i:=0 to 1000 do begin
bilder[i]:=tbitmap.create;
bilder[i].loadfromfile(dateinamen[i]);
end;
end;
Dann machst du EIN TImage.
Für dieses TImage schreibst du eine Procedure DISPLAY. Die rufst du auf wenn ein Feld verändert wurde oder die Anzeige aktualisiert werden soll:
Delphi-Quellcode:
procedure DISPLAY;
var
i,j:integer;
newdisplay:tbitmap;
begin
newdisplay:=tbitmap.create;
jetzt mit i und j alle 500 Felder aus dem Bitmap-Array auf das Image kopieren
image1.canvas.draw(newdisplay); //Auf das Image die Zusammenstellung des neuen Displays kopieren; Image1.Doublebuffered sollte true sein um flackern zu vermeiden
newdisplay.free;
end;
Wenn auf das Image geklickt wurde kannst du ja aus den Mauskoordinaten genau den Klickpunkt berechnen:
Delphi-Quellcode:
prcedure tform1.image1click(x,y:integer);
var
KLICKFELDX,KLICKFELDY:integer;
begin
klickfeldx:=x div 12;
klickfeldy:=y div 12; //eventuell muss dies noch verändert werden, da jetzt der niedrigstmögliche Wert eine 0 ist -> +1 dazuschreiben wenn du den Wert erhöhen willst. Außerdem könnte es sein dass der Wert nicht von den Koordinaten des Image abhängt sondern von denen der Form, dann musst du von x noch image1.left und von y image1.top abziehen (das sieht dann so aus: klickfeldx:=(x-image1.left) div 12;
end;
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates