AGB  ·  Datenschutz  ·  Impressum  







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

Maus beschränken

Ein Thema von SaFu · begonnen am 21. Feb 2007 · letzter Beitrag vom 28. Feb 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

Re: Maus beschränken

  Alt 24. Feb 2007, 13:05
Nee, eigentlich ist es egal welchen Style die Form hat
denn die Beschränkung hat ja nichts mit der Form selber zu tun.
Es wird ja schließlich nur die Position der Form und sonst nichts weiter davon verwendet.

Wie genau hast du es denn aktuell gelöst?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#12

Re: Maus beschränken

  Alt 24. Feb 2007, 13:21
Hab es erstmal test weise über ein Button auf der Ersten Form realiesiert.

Soll aber eigentlich so funktionieren das wenn ich die Form2 Schließe das die Maus wieder auf Form8,Form9 und Form10 beschränkt ist.

Könnte das ja über das OnClose Ereignis der Form2 machen aber wie gesagt habe da einwenig probleme.
Ich glaube das Problem ist das die Form8,Form9 und Form10 immer zu sehen sind die Laufen Extern auf einen LCD Monitor den man interaktiv bedienen kann.
Das heist mein Monitor ist eigentlich erweitert um den LCD Monitor jetzt kann man aber immoment die Maus vom LCD auf den Normal Monitor ziehen und etwas bedienen was aber nicht sein soll.

Erst wenn man auf das normale programm auf dem Monitor zugreift soll die Maus vom LCD verschwinden. nach der bedienung des Programms soll die Maus auf dem LCD wieder zu verfühgung stehen und auch nur da. das heist ich muss die Maus danach wieder beschränken und das Funktionier nicht

Wenn iches so schreibe
Delphi-Quellcode:
procedure TForm1.MausbesClick(Sender: TObject);
var maus :tRect;
begin
  maus.Left:= Form8.Left;
  maus.Top:= Form8.Top;
  maus.Right:= Form8.Left + Width;
  maus.Bottom:= Form8.Top + Height;
  ClipCursor(@maus);
end;
ist die Maus auf Form1 beschränkt
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#13

Re: Maus beschränken

  Alt 28. Feb 2007, 03:52
hmmm, wenn das so ist, wie wäre es dann, wenn du die Maus nicht versuchst auf die verschiedenen Forms zu beschränken, sondern gleich auf das LCD?

Das würde dann vorallem die Verwaltung der Maus vereinfachen (statt auf mehrere Forms nur noch auf einen Monitor)

Derzeit versuchst du ja sozusagen die Mausbeschränkung auf mehrere Positionen (Forms) abzugleichenund, wobei es dann doch auch mehrere Zustände gäbe, welche sich gegenseitig beeinflussen könnten.
So gäbe es dann aber nur noch 2 Zustände ... Maus beshränkt, oder nicht.

vermutlich etwa so
ClipCursor(@Screen.Monitors[1].WorkareaRect); Über Screen und Screen.Monitors (Unit Forms) müsstest du dann vorher nur noch das LCD finden.


nach der bedienung des Programms ... Dieses soll jetzt aber nicht bedeuten, daß sich dein Programm beendet?
Jedenfalls konnte ich feststellen, das die Beschränkung beim Beenden des Programms ebenfalls mit aufgehoben wird.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Maus beschränken

  Alt 28. Feb 2007, 07:31
Zitat von himitsu:
Jedenfalls konnte ich feststellen, das die Beschränkung beim Beenden des Programms ebenfalls mit aufgehoben wird.
Nur aus Neugier: Ist das auch so, wenn man das Programm mit dem Taskmanager abschieest?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#15

Re: Maus beschränken

  Alt 28. Feb 2007, 08:15
Das hört sich ja ganz gut an habe auch schon in der Delphi Hilfe nachgeschaut, wie ermittel ich denn den Aktuellen Monitor und den LCD.
Noch eine Anmerkung, der LCD ist über eine 2 Grafikkarte angesteuert.
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#16

Re: Maus beschränken

  Alt 28. Feb 2007, 08:36
Was die Monitore angeht, da kann ich nicht helfen ... hab ja nur einen Monitor ;(

Allerdings ist dieses ja schon 'ne neue Frage ... also in 'nem eigenem/neuen Thread nochmals nachfragen ... falls die Suche nicht schon irgendwo was dazu ausspuckt ^^


Ich denk mal mit Screen.MonitorFromWindow(Form1) sollte es gehn.
Man könnte ja auch mal prüfen welchen Monitor man direkt über Screen (nicht Screen.Monitors) bekommt?

Bei 2 Monitoren könnte es vermutlich aber auch schon ausreichen, wenn du den (sekundären) Monitor suchst.

If not Screen.Monitors[...].Primary Then ... Der "normale" Monitort wird ja bestimmt als Primärer eingerichtet sein.


@Luckie:

Hmm, ich hätt jetzt zwar gedacht, daß es da auch so ist, da sich ja anscheinend Windows um das Freigeben kümmert ... schließlich wird doch nichts für's Freigeben im Programm registriert, aber


Erstmal zu SirThornberry's "Strg + Alt + Entf"-Thease:
anscheinend kommt es wohl nicht (unbedingt) auf's Drücken von "Strg + Alt + Entf" an, sondern der WindowsTaskManager gibt den Bereich immer frei, wenn er den Eingabefokus bekommt.

Daher kann man das mit diesem TaskManager nicht versuchen.


Also ein Versuch mit'm Process Explorer, welcher nicht von sich aus den Bereich freigibt.
Und da war es genauso, sobald der Versuchsprozess abgeschoßen wurde war auch der Mauszeiger wieder frei.


In der Konsole scheint es genauso, nur daß dort auch so schon recht schnell der Bereich wieder freigegeben wird ... z.B. auch dann wenn die Konsole "nur" den Eingabefokus zurückbekommt.


Auf WinXP getestet.


QuellCode zu den Anhängen:
Delphi-Quellcode:
// Project1

Procedure TForm1.Button1Click(Sender: TObject); // einsperren
  Var Maus: TRect;

  Begin
    Maus.Left := Left;
    Maus.Top := Top;
    Maus.Right := Left + Width;
    Maus.Bottom := Top + Height;
    ClipCursor(@Maus);
  End;

Procedure TForm1.Button2Click(Sender: TObject); // freigeben
  Begin
    ClipCursor(nil);
  End;
Delphi-Quellcode:
Program Project2;

{$APPTYPE CONSOLE}

Uses Windows;

Var Maus: TRect;

Begin
  Maus.Left := 100;
  Maus.Top := 100;
  Maus.Right := 500;
  Maus.Bottom := 400;
  ClipCursor(@Maus);
  ReadLn;
  WriteLn('end');
End.
Angehängte Dateien
Dateityp: exe project2_678.exe (9,5 KB, 3x aufgerufen)
Dateityp: exe project1_197.exe (150,5 KB, 3x aufgerufen)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#17

Re: Maus beschränken

  Alt 28. Feb 2007, 08:42
Naja und sonnst gibt es keine einfacheren Lösungen

Das hört sich für mich eigentlich Kompliziert an.
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 00:47 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