Fenster auf bestimmtem Monitor anzeigen lassen
-
Hallo zusammen,
ich habe eine kleine Anwendung geschrieben, die bei mir
auf zwei Monitoren laufen soll. Also an einer Grafikkarte mit
zwei Ausgängen.Mein Programm hat zwei Forms.
Das erste wird bei starten auf dem 1. Monitor angezeigt.
Das zweite soll, auf Knopfdruck, auf dem 2. Monitor geöffnet werden.Hab schon irgendwas von der Eigenschaft Monitor bei TCustomForm gelesen,
aber weiss nicht wie dem Form den Monitor zuweisen soll?Ahoy Netzcowboy
-
und muss über die entsprechend Schnittstelle (Betriebssystemfunktionen)angesteuert werden.
Am einfachsten: brauchst Du deine Anwendung nur mit zwei Monitoren entwickeln und die Forms wie gewünscht platzieren. Den Rest erledigt die IDE.
Die Details sind mir aber nicht bekannt.
Ansonsten kann man noch über DirectX die angeschlossenen Geräte ermitteln (und entsprechend zuweisen), um im Anschluss damit arbeiten zu können.
-
Hallo Linux, vielen dank erstmal für deine Antwort.
Deine "Einachlösung" habe ich gerade ausprobiert, geht aber leider nicht.
Nachdem compilieren, zeigt er mit das zweite Fenster dann auf dem ersten Bildschirm, haargenauso wie ich es auf dem zweiten Monitor vorher positioniert habeKannst du mir das mit dem auslesen über DirectX etwas genauer erklären,
oder weisst du wo ich was darüber nachlesen kann?
Ich hab vorher noch nie in die Richtung irgendetwas gemacht ....Ahoy Netzcowboy
-
Hast Du denn im Optionsmenü (Grafikkartentreiber) eingestellt, dass dein Desktop grösser ist. Mit zusätzlich an den Laptop angeschlossenen Bildschirm funktioniert es jedenfalls.
Wenn das Fenster einmal auf den anderen Bildschirm geschoben wurde, bleibt es da; auch beim nächsten Start/Aufruf.Vielleicht musst Du das Fenster nach dem Start erst verschieben (zunächst unsichtbar) um es danach auf Visible zu setzen.
-
Für das Fenster musst du im Objektinspektor für Position auch poDesigned eingestellt haben... wenn da poScreeCenter steht, wird das Fenster sonst bei Start der Anwendung automatisch verschoben...
-
... erst danach auf Visible setzen
-
Nochmals danke an euch beide...
habe beide Hinweise zur Kenntnis genommen, und selber auch noch im ObjectInspector gesehen, dass du DefaultMonitor auf dmActiveForm stand...hab ich auf dmDesktop umgestellt.
Vorher hatte er wenn mein Monitor zb. auf 800x600 gestellt war und ich Form->left auf 1000 gesetzt hatte... das Form nicht auf den zweiten geschoben, sondern 1000-800 gerechnet ... und das Form dann auf dem ersten Monitor mit 200 Pixel Abstand vom linken Rand angezeigt.
Keine Ahnung woran es genau lag. Jetzt jedenfalls kann ich das Fenster vorher per Form->Left auf die gewünschten "X-Pixel" setzen, und er überträgt es automatisch auf den zweiten Monitor sobald ich auf Form->Show() geh.
Ahoy Netzcowboy