![]() |
AW: MonitorCount im Betrieb aktualisieren?
ohne es getestet zu haben, dürfte die sauberste Methode sein, eine neue Klasse von TScreen abzuleiten und diese neue Klasse um eine Refresh-Methode zu erweitern.
|
AW: MonitorCount im Betrieb aktualisieren?
Nochmal mein Edit oben lesen! Oder einfach das von shmia lesen. Mein VCL-Source ist nur etwas neuer als der von shmia ;)
|
AW: MonitorCount im Betrieb aktualisieren?
Mit den Anregungen hier bin ich mal auf Endeckungsreise gegangen und habe an unterschiedlichen Stellen ind forms.pas den Aufruf von "Screen.GetMonitors" entdeckt.
Code:
Ich würde das für eine Art "Refresh" halten. Aber - die Methode ist private.
procedure TScreen.GetMonitors;
begin ClearMonitors; {$IF DEFINED(CLR)} EnumDisplayMonitors(0, nil, TMonitorEnumerator.Create(Screen.FMonitors).FEnumProc, 0); {$ELSE} EnumDisplayMonitors(0, nil, @EnumMonitorsProc, LongInt(Screen.FMonitors)); {$IFEND} end; Jetzt wollte ich TScreen in forms.pas um eine öffentliche Methode ergänzen, die GetMonitors aufruft. Es ist mir fast perinlich aber ich bekomme forms.pas nicht übersetzt. Kann mir mal kurz einer nen Schubs geben? Müsste forms.pas als Bestandteil des Projektes nach Veränderung nicht automatisch übersetzt werden??? In jedem Fall ist forms.pas in dem im Optionen.Suchpfad eingetragegen Verzeichnis $(BDS)\SOURCE\WIN32\VCL vorhanden und lesbar. Gruß RaBe Ups: Posts auf 2. Seite nicht gesehen - pfui über mich. |
AW: MonitorCount im Betrieb aktualisieren?
Die VCL Resourcen ändert man halt nicht.
Delphi nutzt nie die PAS, sondern die entsprechenden vorkompilierten DCUs oder die Units, welche in den BPLs liegen, wenn man Runtimepackages nutzt. Wenn doch, dann muß man diese DCUs manuell kompilieren und die abhängigen BPLs neu erzeugen.
Delphi-Quellcode:
führt einen Refresh durch ... man mag es kaum glauben. :lol:
Screen.FindMonitor(0);
|
AW: MonitorCount im Betrieb aktualisieren?
Zitat:
Zitat:
Delphi-Quellcode:
auf. Aber beide Methoden sind private deklariert.
Screen.GetMonitors
Kann mich mal einer aufklären, wie ich da ran komme OHNE die VCL zu ändern? Anscheinend sehe ich gerade den Wald vor Bäumen nicht... |
AW: MonitorCount im Betrieb aktualisieren?
Ups, dann hatte ich mich vorhin verguckt. :shock:
OK, dann versuchen wir's einfach mal so
Delphi-Quellcode:
?
Screen.MonitorFromWindow(INVALID_HANDLE_VALUE, mdNull);
|
gelöst: MonitorCount im Betrieb aktualisieren
Zitat:
Im FormShow aufgerufen und danach wieder Mointorkonfiguration auswerten - schon wird das Formular für dem Beamer passgenau angezeigt, auch wenn der Beamer während der laufenden Anwendung an- oder abgestöpselt wird. Viel Dank an Alle... Gruß RaBe |
AW: gelöst: MonitorCount im Betrieb aktualisieren
Eigentlich dachte ich ja, daß auch dieses bei der INI/Settings-Change-Message mit aktualisiert wird.
Statt im OnShow kannste in Application.OnIniChange oder besser über diese TApplication-VCL-Komponente, auf eine Änderung reagieren, auch/vorallem wärend das Programm läuft. |
AW: gelöst: MonitorCount im Betrieb aktualisieren
Zitat:
Wenn dann der dann Beamer angeschlossen wird, kann ruhig mit ESC die "Testpräsentation" beendet und mit F5 neu gestartet werden. Das läuft meist schon intuitiv ab. Somit finde ich, dass es im FormShow bestens aufgehoben ist. Wichtig ist nur, dass die Anwendung nicht beendet werden muss. Da kommt Otto-N nicht sooo schnell drauf ;-) Gruß RaBe |
AW: gelöst: MonitorCount im Betrieb aktualisieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz