Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi unterschiedliche Monitor-Größe (Pixel) (https://www.delphipraxis.net/112292-unterschiedliche-monitor-groesse-pixel.html)

Sherlock 18. Apr 2008 11:08

Re: unterschiedliche Monitor-Größe (Pixel)
 
Seh ich wie Bitsetter, nicht nur Google sondern auch die VCL ist unser Freund.
Sonst könnte man ja gleich in C entwickeln.

Sherlock

Muetze1 18. Apr 2008 11:43

Re: unterschiedliche Monitor-Größe (Pixel)
 
Zitat:

Zitat von bitsetter
Warum soll man das über die API machen, wenn die Funktionen schon von der VCL unter Delphi-Referenz durchsuchenTScreen gekapselt worden sind, oder sehe ich da was falsch?

Ja, ich finde du siehst da was falsch. Wenn ich mir TScreen etc anschaue, habe ich keine Funktion mir zu einem Formular X den Monitor heraus zu bekommen. Ich müsste die Überschneidung testen wie vorgeschlagen, oder aber ich frage einfach Windows. Die VCL kapselt die WinAPI Aufrufe für MultiMon etc in der VCL, einen Teil dazu u.a. in der TScreen. Das Problem ist doch einfach nur, dass die von mir oben genannten Funktionen nicht gekapselt wurden. Warum auch immer - ob vergessen oder sonstwas.

Aber grundlegend die WinAPI als Teufelszeug zu verschreien, nur weil ich mit viel mehr Aufwand und beschränkter Funktionalität der VCL gleiches erreichen kann, warum? Es gibt eine einzige Funktion die genau und definiert die Aufgabenerstellung erfüllt.

Und ich habe schon extra darauf hingewiesen, dass der Rückgabewert der WinAPI Funktion sich in den TMonitor Instanzen in der Eigenschaft Handle wiederfindet. Ich habe nicht gesagt, dass man alles davon ausgehend mit der WinAPI lösen sollte. Die Kombination machts, schliesslich bietet die VCL auch genug - und für alles andere klappt das ja, nur halt an der einen Stelle bietet sie keine Lösung an.

Und einen zusätzlichen Ja Sager um es dann gleich ganz zu übertreiben braucht der Beitrag auch nicht. Schon allein sehe ich keinen Zusammenhang das Nutzung der WinAPI gleich C als Programmiersprache fordert. Nur weil die MSDN die Funktionen mit C dokumentiert, bedeutet dies nichts dahingehend.

Sherlock 18. Apr 2008 11:57

Re: unterschiedliche Monitor-Größe (Pixel)
 
1) Ich verschreie nichts als Teufelszeug.
2) Die von Dir genannten Methoden sind sehr wohl in TScreen implementiert (zumindest bei Delphi7).
3) Ich bin kein Jasager.
4) Sorry, daß ich den Thread zumülle.

Sherlock

Edit: Ah, Delphi 5...ok. Sorry!

Muetze1 18. Apr 2008 12:03

Re: unterschiedliche Monitor-Größe (Pixel)
 
Zitat:

Zitat von Sherlock
1) Ich verschreie nichts als Teufelszeug.

War nicht auf dich bezogen.

Zitat:

Zitat von Sherlock
2) Die von Dir genannten Methoden sind sehr wohl in TScreen implementiert (zumindest bei Delphi7).

Wie du meinem Profil entnehmen kannst, Delphi 5 und dort sind diese Funktionen nicht enthalten.

Somit ist meine Lösung der gehbare Weg für Delphi 5 und Delphi 7 hat diese implementiert, aber woher sollte ich das Wissen?

bepe 18. Apr 2008 12:16

Re: unterschiedliche Monitor-Größe (Pixel)
 
Ähm.. vielleicht habe ich etwas überlesen aber warum so umständlich? :-D

Wenn du wissen möchtest auf welchem Monitor ein Form angezeigt wird, frag es einfach :lol:

Delphi-Quellcode:
Screen.MonitorCount
Screen.Monitors

TForm.Monitor // Das hier suchst du wohl...

bitsetter 18. Apr 2008 13:31

Re: unterschiedliche Monitor-Größe (Pixel)
 
Zitat:

Zitat von Muetze1
Ja, ich finde du siehst da was falsch. Wenn ich mir TScreen etc anschaue, habe ich keine Funktion mir zu einem Formular X den Monitor heraus zu bekommen. Ich müsste die Überschneidung testen wie vorgeschlagen, oder aber ich frage einfach Windows. Die VCL kapselt die WinAPI Aufrufe für MultiMon etc in der VCL, einen Teil dazu u.a. in der TScreen. Das Problem ist doch einfach nur, dass die von mir oben genannten Funktionen nicht gekapselt wurden. Warum auch immer - ob vergessen oder sonstwas.

Aber grundlegend die WinAPI als Teufelszeug zu verschreien, nur weil ich mit viel mehr Aufwand und beschränkter Funktionalität der VCL gleiches erreichen kann, warum? Es gibt eine einzige Funktion die genau und definiert die Aufgabenerstellung erfüllt.

Und ich habe schon extra darauf hingewiesen, dass der Rückgabewert der WinAPI Funktion sich in den TMonitor Instanzen in der Eigenschaft Handle wiederfindet. Ich habe nicht gesagt, dass man alles davon ausgehend mit der WinAPI lösen sollte. Die Kombination machts, schliesslich bietet die VCL auch genug - und für alles andere klappt das ja, nur halt an der einen Stelle bietet sie keine Lösung an.

Und einen zusätzlichen Ja Sager um es dann gleich ganz zu übertreiben braucht der Beitrag auch nicht. Schon allein sehe ich keinen Zusammenhang das Nutzung der WinAPI gleich C als Programmiersprache fordert. Nur weil die MSDN die Funktionen mit C dokumentiert, bedeutet dies nichts dahingehend.

@Muetze1 Mit meinem Beitrag wollte ich lediglich darauf hinweisen, dass die Funktionen auch in der VCL (demnach ab Delphi 6) enthalten sind. Immerhin befinden wir uns in der Rubrik "VCL / WinForms / Controls".
Keine Ahnung warum du dann gleich so gereizt reagiert.

bepe 18. Apr 2008 13:53

Re: unterschiedliche Monitor-Größe (Pixel)
 
Wenn ich mich an der Stelle dann einmischen darf um hier evtl. Verwirrung für unwissende Mitlesende zu lichten....

Zitat:

MonitorFromWindow() , MonitorFromRect() und MonitorFromPoint()
Die genannten Funktionen sind in der Unit MultiMon gekapselt. TScreen stellt keine der Funktionen zur Verfügung. Das gilt für D5-D2007. Die VCL-Alternative (die Eigenschaft Monitor von TForm) ist ebenfalls in D5 schon vorhanden

Muetze1 18. Apr 2008 15:31

Re: unterschiedliche Monitor-Größe (Pixel)
 
Zitat:

Zitat von bepe
Wenn ich mich an der Stelle dann einmischen darf um hier evtl. Verwirrung für unwissende Mitlesende zu lichten....

Bzw. zu erhöhen

bepe
Zitat:

MonitorFromWindow() , MonitorFromRect() und MonitorFromPoint()
Die genannten Funktionen sind in der Unit MultiMon gekapselt. TScreen stellt keine der Funktionen zur Verfügung. Das gilt für D5-D2007. Die VCL-Alternative (die Eigenschaft Monitor von TForm) ist ebenfalls in D5 schon vorhanden


Falsch.

D7: Classes.pas, TScreen, Public:
Delphi-Quellcode:
    function MonitorFromPoint(const Point: TPoint;
      MonitorDefault: TMonitorDefaultTo = mdNearest): TMonitor;
    function MonitorFromRect(const Rect: TRect;
      MonitorDefault: TMonitorDefaultTo = mdNearest): TMonitor;
    function MonitorFromWindow(const Handle: THandle;
      MonitorDefault: TMonitorDefaultTo = mdNearest): TMonitor;
Copyright (c) 1995-2002 Borland Software Corporation

Und ja, die Monitor-Eigenschaft ist die richtige Eigenschaft welche zu nutzen ist, da sie genau das gesuchte macht:

Delphi-Quellcode:
  ...
  Result := nil;
  HM := MonitorFromWindow(Handle, MONITOR_DEFAULTTONEAREST);
  for I := 0 to Screen.MonitorCount - 1 do
    if Screen.Monitors[I].Handle = HM then
    begin
      Result := Screen.Monitors[I];
      Exit;
    end;
  ...
Copyright (c) 1995-2002 Borland Software Corporation

Zitat:

Zitat von bitsetter
Keine Ahnung warum du dann gleich so gereizt reagiert.

Ich empfehle dir eine Mail an Moderatoren zu schreiben oder den Beitrag zu melden. Dann kann dieser entfernt werden bzw. ich anderweitig abgemahnt bzw. gesperrt werden - dein Einwand ist schliesslich nicht unberechtigt.

bitsetter 18. Apr 2008 17:04

Re: unterschiedliche Monitor-Größe (Pixel)
 
Zitat:

Zitat von bepe
Wenn ich mich an der Stelle dann einmischen darf um hier evtl. Verwirrung für unwissende Mitlesende zu lichten....

Zitat:

MonitorFromWindow() , MonitorFromRect() und MonitorFromPoint()
Die genannten Funktionen sind in der Unit MultiMon gekapselt. TScreen stellt keine der Funktionen zur Verfügung. Das gilt für D5-D2007.

Da muss ich dir auch widersprechen, die Funktionen sind in Delphi 6 sowie Delphi 2006 in der Komponente TScreen vorhanden.

Zitat:

Zitat von Muetze1
Zitat:

Zitat von bitsetter
Keine Ahnung warum du dann gleich so gereizt reagiert.

Ich empfehle dir eine Mail an Moderatoren zu schreiben oder den Beitrag zu melden. Dann kann dieser entfernt werden bzw. ich anderweitig abgemahnt bzw. gesperrt werden - dein Einwand ist schliesslich nicht unberechtigt.

:shock: Wegen so einer Kleinigkeit, hätte ohnehin kein Grund dazu. Außerdem wird ausgerechnet dich hier deswegen niemand sperren. :)
:cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 Uhr.
Seite 2 von 2     12   

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