![]() |
Maus darf Image nicht verlassen
Hi!
Wenn die linke Maustaste in einem Image geklickt wird, darf die Maus das Image erst wieder verlassen, wenn die Maustaste wieder losgelassen wird. Wie kannn ich das machen? Eine bessere Idee als
Delphi-Quellcode:
für jeden Rand des Images ist mir nicht eingefallen. Der Befehl ist aber ziemlich schlecht, weil er
If X < 0 then
Mouse.CursorPos := Point(Left + Image1.Left + (Width - ClientWidth) div 2, Mouse.CursorPos.Y); 1. sicherlich nicht der kürzeste ist 2. Der Cursor immer ein kleines Stückchen aus dem Image bewegt werden kann und dann erst wieder zurückschwingt. |
Re: Maus darf Image nicht verlassen
Hallo Cöster,
hier ist eine Lösung, welche die Funktion ![]()
Delphi-Quellcode:
Gruß Hawkeye
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var R : TRect; Image : TImage; begin Image := (Sender as TImage); // Image-Koordinaten in Bildschirmkoordinaten umrechnen R := Image.ClientRect; with Image.ClientOrigin do OffsetRect(R, X, Y); // Bewegung des Mauszeigers einschränken ClipCursor(@R); end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin // Beschränkung aufheben ClipCursor(nil); end; |
Re: Maus darf Image nicht verlassen
Danke. Ich hab es erst gelassen, aber jetzt hab ich es doch mit ClipRect gemacht. Läuft gut. Eine Anweisung verstehe ich allerdings nicht:
Delphi-Quellcode:
Kann man with-Anweisungen nicht immer so umschreiben, dass diese Anweisung auch heißen könnte:
with Image.ClientOrigin do
OffsetRect(R, X, Y);
Delphi-Quellcode:
?
Image.ClientOrigin.OffsetRect(R, X, Y);
Das funktioniert aber nicht. Das ist auch verständlich, weil OffsetRect keine property von ClientOrigin ist. Außerdem ist OffsetRect eine Funktion, die einen Boolean zurückliefert. Wie kann eine Funktion eine Anweisung sein? Es sieht doch sonst immer so aus: XYZ := Funktion(Parameter); und nicht einfach nur Funktion(Parameter); Wie funktioniert diese Anweisung, warum führt sie nicht zu Fehlern? |
Re: Maus darf Image nicht verlassen
nein, das with ändert nur die werte X und y
OffsetRect ist eine eigenständige Funktion, (auch wenn ich die jetzt in der hilfe nicht gefunden habe). kannst also so schreiben:
Delphi-Quellcode:
HTH Frank
var p:TPoint;
p:=Image.ClientOrigin; OffsetRect(r,p.x,p.y); |
Re: Maus darf Image nicht verlassen
Ey geil, ich wusste gar nicht, dass man Funktionen genauso aufrufen kann, wie Prozeduren (dann käme man ja rein theoretisch sogar ganz ohne Prozeduren aus, wenn man alles als Funktion schreibt, auch wenn's wahrscheinlich unperforment und unelegant sowieso wäre).
Und dass sich with auch auf Parameter bezieht, war mir bisher auch nicht klar. Wieder was gelernt, nun sogar 2 Sachen auf einmal. Danke! :bouncing4: :dp: :thumb: |
Re: Maus darf Image nicht verlassen
Zitat:
![]() Edit: Du mußt das Teil resizen unten in der Ecke... gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:42 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