![]() |
PseudoEvent MouseEnter bzw. MouseLeave
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?
|
AW: PseudoEvent MouseEnter bzw. MouseLeave
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; |
AW: PseudoEvent MouseEnter bzw. MouseLeave
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; |
AW: PseudoEvent MouseEnter bzw. MouseLeave
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 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 by Thomas Breitkreuz