![]() |
Re: Rechte Maustaste auf Image blockieren
Hi Toni,
deine Lösung sieht zwar gut aus, aber der Grafische Aufbau meines Programmes lässt es nicht zu Panels oder auch Labels anstatt von Messageboxen zu verwenden, da es auf gut deutsch "beschissen" aussehen würde. Aber du hast den Focusverlust mit dem aktiven Fenster angesprochen. Gibt es eine Möglichkeit diesen Focusverlust zu unterbinden? @Khabarakh: Deine Lösungs klingt, gut, da bin ich noch garnicht drauf gekommen. Ich werde es mal versuchen. |
Re: Rechte Maustaste auf Image blockieren
So, ich habe das ganze nun folgendermassen gelöst:
Code:
function SendText( Command: String ): HWND;
var Handle: HWND; i: Integer; begin Handle := FindWindow( 'Ultima Online', nil ); if ( Handle = 0 ) then Handle := FindWindow( 'Ultima Online Third Dawn', nil ); if Handle = 0 then begin Result := 0; MouseUpFix:=Result; exit; end; // Send an enter first SendMessage( Handle, WM_CHAR, 13, 0 ); // Send the command char { //cChar := Config.GetString( 'commandchar' ); cChar := '.'; for i := 0 to length( cChar ) do SendMessage( Handle, WM_CHAR, Ord( cChar[i] ), 0 ); } for i := 0 to length( Command ) do SendMessage( Handle, WM_CHAR, Ord( Command[i] ), 0 ); // Send an enter at the end SendMessage( Handle, WM_CHAR, 13, 0 ); Result := Handle; end;
Code:
Funzt alles wunderbar.
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; If MouseUpFix = 0 Then begin Application.MessageBox( PChar( 'Der Ultima Online Client muss gestartet sein !'),'Fehler!', MB_OK+MB_ICONERROR ); MouseUpFix := 1; end; end; end; Aber ich habe bemerkt, wenn man ganz schnell hintereinander auf das "Ok" der Fehlermeldung und auf das Image klickt, wird manchmal die Mouse Down nicht ausgeführt, heisst, das Label verschiebt sich immer weiter nach oben. Muss wohl was mit dem "Fokusverlust" zutun haben. Wenn wer Rat weiss, der möge sich melden :) |
Re: Rechte Maustaste auf Image blockieren
Okay, da dein Form wohl eh relativ "unsauber" geproggt ist - Khabarakh's Vorschlag würde ich da auch dazuzählen - könnte ich dir mal eine Weitere "unsaubere" Lösung anbieten.
Starte beim OnMouseDown einen Timer, der die Werte prüft. Sollte beim OnMouseUp irgendetwas schiefgegangen sein setze die Werte nach 1000ms mauell zurück. Das ist zwar etwas aufwand, sollte das Problem aber eindeutig beheben. Du kannst im Timer auch noch abfragen ob die Maustaste noch immer gedrückt ist und dann nicht manuell zurücksetzen, falls der user es "witzig" findet 30 sec auf den Button zu drücken. Musst nur Im Timer den Timer selbst wieder disablen, damit der reset nicht willkürlich gemacht wird. regards Toni |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 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