AGB  ·  Datenschutz  ·  Impressum  







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

MonitorCount im Betrieb aktualisieren?

Ein Thema von Rabe · begonnen am 3. Mär 2011 · letzter Beitrag vom 8. Mär 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#11

AW: MonitorCount im Betrieb aktualisieren?

  Alt 3. Mär 2011, 15:59
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.
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#12

AW: MonitorCount im Betrieb aktualisieren?

  Alt 3. Mär 2011, 16:00
Nochmal mein Edit oben lesen! Oder einfach das von shmia lesen. Mein VCL-Source ist nur etwas neuer als der von shmia
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Rabe

Registriert seit: 20. Apr 2010
12 Beiträge
 
#13

AW: MonitorCount im Betrieb aktualisieren?

  Alt 4. Mär 2011, 16:24
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:
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;
Ich würde das für eine Art "Refresh" halten. Aber - die Methode ist private.

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.

Geändert von Rabe ( 4. Mär 2011 um 16:57 Uhr) Grund: 2. Seite Posts nicht gesehen...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: MonitorCount im Betrieb aktualisieren?

  Alt 4. Mär 2011, 16:59
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.



Screen.FindMonitor(0); führt einen Refresh durch ... man mag es kaum glauben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Rabe

Registriert seit: 20. Apr 2010
12 Beiträge
 
#15

AW: MonitorCount im Betrieb aktualisieren?

  Alt 4. Mär 2011, 17:25
Die VCL Resourcen ändert man halt nicht.
und man geht auch nicht bei rot über die Ampel

Screen.FindMonitor(0); führt einen Refresh durch ... man mag es kaum glauben.
ruft ja auch Screen.GetMonitors auf. Aber beide Methoden sind private deklariert.

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...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: MonitorCount im Betrieb aktualisieren?

  Alt 4. Mär 2011, 18:04
Ups, dann hatte ich mich vorhin verguckt.

OK, dann versuchen wir's einfach mal so Screen.MonitorFromWindow(INVALID_HANDLE_VALUE, mdNull); ?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Rabe

Registriert seit: 20. Apr 2010
12 Beiträge
 
#17

gelöst: MonitorCount im Betrieb aktualisieren

  Alt 4. Mär 2011, 18:45
OK, dann versuchen wir's einfach mal so Screen.MonitorFromWindow(INVALID_HANDLE_VALUE, mdNull);
Ausgezeichnet - könnte besser nicht sein!

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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: gelöst: MonitorCount im Betrieb aktualisieren

  Alt 4. Mär 2011, 18:53
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Rabe

Registriert seit: 20. Apr 2010
12 Beiträge
 
#19

AW: gelöst: MonitorCount im Betrieb aktualisieren

  Alt 4. Mär 2011, 19:01
besser über diese TApplication-VCL-Komponente, auf eine Änderung reagieren, auch/vorallem wärend das Programm läuft.
Die Anwendung wird wie PowerPoint eingesetzt. F5 = Präsentation starten, ESC = beenden. Ich gehe einfach davon aus, dass während einer laufenden Präsentation nicht am Beamer rumgefummelt wird. Die Situation ist eher die, dass beim Aufbau schon mal die Anwendung gestartet wird und mit F5 dann festgestellt wird, dass der Beamer nicht läuft (weil nicht angeschlossen).

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
  Mit Zitat antworten Zitat
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#20

AW: gelöst: MonitorCount im Betrieb aktualisieren

  Alt 8. Mär 2011, 08:09
Ich gehe einfach davon aus, dass während einer laufenden Präsentation nicht am Beamer rumgefummelt wird.
Unterschätze niemals Anwender. Die bringen Dinge fertig, auf die kommt man teilweise gar nicht
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  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 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