0
Сетевой клиент на 2 и более монироров
Доброго времени суток.
У нас есть сервер с одним монитором. и клиент с 3-мя мониторами. Проект содержит одну базовую мнемосхему, которая работает в полноэкранном режиме и несколько второстепенных работающих в оконном режиме. Причем второстепенные мнемосхемы настроены открываться в разных местах экрана, чтобы не мешали базовой. На сервере, где один монитор все работает так как надо, т.е. второстепенные мнемосхемы открываются и за пределами экрана(закрываю я их с помощью скрипта)тут все хорошо. Проблемы начинаются когда работает клиент. Он не открывает за пределами рабочего стола(основного монитора) и все второстепенные мнемосхемы открываются на основном мониторе. Приходится их перетаскивать на другие мониторы вручную. Так же не работает скрипт закрытия этих второстепенных мнемосхем.
Как сделать так, чтобы второстепенные мнемосхемы(окна) открывались на втором или третьем мониторе?
У нас есть сервер с одним монитором. и клиент с 3-мя мониторами. Проект содержит одну базовую мнемосхему, которая работает в полноэкранном режиме и несколько второстепенных работающих в оконном режиме. Причем второстепенные мнемосхемы настроены открываться в разных местах экрана, чтобы не мешали базовой. На сервере, где один монитор все работает так как надо, т.е. второстепенные мнемосхемы открываются и за пределами экрана(закрываю я их с помощью скрипта)тут все хорошо. Проблемы начинаются когда работает клиент. Он не открывает за пределами рабочего стола(основного монитора) и все второстепенные мнемосхемы открываются на основном мониторе. Приходится их перетаскивать на другие мониторы вручную. Так же не работает скрипт закрытия этих второстепенных мнемосхем.
Как сделать так, чтобы второстепенные мнемосхемы(окна) открывались на втором или третьем мониторе?
Сервис поддержки клиентов работает на платформе UserEcho
Вариант с несколькими мониторами на клиенте, проверим. На системе с тремя мониторами как настроен рабочий стол? Скрипт не отрабатывает только на клиенте?
Настройки мониторов такие - рабочий стол продлен на другие мониторы. Первый(левый) главный. Они стоят в один ряд. Идея такая - слева список объектов и их состояние, посередине мнемосхема самого объекта, а справа - просто монитор для иных задач. Выяснил еще, что до координаты 700 по X мнемосхема(объекта) немного выходит на второй экран, а после X>700 остается на основном экране.
Да, скрипт не работает только на клиенте, а на сервере - без проблем.
Вот примерно то что делаю.
С уважением, Александр.
Александр, а скрипт запускается по событию? Т.е. по нажатию на какую то кнопку?
Еще тут один момент всплыл, при запуске монитора на клиенте он мне системное время на час назад меняет.(синхронизацию по интернету выключил)
у процедур:
procedure CloseMnemo(AName: string; ASendAll: Boolean);
procedure CloseAllMnemo(ASendAll: Boolean);
есть доп. параметр ASendAll, который отвечает за выполнение команды на всех подключенных клиентских ПК.
При подключении клиента к серверу, он синхронизирует с сервером свое время.
а вот по поводу закрытия мнемосхем, что-то у меня не получается по прежнему. Вот скрипт. я верно там все сделал?
Var LastMnemo : string; // прошлая мнемосхема
NumberMnemo : byte; // количество открытых
Begin
NumberMnemo:=0;
// проверка на количество открытых
if CheckOpenMnemo('ПРОМЕТЕЙ127') then NumberMnemo:=NumberMnemo+1;
if CheckOpenMnemo('ПРОМЕТЕЙ128') then NumberMnemo:=NumberMnemo+1;
if CheckOpenMnemo('ПРОМЕТЕЙ129') then NumberMnemo:=NumberMnemo+1;
if CheckOpenMnemo('ПРОМЕТЕЙ130') then NumberMnemo:=NumberMnemo+1;
if CheckOpenMnemo('ПРОМЕТЕЙ131') then NumberMnemo:=NumberMnemo+1;
if CheckOpenMnemo('ПРОМЕТЕЙ132') then NumberMnemo:=NumberMnemo+1;
if CheckOpenMnemo('ПРОМЕТЕЙ133') then NumberMnemo:=NumberMnemo+1;
// Если открыто менее 2х то она кандидат на закрытие
if NumberMnemo<2 then begin
if CheckOpenMnemo('ПРОМЕТЕЙ127') then LastMnemo:='ПРОМЕТЕЙ127';
if CheckOpenMnemo('ПРОМЕТЕЙ128') then LastMnemo:='ПРОМЕТЕЙ128';
if CheckOpenMnemo('ПРОМЕТЕЙ129') then LastMnemo:='ПРОМЕТЕЙ129';
if CheckOpenMnemo('ПРОМЕТЕЙ130') then LastMnemo:='ПРОМЕТЕЙ130';
if CheckOpenMnemo('ПРОМЕТЕЙ131') then LastMnemo:='ПРОМЕТЕЙ131';
if CheckOpenMnemo('ПРОМЕТЕЙ132') then LastMnemo:='ПРОМЕТЕЙ132';
if CheckOpenMnemo('ПРОМЕТЕЙ133') then LastMnemo:='ПРОМЕТЕЙ133';
end
// А если 2 и более то закрыть кандидата на закрытие
else CloseMnemo(LastMnemo,True);
end.
вот с CheckOpenMnemo дела обстоят сложней. Эта функция работает только на серверной части. Так как определить на каком клиенте какая мнемосхема открыта она не может.