Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage zur mousemove Funktion! (https://www.delphipraxis.net/98389-frage-zur-mousemove-funktion.html)

Delphieinsteiger 26. Aug 2007 16:04


Frage zur mousemove Funktion!
 
Hallo
Hätte eine Frage zur Mousemove Funktion.
Habe folgenden Quelltext:
Delphi-Quellcode:
procedure TForm2.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  Begin
case y of
0:Label7.Caption:='50,0°';
1:Label7.Caption:='49,9°';
2:Label7.Caption:='49,8°';
3:Label7.Caption:='49,7°';
4:Label7.Caption:='49,6°';
5:Label7.Caption:='49,5°';
6:Label7.Caption:='49,4°';
7:Label7.Caption:='49,3°';
8:Label7.Caption:='49,2°';
9:Label7.Caption:='49,1°';
10:Label7.Caption:='49,0°';
end;
Da ich aber über 1000 pixel habe,die eine entsprechenden Gradzahl im Label anzeigen soll und ich nicht stundenlang tippen möchte wäre meine Frage ob nicht sowas in der Art möglich wäre:
Delphi-Quellcode:
procedure TForm2.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  Begin
case y of
0..10:Label7.Caption:='50,0°'..'49,0°';
end;
Da ich noch Anfänger bin wäre ich Dankbar für einen Tip!

[edit=Sharky]Delphi-Tags eingefügt Mfg, Sharky[/edit]

marabu 26. Aug 2007 16:46

Re: Frage zur mousemove Funktion!
 
Hallo,

kannst du etwas mehr zu dem Hintergrund deiner Frage schreiben?
Die einfache Umrechnung von Pixel in Zehntelgrad kann es doch nicht sein, oder?

Grüße vom marabu

Delphieinsteiger 26. Aug 2007 17:07

Re: Frage zur mousemove Funktion!
 
Doch genau,ich möchte ja nur das sobald ich mit meiner mouse auf einer bestimmten Stelle meiner Paintbox bin, eine Gradzahl für das bestimmte Pixel auf mein Label erscheint.Die Paintbox hat eine Höhe von 500 Pixel und z.B auf Pixel 137 soll die Anzeige eine 13.7° ausgeben.Ist ja soweit auch kein Problem, meine Frage ist ja auch nur ob ich dazu jetzt wirklich 500 Befehle in meine Case anweisung schreiben muss oder ob es eleganter geht?

Die Muhkuh 26. Aug 2007 17:23

Re: Frage zur mousemove Funktion!
 
Hi,

ist aus dem Kopf getippt:

Delphi-Quellcode:
procedure TForm2.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
Begin
  Label7.Caption := FloatToStr(Y / 100) + '°C';
end;

marabu 26. Aug 2007 17:37

Re: Frage zur mousemove Funktion!
 
Hallo,

ich würde die Darstellung von der Abbildungsfunktion trennen wollen:

Delphi-Quellcode:
function MapWordToFloat(x, xRange: Word; yRange: Extended;
    negative: Boolean = False): Extended;
begin
  if not negative then
    x := xRange - x;
  Result := x * yRange / xRange;
end;

// -----

procedure TForm2.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  with Sender as TPaintBox do
    Label7.Caption := Format('%.1f °C', [MapWordToFloat(Y, Height, 50, True)]));
end;
Freundliche Grüße

Delphieinsteiger 26. Aug 2007 18:30

Re: Frage zur mousemove Funktion!
 
Vielen Dank Marabu,

Genau solch eine Variante habe ich gesucht.Hast mir eine Menge Schreibarbeit erspart.
Mein Quelltext hätte auch mit 500 case Anweisungen ziemlich komisch ausgesehen.

Danke auch an Muhkuh.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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