Alles hiljuti puutusin kokku probleemiga, kus inimesed muutsid kuvarite arvu (!) ja resulutsioone. Peale, mida programmid läksid suht lolliks, salvestasid viimased ekraani koordinaadid, mistõttu jäid nad kadunuks.
Kindlasti soovitan kasutada messaget:
procedure WMDISPLAYCHANGE(var Message: TWMDISPLAYCHANGE); message WM_DISPLAYCHANGE;
kus sees ka kontrollida
screen.MonitorCount või parem variant screen.MonitorFromWindow(self.handle,mdNull);
täiendavalt võib kontrollida ekraani koordinaate apiga (väga asjalik API)
SystemparametersInfo( SPI_GETWORKAREA,.....
----
Kindlasti, kui programmil on aeg tähtis faktor, võiks ta jälgida ka sõnumit:
procedure WMTIMECHANGE(var Msg: TWMTimeChange); message WM_TIMECHANGE;
procedure WMSettingChange(var Message: TWMSettingChange); message WM_SETTINGCHANGE;
Kommentaare ei ole:
Postita kommentaar