Entwickler-Ecke

Sonstiges (Delphi) - Hilfe funzt nicht bei Vista.Kann jemand Hilfe kurz hier post


delphianer5 - Mi 10.03.10 22:20
Titel: Hilfe funzt nicht bei Vista.Kann jemand Hilfe kurz hier post
Hi,

ich habe Vista und kann die Hilfe nicht öffnen und kann mir das Windows Update in nicht absehbarer Zeit herunterladen.
Kann mir einer die Hilfe für IntersectRect (oder so ähnlich) hier posten?

lg delphianer


elundril - Mi 10.03.10 22:23

Die Delphi-Hilfe [http://ref.dp200x.de/] im onlineformat. ;) Zwar auf englisch aber mit babelfisch oder google übersetzer sollte das ja auch nur ein minimales hinderniss.

lg elundril


delphianer5 - Mi 10.03.10 22:29

Danke,hab zwar gegooglt,aber das war *Seiten auf Deutsch* als Standardeinstellung wohl nicht so hilfreich^^


delphianer5 - Mi 10.03.10 22:34

Kann mir einer das erklären wie das geht?Ich komme damit nicht klar


Call IntersectRect to obtain the rectangle that is the intersection of R1 and R2. The intersection is returned as the Rect parameter.

IntersectRect returns true if the two rectangles have a nonempty intersection. If R1 and R2 do not overlap, IntersectRect returns false, and the Rect parameter is set to a rectangle at position (0,0) with 0 Width and 0 Height.


Call IntersectRect erhalten Sie das Rechteck, das den Schnittpunkt von R1 und R2 ist. Der Schnittpunkt ist die Rect Parameter zurückgegeben.

IntersectRect liefert true, wenn die beiden Rechtecke einen nicht leeren Durchschnitt haben. Wenn R1 und R2 nicht überlappen, IntersectRect false zurück, und die Rect Parameter ist, um ein Rechteck an der Position (0,0) mit 0 Breite und Höhe 0 gesetzt.


elundril - Mi 10.03.10 22:42

Rufen sie IntersectRect auf um das Rechteck zu bekommen bei dem sich die rechtecke R1 und R2 überschneiden. Das Resultierende rechteckt wird mit dem ersten Parameter (der den namen Rect trägt) zurückgegeben.

Wenn der Rückgabe wert der Function true ist dann haben die zwei Rechtecke R1 und R2 eine nichtleere überschneidung.Wenn sich R1 und R2 nicht überschneiden dann liefert die function false und der out Parameter bekommt ein Rechteck an der stelle (0,0) und mit der höhe und breite von 0 zugewiesen.

btw: Englisch lernen ist zum programmieren essentiell wichtig. ;) also brav in der schule aufpassen. :)

lg elundril


delphianer5 - Mi 10.03.10 23:02

Übersetzen konnte ich es schon,nur weiß ich nicht wie ich damit umgehen soll.
Wie muss ich das coden?
Mein Problem bezieht sich auch auf den Thread [http://www.delphi-forum.de/viewtopic.php?t=98280]


elundril - Mi 10.03.10 23:06

Sagte ich doch ;) du musst 3 Datenstrukturen vom Typ TRect übergeben und bekommst einen Boolean wert zurück. In das erste übergebene TRect kommt der überlappende bereich hinein von dem zweiten und dritten übergebenen TRect. Und der Rückgabewert liefert true wenn sich der zweite und dritte TRect wert überlappen und false wenn dies nicht so ist. ;)

lg elundril


delphianer5 - Mi 10.03.10 23:22

so und jetzt auf Deutsch^^
Kannst du das irgendwie einfacher formulieren?
Aber ich befürchte das das jetzt meine Kompetenzen übersteigt,muss wohl warten bis wir in der Schule weiter sind^^


elundril - Mi 10.03.10 23:27

ok, wie ich sehe willst du gar nicht den bereich in dem sich die zwei rechtecke deiner bilder (also die grenzen deiner Bilder) überschneiden sonder du willst einfach nur wissen ob sich die bilder überschneiden. Dann machst du folgendes (anscheinend kommen wir mit blankem erklären nicht aus, deswegen gibts von mir ausnahmsweise den code):


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.IrgendeineProzedurInDieDerCodeReinsoll();
var myRect: TRect;
begin
  if IntersectRect(myRect, Image1.ClientRect, Image2.ClientRect) then
    //dein Code der ausgeführt werden soll wenn sich die beiden Images überschneiden
  else  //noch mehr code -> ist aber optional falls code ausgeführt werden soll wenn sie sich nicht überschneiden
end;


//edit: falsche Eigenschaft übergeben -> ClientRect heißts :D

lg elundril


Jann1k - Mi 10.03.10 23:27

Wenn du mit InterSectRect nicht klarkommst, mach es doch einfach selbst ^^

In dem anderen Thread hab ich dir ja bereits beschrieben, was du abfragen musst, um zu überprüfen ob sich die beiden Bilder überschneiden.


delphianer5 - Mi 10.03.10 23:56

Danke für den Code!
Wie du siehst,hab ich davon noch keinen Plan und ich hatte mir nen allgemeinen Code+Erklärungen gewünscht.

Noch eine letzte Frage^^:
Jetzt klappt es nur eins.Kurz eine kleine Erklärung.Ich habe Bilder auf der form1 und lasse diese wandern und man kann sie mit Buttons steuern.Und wie ihr wisst,soll wenn sich 2 Bilder Überschneiden etwas ausgeführt werden bzw ein Bild erscheinen.Ich habs so getestet das ich es bei einen Button eingefügt habe und dann hat es funktioniert.Muss ich das bei jeden Button einfügen oder gibts ne einfacherere Lösung?

@Jann1k:
Ich wollte es selbst machen,aber so wie ich das gemacht habe hat es nicht gefunzt^^
Das hab ich auch nicht verstanden bzw. ich habs versucht hab aber nicht funktioniert


elundril - Do 11.03.10 00:00

Ja, es gibt eine Einfachere Lösung. Du lagerst das in ne extra-Procedure aus und rufst diese nach dem bewegen in deiner Button-Procedure auf. Fallst du nicht weißt wie das geht rate ich dir dringend zum Delphi-Wikibook [http://de.wikibooks.org/wiki/Programmierkurs:_Delphi] und zu Christian's Crashkurs [http://www.christian-stelzmann.de/index_tutorials_crashkurs.html].

lg elundril