AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia PseudoEvent MouseEnter bzw. MouseLeave
Thema durchsuchen
Ansicht
Themen-Optionen

PseudoEvent MouseEnter bzw. MouseLeave

Ein Thema von Bjoerk · begonnen am 23. Mär 2013 · letzter Beitrag vom 23. Mär 2013
Antwort Antwort
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

PseudoEvent MouseEnter bzw. MouseLeave

  Alt 23. Mär 2013, 13:42
Ich habe ein Paintbox.Canvas mit Linien, Kreise, Schriften, Rechtecken. Jedes dieser nennen wir sie Symbole belegt eine gewisse Region auf dem Canvas. Das Programm hat auch eine Liste dieser Regionen. Nun wollte ich jedem Symbol ein PseudoEvent MouseEnter bzw. MouseLeave spendieren. Eine Prüfung ob bei MouseMove der Cursor sich innerhalb einer dieser Regionen befindet kann ich durchführen, aber es fällt mir nichts Gescheites für die beiden anderen Ereignisse ein. Wie könnte man das machen?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: PseudoEvent MouseEnter bzw. MouseLeave

  Alt 23. Mär 2013, 13:51
Jedes Symbol muss einfach wissen, ob sich die Maus gerade über ihm befindet oder nicht ("MouseOnMe: Boolean"). Und wenn sich dieser Status ändert, feuerst Du. So vielleicht?
Delphi-Quellcode:
For Symbol in Symbols do
  if Symbol.ContainsMouse(Mouse) xor Symbol.MouseOnMe then begin
    if Symbol.MouseOnMe then
      Symbol.DoOnMouseLeave()
    else
      Symbol.DoOnMouseEnter();
    Symbol.MouseOnMe := Not Symbol.MouseOnMe;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: PseudoEvent MouseEnter bzw. MouseLeave

  Alt 23. Mär 2013, 14:06
Furtbichler hat Dich wohl besser verstanden, aber mal trotzdem noch mein Text dazu:

So könntest Du Deinem übergeordneten Control (TMyDesigner) ein Event hin zu fügen, in dem Du Dein Control und die Region (TMyRegion) verarbeiten kannst.
Statt TMyRegion könntest Du natürlich auch TMySymbol behandeln.

Delphi-Quellcode:
  TMouseEnterRegion = procedure(Sender: TMyDesigner; aRegion: TMyRegion) of object;

  TMyDesigner = class(TPanel)
  protected
    fOnMouseEnterRegion: TMouseEnterRegion;
    procedure MouseMove(Shift: TShiftState; X, Y: Single); override;
  poblished
    property OnMouseEnterRegion: TMouseEnterRegion read fOnMouseEnterRegion write fOnMouseEnterRegion;
  end;

...

procedure TMyDesigner.MouseMove(Shift: TShiftState; X, Y: Single);
begin
  inherited;
  if (*SelectANewRegion*) and (Assigned(OnMouseEnterRegion)) then
  begin
    OnMouseEnterRegion(Self, *NewRegion*);
  end;
end;
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: PseudoEvent MouseEnter bzw. MouseLeave

  Alt 23. Mär 2013, 14:59
Wow Furtbichler, das sieht gut aus, sehr gut sogar. Eine Boolean hatte ich auch aber auf die Idee mir dem XOR bin ich nicht gekommen. Ist genial. Thanx!

Stahli, auch nicht schlecht. Ich habe hier allerdings kein übergeordnetes visuelles Control. Die Symbole sind auch nicht (mehr) von TGraphicContol abgeleitet (wie letztens, das betraf ein andres Programm von mir). Hier gibt nur eine ObjectList, mir deren Infos auf ein Metafile(Canvas) gezeichnet wird und die PaintBox macht nur ein StrechDraw davon.
  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 13:09 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