Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi image wird nicht geladen (https://www.delphipraxis.net/4664-image-wird-nicht-geladen.html)

wo0zy 8. Mai 2003 08:36


image wird nicht geladen
 
hallo, ich habe eine prozedur, die auf ein onclickereignis reagiert.
Code:
procedure TForm1.OnImgClick(Sender: TObject);
  begin
    If Sender is TIDImage then
    Inc(count);
    if count=1 then begin
      Sender1:=Sender;
      (Sender1 as TIDImage).Picture.LoadFromFile('Icons/'+(Sender1 as TIDImage).ID+'.ico');
      (Sender1 as TIDImage).Enabled:=false;
    end;
    if count=2 then begin
      if Sender<>Sender1 then begin
        (Sender as TIDImage).Picture.LoadFromFile('Icons/'+(Sender1 as TIDImage).ID+'.ico');
        (Sender as TIDImage).Enabled:=false;
        count:=0;
        versuche:=versuche+1;
        sleep(1000);
        if (Sender1 as TIDImage).ID=(Sender as TIDImage).ID then begin
           (Sender as TIDImage).hide;
           (Sender1 as TIDImage).hide;
           Punkte:=Punkte+1;
           StatusBar1.Panels[0].Text:='Punkte: '+IntToStr(punkte);
        end else begin
          (Sender1 as TIDImage).Enabled:=true;
          (Sender1 as TIDImage).Picture.LoadFromFile('Icons/Hintergrund2.bmp');
          (Sender as TIDImage).Enabled:=true;
          (Sender as TIDImage).Picture.LoadFromFile('Icons/Hintergrund2.bmp');
        end;
        StatusBar1.Panels[1].Text:='Versuche: '+IntToStr(versuche);
      end;
    end;
end;
diese prozedur setzt count auf 1 wenn auf das erste bild geclickt wird und auf 2 wenn auf das 2. geclickt wird. das funktioniert auch alles, nur wird nach dem 2. click das image nicht geladen, der erst der dahinter steht geht aber problemlos#

habt ihr da irgendeinen rat für mich?

Luckie 8. Mai 2003 08:59

Gibt es im aktuellen Verzeichnis einen Unterordner "Icon" mit der benötigten Icon-Datei?

wo0zy 8. Mai 2003 09:01

ja, das is es ja eben, beim click auf das erste bild wird das bild ja auch geladen, halt nur beim 2. nicht

Luckie 8. Mai 2003 09:08

Du hast den Pfad zum Bild relativ angegeben. Das ist Käse, da das nur funktioniert, wenn deine Anwendung aus dem Explorer gestartet wird und zwischen durch durch einen Öffnen- oder Speicherndialog der aktuelle Pfad nicht geändert wird.

Hol dir lieber mit ParamStr(0) den Pfad zu deiner Anwendung und bastel dir den Pfad zu dem Ordner mit ExtractFilepath zusammen.

wo0zy 8. Mai 2003 09:12

meinste das liegt daran? aber beim ersten bild und den mouseenter und mouseleave geht das ja mit dieser angabe alles....

naja ich werds mal testen

wo0zy 8. Mai 2003 09:29

tja, wie sollte es auch anders sein, es ändert sich nichts, also so langsam werde ich noch wahnsinnig :nerd:

Luckie 8. Mai 2003 09:34

Doch es hat sich jede Menge geändert. So ist es richtig. Wir haben erstmal sichergestellt, dass die Bilder auf alle Fälle gefunden werden.

Jetzt setzt mal einen Break-Punkt in der Prozedur und dann geh mal in einzel Schritten durch.

Tom 8. Mai 2003 09:34

Zitat:

Zitat von wo0zy
tja, wie sollte es auch anders sein, es ändert sich nichts,

Du hast eine tickende Zeitbombe aus Deinem Programm entfernt. Ist doch auch schon etwas ...

Zitat:

also so langsam werde ich noch wahnsinnig :nerd:
Setze einen Breakpoint und geht die Click-Methode zeilenweise mit F7/F8 durch. Dann siehst Du, wo Deine Logik nicht stimmt.

Tom 8. Mai 2003 09:41

Zitat:

Zitat von Luckie
Wir haben erstmal sichergestellt, dass die Bilder auf alle Fälle gefunden werden.

Picture.LoadFromFile() löst eine Exception aus, wenn die Datei nicht gefunden wird (D6).

Luckie 8. Mai 2003 09:43

Ich habe das so gemeint, wie du mit der Zeitbombe. :wink:


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