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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...