![]() |
Maus abschalten je nach Form
Hi,
die Maus wird mir für eine Tastaturanwendung langsam zu kompliziert. Wie immer im Leben, gibt es aber Formulare, in denen sie schon Sinn macht. Ich müßte nun also die Maus in bestimmten Formularen abschalten können, aber nicht immer. Also brauche ich den Befehl, wie das geht und wo ich ihn am besten einbaue. Da ich formularweit viel OOP eingebaut habe genügt es eventuell, nur den WinAPI Befehl zentral einzubauen. |
Re: Maus abschalten je nach Form
Eine einfache Lösung wäre einen leeren=transparenten Cursur dem
Formular mit den API-Befehlen LoadCursor und SetCursor zuzuweisen; |
Re: Maus abschalten je nach Form
Zitat:
|
Re: Maus abschalten je nach Form
Bei dem Cursor darf halt keit Hotspot definiert sein, soviel ich weis
durfte er dann auch keine Aktion auslösen. |
Re: Maus abschalten je nach Form
Die Maus muß weg sein als Eingabemedium. Was auf dem bildschirm zu sehen ist, das ist mir egal. Eventuell ist es sogar besser der Mauscursor ist zu sehen und macht nur nichts.
Wenn man eine Endlosschleife einbaut, dann ist von der Maus auch nichts zu sehen. Insofern gehe ich davon aus, daß es eine WinApi-Funktion gibt, die das regelt. Und die muß ich dann eben einbauen. |
Re: Maus abschalten je nach Form
Ich habe das gerade mal mit der API-Funktion ShowCursor( FALSE) ausprobiert.
Der Cursor ist so zwar nicht sichtbar aber die Cursor-Aktionen leider nicht deaktiviert. |
Re: Maus abschalten je nach Form
Zitat:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} {--------------------------------------------------------------------------------------------------} procedure TForm1.FormCreate(Sender: TObject); begin Self.KeyPreview := True; end; {--------------------------------------------------------------------------------------------------} procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin with Screen do if Cursor = crDefault then Cursor := crNone; end; {--------------------------------------------------------------------------------------------------} procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin with Screen do if Cursor = crNone then Cursor := crDefault; end; {--------------------------------------------------------------------------------------------------} end. |
Re: Maus abschalten je nach Form
So funktioniert es:
Delphi-Quellcode:
mit Right = Left
var
r : TRect; begin r := Rect( Left, Top, Right, Bottom); ClipCursor( @r); end; und Bottom = Top. ClipCursor ist eine API-Funktion. Oder ander Variante über OnMouseMove-Event
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer); var CurPos : TPoint; begin CurPos := Mouse.CursorPos; if ( X < Width div 2) and ( Y > X) and ( Y < Height -X) then CurPos := Point( Left , CurPos.Y) else if not ( X < Width div 2) and ( Y > Width -X) and ( Y < Height -( Width -X)) then CurPos := Point( Left +Width , CurPos.Y) else if ( Y < Height div 2) and ( X > Y) and ( X < Width -Y) then CurPos := Point( CurPos.X, Top) else if not ( Y < Height div 2) and ( X > Height -Y) and ( X < Width -( Height -Y)) then CurPos := Point( CurPos.X, Top +Height); if ( CurPos.X = Mouse.CursorPos.X) and ( CurPos.Y = Mouse.CursorPos.Y) then ShowCursor( TRUE) else begin CurPos := Mouse.CursorPos; ShowCursor( FALSE); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 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