Delphi-PRAXiS

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:

wo0zy 8. Mai 2003 10:21

tja, beim debuggen passiert genau das selbe, und es tritt kein fehler oder sonstiges auf

Tom 8. Mai 2003 10:26

Zitat:

Zitat von wo0zy
tja, beim debuggen passiert genau das selbe, und es tritt kein fehler oder sonstiges auf

Und? Wieso macht die Methode nicht das was Du willst? Müssen wir die Kristallkugel aus der Schublade holen, oder verräts Du uns genaueres?

wo0zy 8. Mai 2003 10:32

tja, das weiß ich ja eben nicht, der punkt wird durchlaufen, doch das bild nich geladen, danach gehts weiter, ich hab auch nich so recht ahnung vom debuggn also wenn ich an dem punkt irgendwas besonderes machen muss, wäre nett wenn ihr mir sagen könntet was genau :roll:

Tom 8. Mai 2003 10:39

Zitat:

Zitat von wo0zy
tja, das weiß ich ja eben nicht, der punkt wird durchlaufen, doch das bild nich geladen,

Du kommst also an der Stelle LoadFromFile vorbei? Bis zum Ende der Methode kommst Du auch nicht an einem anderen LoadFromFile vorbei?

Luckie 8. Mai 2003 10:40

Speicher den Pfad erstmal in einer Variablen zwischen und dann kuck mal, was da drin steht.

wo0zy 8. Mai 2003 10:52

tja es steht der pfad zu dem bild drin, und dieser pfad existiert auch

wo0zy 9. Mai 2003 09:42

ich hab es hin bekommen, undzwar mit
Code:
Application.ProcessMessages;
:dancer2: :dancer: :hello:

danke an alle die mir geholfen haben


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz