Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Bild "deaktvieren"


Waldkauz - Di 02.06.09 22:00
Titel: Bild "deaktvieren"
Gibt es einen (Boolean)Befehl ein TImage zu deaktivieren?
Also nicht, dass es nur unsichtbar ist, sondern dass es gar nicht da ist.


Dude566 - Di 02.06.09 22:02

Mit Enabled wenn ich mich nicht täusche oder?


Tropby - Di 02.06.09 22:04

Du kannst noch


Delphi-Quelltext
1:
Image1.Free                    


machen.

Dann ist es aber auch weg und muss erst wieder mit


Delphi-Quelltext
1:
Image1 := TImage.create();                    


erstellt werden.

Dabei gehen aber auch alle Informationen verloren!!!

Also danach weiß das Image nicht mehr das es auf der Form liegt und auch nicht wo und welches Bild es hat.


Waldkauz - Di 02.06.09 22:06

ich probier mal beides

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

das Image soll einfach von der TForm verschwinden. welcher befehl ist da geeignet?


Tropby - Di 02.06.09 22:19

Eigendlich sollte es reichen, wenn du es

Delphi-Quelltext
1:
Image.visible := false;                    

machst.

Im grunde ist es dann von der Form weg (zwar noch da aber nicht für den Benutzer zu sehen)


Waldkauz - Di 02.06.09 22:37

user profile iconTropby hat folgendes geschrieben Zum zitierten Posting springen:
Eigendlich sollte es reichen, wenn du es

Delphi-Quelltext
1:
Image.visible := false;                    

machst.

Im grunde ist es dann von der Form weg (zwar noch da aber nicht für den Benutzer zu sehen)


ja, aber ich hab ja 'ne Funktion, wo der Timer ausgeschaltet wird, wenn zwei Images kollidieren. Aber die können ja trotzdem kollidieren, auch wenn das Image unsichtbar ist, oder? Weil ich will nämlich, dass das Image nicht mehr mit einem anderen kollidieren kann.


Tropby - Di 02.06.09 22:50

Natürlich wenn du eine Kollisionsabfrage hast in der du nicht darauf auchtest ob die Images sichtbar oder unsichtbar sind stimmt das. Vielleicht hilft es dir dann aber auch die Images einfach in einen nicht Sichtbaren bereich der auch nicht bei der Kontrolle dabei ist zu schieben.

Ein stück Quellcode würde natürlich da nürlich auch helfen :P


Waldkauz - Di 02.06.09 22:54

user profile iconTropby hat folgendes geschrieben Zum zitierten Posting springen:
Natürlich wenn du eine Kollisionsabfrage hast in der du nicht darauf auchtest ob die Images sichtbar oder unsichtbar sind stimmt das. Vielleicht hilft es dir dann aber auch die Images einfach in einen nicht Sichtbaren bereich der auch nicht bei der Kontrolle dabei ist zu schieben.

Ein stück Quellcode würde natürlich da nürlich auch helfen :P


ich beziehe die Sichtbarkeit einfach auch in die Kollisionsabfrage mit ein.
danke ^^

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

achja, aber wie ist das dann....

if (blabla) and (Image1.Visible := false)

oder

if (blabla) and (Image1.Visible = false)

?


jaenicke - Di 02.06.09 23:30

Weder noch...
Der Vergleich mit Booleanwerten (z.B. if x = true then) ist nicht nur unschön und unlogisch, sondern bei = true auch falsch.
Hier habe ich mal ein kleines Beispiel gebastelt, wann es schief geht:
http://www.delphi-forum.de/viewtopic.php?p=548760#548760
Mehr dazu steht hier:
http://www.delphi-treff.de/tutorials/objectpascal/programmierung-mit-boolean-werten/page/4/
Und warum das auch vollkommen unlogisch ist:
http://www.delphi-forum.de/viewtopic.php?p=560637#560637

In deinem Fall mit = false funktioniert es zwar, es ist nur unlogisch und sieht seltsam aus. Mit = true ist es dann wirklich falsch, wenn du das auch machst...

Richtig:

Delphi-Quelltext
1:
2:
3:
if (blabla) and not Image1.Visible then
// oder für sichtbar:
if (blabla) and Image1.Visible then


Waldkauz - Di 02.06.09 23:42

danke