2016-12-17 6 views
0

Попытка получить переменную из родительского окна окна ответа (оба окна наследуются - у меня нет исходного кода). Я могу зацикливаться на всех родительских переменных, объектах, элементах управления и т. Д., Но я не могу читать какие-либо переменные. Этот код предназначен для «ok event». Цените любую помощь.Powerbuilder 12.5 Получить переменную окна родителя

window lw_active, w_parentwindow 
string ls_winname, ls_libname, ls_wintitle 
ClassDefinition cd_windef 


w_parentwindow = this.ParentWindow() 
lw_active = w_parentwindow.GetFirstSheet() 

if isvalid(lw_active) = True then 
     ls_winname = lw_active.classname() 

     cd_windef = FindClassDefinition(ls_winname) 
     ls_libname = cd_windef.LibraryName 
     ls_wintitle = lw_active.title 

     messagebox(ls_winname, ls_libname+'~r~n~r~n'+ls_wintitle, Information!)  

     string s, lineend 
integer li 
VariableDefinition vard 
lineend = "~r~n" 
FOR li = 1 to UpperBound(cd_windef.VariableList) 
    vard = cd_windef.VariableList[li] 
    s = s + vard.Name + lineend 
NEXT 
messagebox('s',s) 

end if 

ответ

1
  1. Наследовать окно, которое вы хотите получить доступ. Я позвоню вашему потомку w_mine и предку w_theirs.
  2. Добавить методы доступа к w_mine. Вы сможете ссылаться на что-либо в w_theirs, которое не является частным.
  3. Объявление переменной типа w_mine.
  4. Назначьте ссылку на окно w_mine. Затем вы можете вызвать методы, которые вы добавили в w_mine.
  5. Не разрушайте w_mine. Просто позвольте ему выйти из сферы действия. В PB нет необходимости устанавливать переменную null или делать что-то особенное. Обратите внимание: если вы закроете окно, ваша ссылка станет недействительной. Я бы не использовал переменную экземпляра для хранения ссылки.
+0

Спасибо, что нашли время Хью. Я довольно начинающий программист, поэтому не все точки мне понятны. Я забыл упомянуть, что мне удалось передать переменную от родительского к дочернему окну через родительский window.tag. Что-то вроде этого:. окна \t lw_parentwindow \t \t \t \t lw_parentwindow = супер :: ParentWindow() getfirstsheet() \t \t \t ll_orderid = Декабрь (lw_parentwindow.tag) – DAMS

+0

я получил вырезать в середине поста, извините. Постоянно: Можете ли вы подробнее рассказать о «Добавить методы предков в w_mine»? Не знаете, как это сделать. Где я могу объявить тип w_mine? В w_mine (дочернее окно)? – DAMS