powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / MDI c ресайзом окон
13 сообщений из 13, страница 1 из 1
MDI c ресайзом окон
    #37708023
Двоичник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добрый день всезанующий алл
я не гуру в РВ, но пишу на нем некоторый код.
под рукой имею РВ 9.0
если нужно еще на что-то посматреть, скажите на что и где это увидеть, я отвечу.

имею следующую проблему:
у меня MDI приложение. в нем я открываю окно, максимизирую его по всей области MDI, но при вызове дочерней формы из нее, на событие добавление или правки - мое родительское окно возвращается в размерах, как до максимизирования. в чем может дело? как это можно лечить? чтобы родительские окна оставались заполненными в MDI приложении, либо сохраняли размер приданный им пользователем, будь то просто ресайзбл ???

огромное спасибо!
...
Рейтинг: 0 / 0
MDI c ресайзом окон
    #37708104
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каким образом (методом) вызывается дочерняя форма?
...
Рейтинг: 0 / 0
MDI c ресайзом окон
    #37708695
Двоичник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я даже не знаю как ответить на этот вопрос
на конструкторе у dw
this.inv_parmlinkage.of_setdetailwindow("w_card","s")


кнопка от u_cb_add


u_cb_add имет событие clicked

integer li_returnresult
if isValid(idw_parent) then
idw_parent.Post Event pfc_addrow()
else
of_parentinvalid()
end if

не очень силет в наследованиях в РВ. но нужно разобраться.
...
Рейтинг: 0 / 0
MDI c ресайзом окон
    #37709029
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, это PFC.
Рекомендую отладчиком найти что то типа open(<имя_вашего_окна>) или opensheet(<имя_вашего_окна>) и рассказать нам.
От метода вызова (открытия) зависит поведение.
...
Рейтинг: 0 / 0
MDI c ресайзом окон
    #37711286
Andrew Nagorny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Окно скорее всего открывается в режиме Нормал. Поэтому Максимайз снимается. Нужно перед открытием окна определять в каком режиме родительское окно. И после открытия дочернего восстанавливать режим.
...
Рейтинг: 0 / 0
MDI c ресайзом окон
    #37711497
Двоичник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
w_sheet lw_sheet
w_master lw_master
IF this.is_detailwindowtype = "s" THEN
window lw_immediate_parent
window lw_mdi_frame
this.idw_requestor.of_GetParentWindow( lw_immediate_parent )
lw_mdi_frame = lw_immediate_parent.ParentWindow()
OpenSheetWithParm (lw_sheet, this, this.is_detailwindowname, lw_mdi_frame, 0, original!)
ELSEIF this.is_detailwindowtype = "w" THEN
this.of_refreshdwparms()
OpenWithParm (lw_master, this, this.is_detailwindowname)
END IF
RETURN 1

вышел вот на это
что-то еще конкретное посмотреть?
...
Рейтинг: 0 / 0
MDI c ресайзом окон
    #37713143
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот оно: original!
Andrew Nagorny выше описал как обойти. Просто он original! назвал Нормал, что в принципе, ничего не меняет.
...
Рейтинг: 0 / 0
MDI c ресайзом окон
    #37713753
Двоичник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
windowstate aws_windowstate
w_sheet lw_sheet
w_master lw_master
IF this.is_detailwindowtype = "s" THEN
window lw_immediate_parent
window lw_mdi_frame
this.idw_requestor.of_GetParentWindow( lw_immediate_parent )
lw_mdi_frame = lw_immediate_parent.ParentWindow()

aws_windowstate = lw_immediate_parent.ParentWindow().WindowState

OpenSheetWithParm (lw_sheet, this, this.is_detailwindowname, lw_mdi_frame, 0, Original!)

lw_immediate_parent.ParentWindow().WindowState = aws_windowstate

ELSEIF this.is_detailwindowtype = "w" THEN
this.of_refreshdwparms()
OpenWithParm (lw_master, this, this.is_detailwindowname)
END IF
RETURN 1

в момент исполнения aws_windowstate = Maximized!
однако родительскому фрейму состояние не присваевается. т.е. оно не расширяется.
что я не так делаю?
...
Рейтинг: 0 / 0
MDI c ресайзом окон
    #37714054
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте pfc_open
Код: sql
1.
2.
Message.StringParm = "w_card"
of_SendMessage("pfc_Open")
...
Рейтинг: 0 / 0
MDI c ресайзом окон
    #37714981
Andrew Nagorny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Восстанавливать нужно состояние не парент окна, а приводить состояние открытого окна к бывшему состоянию парент окна.

OpenSheetWithParm (lw_sheet, this, this.is_detailwindowname, lw_mdi_frame, 0, Original!)
переделать>>>>>
OpenSheetWithParm (lw_sheet, lstr_params , this.is_detailwindowname, lw_mdi_frame, 0, Original!)

где lstr_params = структура с 2-мя полями (создайте отдельно)
1) содержит this
2) содержит aws_windowstate

В pfc_postopen нового открытого окна напишите скрипт

lstr_params = Message.PowerObjectParm

this.WindowState = lstr_params.ws_windowstate
....

если не сработает, то выражение this.WindowState = lstr_params.ws_windowstate выведите в функцию окна и вызывайте ее через POST в pfc_postopen.
...
Рейтинг: 0 / 0
MDI c ресайзом окон
    #37716742
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы наверное из Альфы?
...
Рейтинг: 0 / 0
MDI c ресайзом окон
    #37717296
Andrew Nagorny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если Вы меня спрашиваете - то нет.)
...
Рейтинг: 0 / 0
MDI c ресайзом окон
    #37718632
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, я у топикстартера интересуюсь, больно уж куски кода знакомые, у нас вряд ли, значит в Альфе:)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / MDI c ресайзом окон
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]