Jump to content

Видимость глобальных переменных в uniMainModule


x11

Recommended Posts

В MainModule есть глобальные переменные, т.е. те переменные, которые идут (описаны) после описания класса TUniMainModule = class(TUniGUIMainModule)
 

Type

TUniMainModule = class(TUniGUIMainModule)
  ...
  private
  ...
  ...
  public
  ...
  ...
end;

function UniMainModule: TUniMainModule;

Var
  UserData: TUserData;

implementation

{$R *.dfm}

В частности речь идет о UserData. Такое впечатление, что UserData находится не в MainModule, а в ServerModule.

Каждый раз, когда пользователь логинится, в эту переменную ( типа Record) записываются текущие данные пользователя (имя, логин, ID) в событии OnBeforLogin в этом же главном модуле приложения.

Я обратил внимание, что когда логинится второй пользователь, то у первого пользователя перезаписываются данные от второго пользователя. А когда логинится третий пользователь, то у двух предыдущих в переменной UserData теперь данные от третьего пользователя.

Изначально я думал, что модуль "unit MainModule;" изолирован в пределах сессии одного пользователя. 

Как быть?

Link to comment
Share on other sites

Теперь вопрос. Если описать глобальную переменную в модуле формы или фрейма вне описания класса, то такая переменная буде глобальная для всех пользователей приложения вне контекста сессии, т.е. как будто эта переменная описана в ServerModule?

Link to comment
Share on other sites

Вот пример. Размер экрана вычисляю так:

function TUniMainModule.GetScreenResolution: string;
begin
  result := UniSession.UniApplication.ScreenWidth.ToString + 'x' + UniSession.UniApplication.ScreenHeight.ToString;
end;

Запустил три клиентские сессии, в том числе и в браузере смартфона. Размеры окна браузера везде разные.

Проблема в том, что у всех экранов одно и то же значение вычисляется.

Что я делаю не так? Как вычислить размер окна браузера на стороне клиента и показать это в мониторе сессии?

Спасибо.

Screenshot_35.jpg

Session List.zip

Link to comment
Share on other sites

  • 2 weeks later...
  • 7 months later...

в мобильной версии есть код

UniMainModule.ScreenResolution  := UniSession.UniApplication.ScreenWidth.ToString + 'x' + UniSession.UniApplication.ScreenHeight.ToString;

Вставлял его в разные места программы, например, в события создания окон входа в программу и в главное окно программы.

Всегда результат "0х0".

Как получить размер окна или размер окна браузера в мобильной версии?

Link to comment
Share on other sites

На смартфоне это событие не работает (не срабатывает):

procedure TfmmMain.UnimFormScreenResize(Sender: TObject; AWidth, AHeight: Integer);
begin
  UniMainModule.ScreenResolution  := AWidth.ToString + 'x' + AHeight.ToString;
end;

 

 

UPD. Использовал событие FormResize

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...