![]() |
Rechte Maustaste auf Image blockieren
Moin,
es geht um folgendes. Ich benutze in meinem Programm selbst erstellte Buttons, sprich image Dateien, die bei der Mouse Down, bzw. der Mouse Up Event das Bild wechseln und einem label darüber, wo beim klick der Left und Top Wert verändert wird. Funzt auch alle prima soweit. Nun mein Problem: Man kann auch mit der rechten Maustaste auf den "Button" klicke, was ich aber für ziemlich unestetisch halte, da man bei den original Buttons auch nicht rechts drauf klicken kann. Bei meiner Suche nach einem passenden Thread habe ich nun folgedes gefunden:
Code:
funzt auch soweit, allerdings verschiebt sich das Label komischerweise nach oben Rechts, aber ungewollt ebend.
If (GetAsyncKeyState(VK_RButton) < 0) Then
Kennst einer von euch vllt. eine Lösung auf mein Problem? :) |
Re: Rechte Maustaste auf Image blockieren
Die OnClick-Methode liefert dir unter anderem auch den Parameter "Shift" mit. Schau dir da mal die OH zu TShiftState an ;)
\\edit: Oha, TImage tut dies nicht... sorry -> falsch Nimm dann anstelle von OnClick besser OnMouseUp, da bekommste Shift mitgeliefert. |
Re: Rechte Maustaste auf Image blockieren
im OnMouseDown und OnMouseUp bekommst du doch als Parameter welcher Mousebutton down bzw. up ging. Reagiere in den Events also nur wenn sie durch den linken Mousebutton ausgelöst wurden.
|
Re: Rechte Maustaste auf Image blockieren
Ja ich arbeite ja mit Mouse Down und mit Mouser UP, nicht mit Click.
Aber die Frage ich wie ich das ganze mit dem Shift Integer abfrage :) |
Re: Rechte Maustaste auf Image blockieren
Delphi-Quellcode:
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if ssRight in Shift then exit; end; Das dürfte klappen *g* |
Re: Rechte Maustaste auf Image blockieren
warum shift, du hast doch den Parameter "Button"
Delphi-Quellcode:
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin end; end; |
Re: Rechte Maustaste auf Image blockieren
Ok ihr wart alle schneller.
Habe es während ich gerade offline war mit Mühe in der Delphi Hilfe gefudnen (Stolz ist).
Code:
Das Problem war folgendes:
begin
if ssLeft in Shift then begin image1.Picture:=img_btn_gedrueckt.Picture; Label1.Top:=Label1.Top+2; Label1.Left:=Label1.Left-1; sendText(befehle[1].befehl); end;
Code:
so war der andere Code.
procedure Tfrm_main.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin image1.Picture:=img_btn_normal.Picture; Label1.Top:=Label1.Top-2; Label1.Left:=Label1.Left+1; end; Die Rechte Maustaste ging zwar nicht aber die Mouse Up Event wurde ja dennoch ausgelöst, darum hat sie das Label dann auch immer verschoben. So sieht nun der neue Code aus und es funzt wunderbar, ich muss sagen ohne euch wäre ich nicht darauf gekommen :)
Code:
procedure Tfrm_main.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then begin image1.Picture:=img_btn_normal.Picture; Label1.Top:=Label1.Top-2; Label1.Left:=Label1.Left+1; end; end; |
Re: Rechte Maustaste auf Image blockieren
und was spricht gegen
Delphi-Quellcode:
procedure Tfrm_main.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin image1.Picture:=img_btn_normal.Picture; Label1.Top:=Label1.Top-2; Label1.Left:=Label1.Left+1; end; end; |
Re: Rechte Maustaste auf Image blockieren
jau danke nun funzt es wunderbar.
Hatte nämlich später das Problem, dass die Mouse UP Event nicht mehr ausgelöst wurde. Aber so scheint es nun zu funzen, danke. Ansonsten melde ich mich. |
Re: Rechte Maustaste auf Image blockieren
*hochschieb*
Weiss keiner nen Rat? :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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