AW: WM_MOUSEMOVE in mehr als einem TControl verarbeiten.
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Achja und: Vielen Dank für Deine Hilfe!!!! |
AW: WM_MOUSEMOVE in mehr als einem TControl verarbeiten.
[quote]
Zitat:
Deine Frage! Zitat:
Zitat:
Alternativ innerhalb, einfach ein GetParent(SelectionBox.Handle) mit einbauen. Zitat:
gruss |
AW: WM_MOUSEMOVE in mehr als einem TControl verarbeiten.
Zitat:
Dieser Vorschlag war dazu gedacht um dir zu zeigen das TImage kein Parent von TGraphicControl ist. Auch kein Child von TForm oder Child von TPanel. Nochmal es ist STATIC Sorry ich möchte gerne helfen aber du verstehst es scheinbar nicht. Siehe die Enumerierungen aller Childs von TForm auf dem dein Image liegt. Ich denke deine Herangehensweise ist einfach falsch. Nimm eine TPaintBox ohne irgendwelche Ableitungen und zeichne ausschließlich alles dort hinein. Du willst zwischen verschiedenen Fenstern hin und her jonglieren.. Messagen senden, gut aber TImage hat kein Fenster-Handle "STATIC" und nun? Um das zu analysieren habe ich dir gesagt verwende ein Spy Tool. So wie du sehen kannst ist TPanel ein Kind Fenster von TForm und TButton ein Kind Fenster von TPanel. Die MouseMove Messagen also in deinem Beispiel WM_SETCURSOR werden von der TForm ausgewertet und über Image.canvas.TextOut in das Image gezeichnet. Die Frage ist was sagt dir das ? gruss |
AW: WM_MOUSEMOVE in mehr als einem TControl verarbeiten.
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Oder eben in kompletter Analogie: s. Anhang: Ich möchte, dass sich die mit roten Kreisen markierten Pfeilchen weiterbewegen, wenn ich mit der Maus über meinem TGraphicControl (das ist das gedrehte, gestrichelte Rechteck) fahre. Das muss doch irgendwie auf elegante Art und Weise gehen? Selbstverständlich kann ich einfach alles Zeichnen in einer Paintbox. Das habe ich in der bisherigen Version auch so gelöst. Ich dachte, wenn ich ein eigenes Control erstelle, ist das vielleicht etwas professioneller, da diese Auswahlbox (also das Rechteck) auf Mausevents reagieren soll und auch Callback Procedures bekommen soll, und es beliebig viele Instanzen davon zur gleichen Zeit geben können soll. etc. |
AW: WM_MOUSEMOVE in mehr als einem TControl verarbeiten.
Zitat:
Zitat:
Zitat:
gruss |
AW: WM_MOUSEMOVE in mehr als einem TControl verarbeiten.
Okay, ich versuche es mit dem Mousemove des TForms! Danke!!
|
AW: WM_MOUSEMOVE in mehr als einem TControl verarbeiten.
Zitat:
Auf dein Beispiel angewendet. Musst du aber auf dein Control hin noch ändern.. (Button1 wäre dann dein TGraphicControl)
Delphi-Quellcode:
Wenn du nun auf den Button gehst ändert sich die X-Position vom Image Relativ zum Screen.
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); var p: TPoint; begin GetCursorPos(p); // p.x und p.y wären dann die aktuellen Position von deinen Pfeilen Windows.ScreenToClient(Handle, p); // <<< Form Handle deshalb "Windows.ScreenToClient" und nicht ScreenToClient image1.Canvas.TextOut(1,30,'Button: ' +inttostr(x)+','+inttostr(y) + ' '); // + ' ' damit überschüssige Zeichen gelöscht werden (Uninteressant für dein Problem) image1.Canvas.TextOut(1,1,'Image: '+inttostr(p.x)+','+inttostr(p.y)+ ' '); end; Sorry es war nicht ganz einfach zu verstehen was du eigentlich wolltest. gruss |
AW: WM_MOUSEMOVE in mehr als einem TControl verarbeiten.
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Guck dir bitte, wenn du Zeit hast, nochmal modifizierte Beispiel im Anhang an. Ich habe jetzt eine neues TControl Namens TMyButton, abgeleitet von TButton definiert. Dieses soll irgendetwas machen, sobald die Maus darauf rumfährt (das funktioniert: Es erscheint als Button.caption die position der Maus, und diese wird aktuallisiert, solange die Maus auf dem Button ist). Allerdings wird, während die Maus auf dem Button ist, das OnImage1MouseMove Ereignis logischerweise nicht mehr ausgeführt. Wie kann ich erreichen, dass dieses Ereignis ausgeführt wird, OBWOHL die Maus auf dem TMyButton ist? Ich kann es ja schlecht in das OnMouseMove des TMyButtons schreiben, denn der kennt das TImage ja gar nicht... Verständlicher? Ich weiß einfach nicht, wie ich mich sonst ausdrücken soll?! |
AW: WM_MOUSEMOVE in mehr als einem TControl verarbeiten.
Ok ;)
Letzter Versuch. Werde es mir Anschauen. EDIT: Das wird so nicht gehen weil dein Image kein Handle zur Verfügung hat an dem ich Messagen schicken könnte. gruss |
AW: WM_MOUSEMOVE in mehr als einem TControl verarbeiten.
Schade, aber wie teilt denn das Panel (oder die Form) dem Image mit, dass sich gerade die Maus darauf bewegt und kann man da nicht irgendwie eingreifen? Oder beim Bearbeiten des WM_MouseMove im TButton irgendwie zurückmelden, dass die Nachricht nicht verarbeitet worden ist, oder so? -> Message.Result... ?
//edit gut, dann werde ich wohl vermutlich auf die Variante umsteigen, alles in eine Paintbox bzw ein Image zu zeichnen... :-( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 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