AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein MousePosition in dynamischer Klasse
Thema durchsuchen
Ansicht
Themen-Optionen

MousePosition in dynamischer Klasse

Ein Thema von BAMatze · begonnen am 7. Aug 2009 · letzter Beitrag vom 11. Aug 2009
 
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

MousePosition in dynamischer Klasse

  Alt 7. Aug 2009, 07:53
Hallo und guten Morgen an alle DP´ler,

Ich hab da ein kleines Problem. Ich möchte in einer abgeleiteten TPaintBox meine Position der Mouse bestimmen. Hab eigendlich auch schon alle nötigen Quellcode herausgesucht aber in meinen Versuchen sind diese leider noch nicht zu gewünschten Ergebnis gekommen.
Ich denke ich setze diesen Quellcode:
Delphi-Quellcode:
    TempPoint.X := Left;
  TempPoint.Y := Top;
  ScreentoClient(TempPoint);
noch nicht an die richtige Stelle in meinem Projekt. Aber erstmal schnell zur Situation. Also nur nochmal zur Verdeutlichung, das Ziel ist wenn ich an der oberen linken Ecke von meiner PaintBox bin, möchte ich den Punkt(0,0) haben und am rechten unteren Eck den Punkt(PaintBox.Width, PaintBox.Height).

Das Auslesen der Mouse habe ich dafür so in die abgeleitete TPainbox-Klasse eingesetzt:
Delphi-Quellcode:
const MouseOver = CM_MOUSEENTER;
      MouseLeave = CM_MOUSELEAVE;

Type TPaintboxPos = Class(TPaintbox)
  private
    FbMouseOnPB: boolean;
    function GetxWert: integer;
    function GetyWert: integer;
    procedure CMMouseOver(var Msn: TMessage); message MouseOver;
    procedure CMMouseLeave(var Msn: TMessage); message MouseLeave;
  protected
  public
    property xPos: integer read GetxWert;
    property yPos: integer read GetyWert;
End;

implementation

function TPaintboxPos.GetxWert: integer;
begin
  if FbMouseOnPB then result := Mouse.CursorPos.X
  else result := -1;
end;

function TPaintboxPos.GetyWert: integer;
begin
  if FbMouseOnPB then result := Mouse.CursorPos.Y
  else result := -1;
end;

// Wenn die Maus über dem Label ist, ändert sich der Cursor, damit erkannt werden
// kann, dass man hier eine Eingabe tätigen kann.
procedure TPaintboxPos.CMMouseOver(var Msn: TMessage);
begin
  Cursor := crHandPoint;
  FbMouseOnPB := true;
end;
// Cursor wird auf den normalen Default-Cursor zurück gesetzt.
procedure TPaintboxPos.CMMouseLeave(var Msn: TMessage);
begin
  FbMouseOnPB := false;
  Cursor := crDefault;
end;
Nichts wildes, wie man sieht und funktioniert. Aber es werden noch die absoluten Koordinaten angezeigt. Ich habe den Screentoclient schon in die createWnd-Prozedure meiner Oberklasse (in der die PaintBox kreiert wird) gesetzt, leider keine Änderungen am Ergebnis und auch in der FromShow-Procedure der Form, in der die Oberklasse eingebunden wird, gibt es kein richtiges Ergebnis.

Hoffe ihr könnt mir wieder bei dem Problem helfen.

Vielen Dank
BAMatze
2. Account Sero
  Mit Zitat antworten Zitat
 


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:33 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