Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wer weis was "Screen.MonitorFromPoint" macht ? [Beantwortet] (https://www.delphipraxis.net/106764-wer-weis-screen-monitorfrompoint-macht-%5Bbeantwortet%5D.html)

Corpsman 16. Jan 2008 10:55


Wer weis was "Screen.MonitorFromPoint" macht ? [Be
 
Hallo alle miteinander,

Ich versuche gerade eine Fremdanwendung zu Compilieren und der Compiler motzt Rum weil er

Screen.MonitorFromPoint nicht findet.

Ich habe Delphi5 Prof

Die Procedure scheint wohl aus D6 zu stammen.

Aber was macht die Procedure, bzw wie kann ich die nu nachbaun ...

Weis da jemand ne Spezifikation, Google gab nicht wirklich was her.

sirius 16. Jan 2008 10:59

Re: Wer weis was "Screen.MonitorFromPoint" macht ?
 
Es gibt dir den Monitor an, auf dem ein bestimter Punkt liegt. Was der Name halt so sagt.

Corpsman 16. Jan 2008 11:03

Re: Wer weis was "Screen.MonitorFromPoint" macht ?
 
Nien du verstehst anscheinend nicht recht.

Ich mus die Procedur nachbaun unter D5

D.h. ich sollte schon mehr wissen.

sirius 16. Jan 2008 11:05

Re: Wer weis was "Screen.MonitorFromPoint" macht ?
 
Ich hab grad geschaut.
Hast du die Unit MultiMon? Ansonsten über die Api GetmonitorInfo.

OregonGhost 16. Jan 2008 11:05

Re: Wer weis was "Screen.MonitorFromPoint" macht ?
 
Ich kenne die Delphi-Funktion zwar nicht, aber ich tippe mal, dass die ein Wrapper um MSDN-Library durchsuchenMonitorFromPoint ist.

Corpsman 16. Jan 2008 11:54

Re: Wer weis was "Screen.MonitorFromPoint" macht ?
 
jup diese Unit habe ich,

in der gibts ne Function

Delphi-Quellcode:
xMonitorFromPoint
Allerdings ist die nicht von ausen sichtbar ...

sirius 16. Jan 2008 12:06

Re: Wer weis was "Screen.MonitorFromPoint" macht ?
 
Aber MonitorfromPoint wird im initialization-Teil mit xMonitorfromPoint belegt. Also kannst du MonitorfromPoint aufrufen.
Dann bekommst du ein Handle und das wird in TScreen mit allen Monitoren verglichen (TScreen.FindMonitor).

Edit: Oder du nimmst statt Multimon die von Dedy verlinkte Funktion direkt aus der winAPI.

Corpsman 16. Jan 2008 12:55

Re: Wer weis was "Screen.MonitorFromPoint" macht ?
 
OK nu mus ich gestehen bin ich nicht der hellste was WinAPI angeht.

biher habe ich mir mit der Überbrückung geholfen

Delphi-Quellcode:
Function IsDisplayEdge(curPoint: TPoint): boolean;
Var
  ret1, ret2, ret3, ret4: boolean;
Begin
  //  ret1 := (Screen.MonitorFromPoint(Point(curPoint.X - 1, curPoint.Y), mdNull) = Nil);
  //  ret2 := (Screen.MonitorFromPoint(Point(curPoint.X + 1, curPoint.Y), mdNull) = Nil);
  //  ret3 := (Screen.MonitorFromPoint(Point(curPoint.X, curPoint.Y + 1), mdNull) = Nil);
  //  ret4 := (Screen.MonitorFromPoint(Point(curPoint.X, curPoint.Y - 1), mdNull) = Nil);
  //  result := (ret1 Or ret2 Or ret3 Or ret4);
  result := True; // So Gings, das da Oben Prüft irgendwas mit dem Monitor ...
End;
Und es geht wunderbar, Nachdem ich selbst kein Multimonitor system habe, wird das auch so bleiben ;).

Mag mir einer von euch die Lösung , wie für Dumme einfach geschwind hinpinseln ?

sirius 16. Jan 2008 12:57

Re: Wer weis was "Screen.MonitorFromPoint" macht ?
 
Hast du TScreen.findmonitor?
Edit:Quatsch brauchst du ja nicht.

Mit Unit MultiMon
Delphi-Quellcode:
Function IsDisplayEdge(curPoint: TPoint): boolean;
Var
  ret1, ret2, ret3, ret4: boolean;
Begin
   ret1 := (MonitorFromPoint(Point(curPoint.X - 1, curPoint.Y), MONITOR_DEFAULTTONULL) = 0);
   ret2 := (MonitorFromPoint(Point(curPoint.X + 1, curPoint.Y), MONITOR_DEFAULTTONULL) = 0);
   ret3 := (MonitorFromPoint(Point(curPoint.X, curPoint.Y + 1), MONITOR_DEFAULTTONULL) = 0);
   ret4 := (MonitorFromPoint(Point(curPoint.X, curPoint.Y - 1), MONITOR_DEFAULTTONULL) = 0);
   result := (ret1 Or ret2 Or ret3 Or ret4);
End;
Oder nur über WinAPI:
Delphi-Quellcode:
var MonitorFromPoint:function(pt:TPoint;Flags:Cardinal):THandle stdcall=nil;
Function IsDisplayEdge2(curPoint: TPoint): boolean;
const MONITOR_DEFAULTTONULL=0;
Begin
  if not assigned(MonitorFromPoint) then begin
    result:=false;
    @MonitorfromPoint:=getprocaddress(getmodulehandle('user32.dll'),'MonitorFromPoint');
    if not assigned(MonitorFromPoint) then exit; //oder Fehler
  end;
  result := (MonitorFromPoint(Point(curPoint.X - 1, curPoint.Y), MONITOR_DEFAULTTONULL) = 0)
         or (MonitorFromPoint(Point(curPoint.X + 1, curPoint.Y), MONITOR_DEFAULTTONULL) = 0)
         or (MonitorFromPoint(Point(curPoint.X, curPoint.Y + 1), MONITOR_DEFAULTTONULL) = 0)
         or (MonitorFromPoint(Point(curPoint.X, curPoint.Y - 1), MONITOR_DEFAULTTONULL) = 0);
End;

Corpsman 16. Jan 2008 13:29

Re: Wer weis was "Screen.MonitorFromPoint" macht ?
 
Cool das geht,

Vielen Dankeschön.

Nun kann ich mich daran machen die Wii Remote mit Deplhi auf Höchstleistungen zu Trimmen ;).


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 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