AGB  ·  Datenschutz  ·  Impressum  







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

In Kreis klicken funktioniert nicht

Ein Thema von SaFu · begonnen am 15. Okt 2009 · letzter Beitrag vom 15. Okt 2009
Antwort Antwort
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#1

In Kreis klicken funktioniert nicht

  Alt 15. Okt 2009, 11:52
Tach,

hatte vor längerer Zeit schonmal das Thema gehabt und konnte das problem bis jetzt nicht beheben.

Ich habe drei TShaps übereinander liegen jetzt so geprüft werden im welchen Shape(als Kreis) sich die Maus befindet.

Das Problem ist jetzt das es zu ungenau ist wie bekomme ich das genauer hin.

So sieht bis jetzt meine Procedure aus
Delphi-Quellcode:
procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  Inside: Boolean;
  R: Extended;
begin
  if Shape1.Width < Shape1.Height then
   R := Shape1.Width/2
  else
   R := Shape1.Height/2;

  Inside := Sqr(X - R) + Sqr(Y - R) <= Sqr(R);

  if inside then
   begin
     lblPreis.Caption:= '55€';
   end;
end;
Projekt ist mal im Anhang.

Danke schon mal im voraus
Angehängte Dateien
Dateityp: zip rsservices_313.zip (1,55 MB, 5x aufgerufen)
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

Re: In Kreis klicken funktioniert nicht

  Alt 15. Okt 2009, 11:57
Warum machst du das mit shapes und nicht mit einem Image
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: In Kreis klicken funktioniert nicht

  Alt 15. Okt 2009, 12:07
Ich brauche das ganze Transparent mit einer Linie darum und rund muss es auch sein. Da bietet mir das Shape eine rheie von Einstellungen
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#4

Re: In Kreis klicken funktioniert nicht

  Alt 15. Okt 2009, 12:14
Die Lösung is ganz einfach: Wenn du es tatsächlich mit den Shapes machen willst, musst du bei den Mousemove Prozeduren von Shape1 und Shape2 abfragen ob sich die Maus evtl in Shape3 befindet... bzw. andersherum...du musst auf jedenfall in jedem Mausmove ereignis alle kreise abfragen...
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: In Kreis klicken funktioniert nicht

  Alt 15. Okt 2009, 12:24
Am Einfachsten erscheint mir eine Lösung mit Regions, d.h. man erstellt sich eine Funktion, der man die Mauskoordinaten sowie die Eckpunkte des umgebenden Rechtecks übergibt, worauf die temporär mit CreateEllipticRgnIndirect eine Region erstellt und mit PtInRgn prüft, ob sich die Koordinate innerhalb dieser Region befindet. Das erspart zumindest eine Menge Rechnerei und sollte ausreichend genau sein.

[edit] Wobei natürlich der berechtigte Einwand von alleinherrscher zu berücksichtigen ist. Also entweder (Pseudocode):
Code:
wenn im äußeren Kreis:
  wenn im mittleren Kreis:
    auch im inneren Kreis?
oder
Code:
wenn nicht im inneren Kreis:
  wenn nicht im mittleren Kreis:
    im äußeren Kreis?
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#6

Re: In Kreis klicken funktioniert nicht

  Alt 15. Okt 2009, 12:47
Edit: @DeddyH: Yeah, wir sind ja voll das Team geworden

Versuchs mal hiermit:

uses math;
Delphi-Quellcode:
function TForm1.MouseToMoney:string;
var R: array [1..3] of single;
    MausRadius:single;
    i,MausInShape:integer;
    Mittelpunkt:tPoint;
    MausPosition:tPoint;
begin

 MausPosition:=ScreenToClient(Mouse.CursorPos);

 R[1]:=min(Shape1.Width,Shape1.Height) / 2;
 R[2]:=min(Shape2.Width,Shape2.Height) / 2;
 R[3]:=min(Shape3.Width,Shape3.Height) / 2;

 Mittelpunkt.x:=Shape1.left+round(R[1]);
 Mittelpunkt.y:=Shape1.top+round(R[1]);

 MausInShape:=0;

 for i:=3 downto 1 do
 if sqr(Mausposition.x-mittelpunkt.x) + sqr(Mausposition.y-Mittelpunkt.y) <= sqr(r[i]) then
   MausInShape:=i;

 case MausInShape of
  0:result:='--';
  1:result:='55€';
  2:result:='75€';
  3:result:='95€';
 end;
end;

Bitte in jedem MouseMove Ereigniss aufrufen:

Delphi-Quellcode:

 lblPreis.Caption:=MouseToMoney;

Schönen Tag noch, Michael
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  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 01:47 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