AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OnClick auf Image

Ein Thema von Cheffu · begonnen am 22. Nov 2006 · letzter Beitrag vom 22. Nov 2006
Antwort Antwort
Cheffu

Registriert seit: 7. Nov 2006
42 Beiträge
 
#1

OnClick auf Image

  Alt 22. Nov 2006, 13:56
Hallo,
als erstes Mal: meine Delphi Kenntnisse sind sehr begrenzt, deshalb mag die Frage vielleicht etwas komisch wirken.

Ich hab ein 500*500 Pixel großen Image Feld. Darin ist sagen wir ein Quadrart, sagen wir
rectangle(200,200,300,300) Ich will nun einen Befehl ausgelöst haben, wenn man mit der Maus in das Quadrat klickt. Wie mache ich das?

Vielen Dank schonmal für Antworten
  Mit Zitat antworten Zitat
Neon-chan

Registriert seit: 25. Okt 2004
24 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: OnClick auf Image

  Alt 22. Nov 2006, 14:03
Du benötigst die obere links und untere rechte Ecke des Rechtecks und den angeklickten Punkt (ich nehme mal an, diese Informationen hast du)

dann fragst du nurnoch ab, ob die X-Koordinate des Punktes > der X-Koordinate links oben und < der X-Koordinate rechts unten ist..

für Y entsprechend und wenn alle 4 Abfragen true sind, ist innerhalb des Rechtecks geklickt worden..wenn du statt > und < >= und <= verwendest, werden auch die Ränder mit einbezogen
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#3

Re: OnClick auf Image

  Alt 22. Nov 2006, 14:04
Dafür gibt's ne API-Funktion.

Delphi-Quellcode:
var
  r: TRect;
  p: TPoint;
begin
  r.x := ...;
  r.y := ...;
  
  p.left := 200;
  p.top := 200;
  p.right := 300;
  p.bottom := 300;

  if (PtInRect(r, p)) then
  begin
    ShowMessage('ja');
  end
  else
  begin
    ShowMessage('nein');
  end;
end;
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Cheffu

Registriert seit: 7. Nov 2006
42 Beiträge
 
#4

Re: OnClick auf Image

  Alt 22. Nov 2006, 15:56
Zitat von ste_ett:
Dafür gibt's ne API-Funktion.

Delphi-Quellcode:
var
  r: TRect;
  p: TPoint;
begin
  r.x := ...;
  r.y := ...;
  
  p.left := 200;
  p.top := 200;
  p.right := 300;
  p.bottom := 300;

  if (PtInRect(r, p)) then
  begin
    ShowMessage('ja');
  end
  else
  begin
    ShowMessage('nein');
  end;
end;
Muss da nicht irgendwie noch
with Image1.Canvas do oder sowas rein? weil da steckt ja nicht drin bei was er dies amchen soll oder?
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#5

Re: OnClick auf Image

  Alt 22. Nov 2006, 16:08
Zitat von Cheffu:
Muss da nicht irgendwie noch
with Image1.Canvas do oder sowas rein? weil da steckt ja nicht drin bei was er dies amchen soll oder?
Nein, da es für die Berechnung unerheblich ist, wo genau dieses Rechteck liegt und wofür es genutzt wird.
Wichtig sind nur die Größe und Lage des Rechtecks, sowie die Koordinaten des Klicks.

Kleines Beispiel, um die X- und Y-Koordianten des Klicks herauszufinden.
Alternativ könnte man auch "OnMouseDown()", wenn das Drücken der Taste reicht, dann bekomtm man die Koordinaten direkt über zwei Parameter der Funktion.
Wenn es ein richtiger Klick (Taste runter und wieder hoch) sein soll/muss, bleibt nur OnClick().

Delphi-Quellcode:
procedure TForm1.Image1Click(Sender: TObject);
var
  P: TPoint;
  X, Y: Integer;
begin
  if (GetCursorPos(p)) then
  begin
    P := ScreenToClient(P);
    X := P.X - Image1.Left;
    Y := P.Y - Image1.Top;
  end;
end;
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Cheffu

Registriert seit: 7. Nov 2006
42 Beiträge
 
#6

Re: OnClick auf Image

  Alt 22. Nov 2006, 16:09
Zitat von Neon-chan:
Du benötigst die obere links und untere rechte Ecke des Rechtecks und den angeklickten Punkt (ich nehme mal an, diese Informationen hast du)

dann fragst du nurnoch ab, ob die X-Koordinate des Punktes > der X-Koordinate links oben und < der X-Koordinate rechts unten ist..

für Y entsprechend und wenn alle 4 Abfragen true sind, ist innerhalb des Rechtecks geklickt worden..wenn du statt > und < >= und <= verwendest, werden auch die Ränder mit einbezogen
Die oberen und unteren Punkte kannst du ja oben in meinem Befehl ablesen.
Ich verstehe was du meinst, bräuchte dafür aber noch einen Befehl der mit beim klicken auf ein Image die angeklickte Koordinate in eine Variable schreibt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 Uhr.
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