Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Rechte Maustaste auf Image blockieren (https://www.delphipraxis.net/47963-rechte-maustaste-auf-image-blockieren.html)

Stony2k 18. Jun 2005 15:14


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:
If (GetAsyncKeyState(VK_RButton) < 0) Then
funzt auch soweit, allerdings verschiebt sich das Label komischerweise nach oben Rechts, aber ungewollt ebend.
Kennst einer von euch vllt. eine Lösung auf mein Problem? :)

dizzy 18. Jun 2005 15:16

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.

SirThornberry 18. Jun 2005 15:32

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.

Stony2k 18. Jun 2005 15:41

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 :)

Ultimator 18. Jun 2005 15:47

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*

SirThornberry 18. Jun 2005 16:03

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;

Stony2k 18. Jun 2005 16:13

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:
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;
Das Problem war folgendes:
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;
so war der andere Code.
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;

SirThornberry 18. Jun 2005 16:26

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;

Stony2k 19. Jun 2005 13:20

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.

Stony2k 20. Jun 2005 14:11

Re: Rechte Maustaste auf Image blockieren
 
*hochschieb*
Weiss keiner nen Rat? :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr.
Seite 1 von 3  1 23      

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