AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Maus abschalten je nach Form

Ein Thema von Hansa · begonnen am 27. Dez 2004 · letzter Beitrag vom 27. Dez 2004
Antwort Antwort
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

Maus abschalten je nach Form

  Alt 27. Dez 2004, 01:31
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Joe24

Registriert seit: 21. Dez 2004
Ort: Berlin
51 Beiträge
 
#2

Re: Maus abschalten je nach Form

  Alt 27. Dez 2004, 01:52
Eine einfache Lösung wäre einen leeren=transparenten Cursur dem
Formular mit den API-Befehlen LoadCursor und SetCursor zuzuweisen;
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Maus abschalten je nach Form

  Alt 27. Dez 2004, 01:58
Zitat von Joe24:
Eine einfache Lösung wäre einen leeren=transparenten Cursor...
Wenn man den Cursor nicht sieht, kommt man dann auf der Form nicht mehr an irgendwas dran ? Ist das so ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Joe24

Registriert seit: 21. Dez 2004
Ort: Berlin
51 Beiträge
 
#4

Re: Maus abschalten je nach Form

  Alt 27. Dez 2004, 02:01
Bei dem Cursor darf halt keit Hotspot definiert sein, soviel ich weis
durfte er dann auch keine Aktion auslösen.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Maus abschalten je nach Form

  Alt 27. Dez 2004, 02:08
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Joe24

Registriert seit: 21. Dez 2004
Ort: Berlin
51 Beiträge
 
#6

Re: Maus abschalten je nach Form

  Alt 27. Dez 2004, 02:13
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.
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#7

Re: Maus abschalten je nach Form

  Alt 27. Dez 2004, 02:14
Zitat von Hansa:
Ich müßte nun also die Maus in bestimmten Formularen abschalten können, aber nicht immer.
Kannst es ja so machen das wenn Tastatureingaben kommen die Maus ausgeblendet wird und beim Bewegen der Maus der Mauszeiger wieder eingeblendet wird.

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.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Joe24

Registriert seit: 21. Dez 2004
Ort: Berlin
51 Beiträge
 
#8

Re: Maus abschalten je nach Form

  Alt 27. Dez 2004, 02:19
So funktioniert es:

Delphi-Quellcode:
var
  r : TRect;
begin
  r := Rect( Left, Top, Right, Bottom);
  ClipCursor( @r);
end;
mit Right = Left
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;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 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