Размер окна PowerBuilder

У меня возникла проблема с макетом окна после преобразования приложения в веб-форму. Окно содержит окно данных. Когда я открываю окно в Internet Explorer, сначала макет в порядке, но как только я нажимаю на любой элемент управления, макет ломается.

Он ломается, потому что браузер открывается в полном размере и пытается изменить размер объектов в окне до большего размера. Поэтому я думаю, что проблема может быть решена, если ширина и высота ширины останутся фиксированными.

Я открываю окно, используя:

Message.StringParm = "w_test"
of_SendMessage("pfc_open")

Могу ли я заставить приложение сохранять фиксированную ширину и высоту окна w_test?

Я также пробовал следовать, но это не работает (т.е. ломает макет).

OpenSheet (w_test, w_main_frame, 0, original!)

person asam    schedule 19.09.2011    source источник


Ответы (1)


Ваше окно должно иметь свойство под названием изменяемый размер, которое можно установить в Window Painter (флажок) или с помощью кода, как показано ниже. Вам также может понадобиться отключить меню управления и кнопки окна свернуть или развернуть.

НО... вы, скорее всего, смотрели на них, и вам не повезло с их изменением. Я столкнулся с той же проблемой (функцией) с использованием веб-форм и не нашел обходного пути или решения. Пробовал использовать все типы окон, динамически изменяя размер, но IE всегда открывается в максимальном размере.

Если вы не исчерпали настройку ширины и высоты динамически, вы можете сделать что-то вроде:

// Set window size and make it fixed
this.Width = 800
this.Height = 600

// Disallow Resize
this.Resizable = false

// Turn Off Minimize, Maximize & Control Menu
this.ControlMenu = false
this.Maxbox = false
this.Minbox = false

Если вы не можете получить окно фиксированного размера и нужно прибегнуть к чему-то уродливому, вы можете попробовать некоторые варианты этого... в событии изменения размера окна. Не рекомендуется, окно, вероятно, будет мерцать даже при использовании перерисовки. Переменная экземпляра предотвращает рекурсивный запуск кода и его завершение с ошибкой стека.

// force the window to be a size
if not ib_forcing_resize then
   if newwidth <> 800 or newheight <> 600 then
        ib_forcing_resize = true
        this.setredraw(false)
        this.width = 800
        this.height = 600
        this.setredraw(true)
        ib_forcing_resize = false
   end if
end if
person Rich Bianco    schedule 09.10.2011