Moravské přístroje, a. s., zdroj: https://www.mii.cz/art?id=1023&lang=405, vytištěno: 30.04.2025 11:05:26
Hlavní stránka▹Podpora▹Články | 19.11.2019 |
---|
Článek popisuje funkce zabudované v systému Control Web pro práci s vícemonitorovými systémy. |
Všechny verze systému Control Web mohou pracovat na vícemonitorových systémech. Každý viditelný přístroj má totiž OCL procedury MoveTo a NewRect, pomocí kterých může být jednoduše přesunut na libovolné souřadnice a případně mu změnit i rozměry. Ve vícemonitorových systémech má každý monitor, v závislosti na svém umístění, určeny své souřadnice a pokud tedy přemístíme přístroj na souřadnice odpovídající konkrétnímu monitoru, bude přístroj i na tomto monitoru zobrazen. Ve vícemonitorových systémech je vždy jeden monitor hlavní. Ostatní monitory mohou být umístěny napravo, nalevo, nad nebo pod hlavním monitorem. Levý horní roh hlavního monitoru má souřadnice 0, 0. Šířka a výška je určena nastaveným rozlišením, tedy např. 1920 x 1080. Počáteční souřadnice ostatních monitorů závisí na jejich poloze od hlavního monitoru. Monitory pozicované vlevo a nad hlavním monitorem, mají odpovídající počáteční souřadnice záporné a jejich hodnota je určena rozdílem počáteční souřadnice vedlejšího monitoru a nastaveným rozlišením monitorů. Monitory nacházející se napravo a dole, mají počáteční souřadnice určené součtem souřadnice levého horního rohu sousedního monitoru a jeho rozlišení - viz následující obrázek. Příklad uspořádání monitorů s hlavním monitorem uprostřed (všechny s rozlišením 1920x1080) Jak je zřejmé, lze velmi jednoduše pomocí OCL procedury virtuálního přístroje MoveTo umístit přístroj na konkrétní souřadnici a tedy i zobrazit jej na konkrétním monitoru. OCL procedury přístroje system pro práci s vícemonitorovými systémySystém Control Web 8 nabízí v rámci zabudovaného přístroje system několik nativních OCL procedur poskytujících informace o vícemonitorovém systému a souřadnicích jednotlivých monitorů.
Příklad použitíNásledující kód demonstruje, jak lze přesunout přístroj na relativní souřadnici zvoleného monitoru. procedure MoveToMonitorXY( Monitor : cardinal; x, y : integer; PInstrument : instrument ); var mx, my, mw, md : integer; ix, iy, iw, id : integer; begin if system.GetMonitorWorkRect( Monitor, mx, my, mw, md ) then x = mx + x; y = my + y; // Případná uprava souřadnic přístroje tak, aby byl celý zobrazen na zvoleném monitoru PInstrument->GetRect( false, ix, iy, iw, id ); if (x + iw) > (mx + mw) then x = mx + mw - iw; end; if (y + id) > (my + md) then y = my + md - id; end; // Pokud by byly souřadnice x, y po předchozí úpravě před levým horním rohem, umístí se přístroj do levého horního rohu monitoru if x < mx then x = mx; end; if y < my then y = my; end; // Přesun přístroj na vypočtené souřadnice PInstrument->MoveTo( x, y ); end; end_procedure; Příklad použití demonstruje i příklad v Examples\Tips\Multiple monitors.cw. |