miei Delphi-7 applicazione visualizza:Utilizzando tscreen in Delphi 7
Screen.DesktopWidth
Screen.DesktopHeight
Screen.Monitors[0].Width
Screen.Monitors[0].Height
e, se c'è un secondo monitor selezionato, anche:
Screen.Monitors[1].Width
Screen.Monitors[1].Height
Con l'applicazione in esecuzione sul mio WinXP-Pro PC , Vado su Pannello di controllo/Display/Impostazioni e cambio le impostazioni per il secondo monitor (aggiungilo o rimuovilo).
Quindi faccio clic su un pulsante Aggiorna per visualizzare i nuovi valori dei 4 (o 6) parametri e succede qualcosa di inaspettato: Screen.DesktopWidth e Screen.DesktopHeight mostrano i nuovi valori corretti, ma i valori degli altri 2 (o 4) i parametri sono molto sbagliati.
Come Screen.Monitors [0] .Width = 5586935, mentre dovrebbe essere 1680.
Esistono alcune regole speciali per l'utilizzo di TScreen in Delphi 7?
Non riesco a simularlo dato che ho un monitor e Delphi 2009 ma suppongo che il problema potrebbe essere con l'aggiornamento dell'elenco dei monitor (in Delphi 2009 questo viene eseguito tramite la procedura privata 'Screen.GetMonitors'). Immagino che ottieni i valori corretti quando riavvii la tua applicazione, vero? E se ricordo bene, forse Sertac ha scritto da qualche parte che è sicuro distruggere l'istanza di 'Screen' e crearla di nuovo. E se è così, allora il seguente dovrebbe aggiornare questi dati 'Screen.Free; Screen: = TScreen.Create (nil); ', ma davvero non so quanto sia sicura questa azione. – TLama
Stai prendendo un riferimento all'istanza di TMonitor Screen.Monitors [0] o ricevi Screen.Monitors [0] ogni volta? –
@TLama "Immagino di avere i valori corretti quando riavvii l'applicazione, vero?" Giusto . E ottengo anche i valori corretti quando c'è una dichiarazione ShowMessage solo ** prima ** le istruzioni che mostrano i 4 (o 6) parametri. – AthenaAtDelphi