Размер окна PowerBuilder - PullRequest
       37

Размер окна PowerBuilder

2 голосов
/ 19 сентября 2011

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

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

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

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

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

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

OpenSheet (w_test, w_main_frame, 0, original!)

1 Ответ

0 голосов
/ 09 октября 2011

Ваше окно должно иметь свойство с именем resizable , которое можно установить в 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
...