On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
модератор




Пост N: 699
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)


Начало темы находится здесь, а теперь

АНОНС * АНОНС * АНОНС * АНОНС * АНОНС

Готовится к опубликованию новая сборка №48, которая выйдет в конце недели.
Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне

Кратко, что нового:

- исправление обнаруженных ошибок и неточностей кода;
- новый класс HEADERIMAGE для Grid и Browse;
- свойство Address в Hyperlink может теперь открывать папку или файл на диске;
- добавлен NOTABSTOP класс для Browse;
- поддержка пользовательских компонентов (заимствована из оффициального релиза);
- расширения и исправления в библиотеках TsBrowse и PropGrid;
- обновлены сборки Харбор и HMGS-IDE;
- новые и обновленные старые примеры (как обычно ).




--
Улыбайся - завтра будет хуже!
Спасибо: 5 
ПрофильЦитата Ответить
Ответов - 32 , стр: 1 2 All [только новые]





Пост N: 2548
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.05.19 13:14. Заголовок: Andrey пишет Попроб..


Andrey пишет [quote]`
Попробуй убрать
 
FUNCTION GetProperty ( Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 )
... line 8584
/* IF .NOT. _IsControlDefined ( Arg2 , Arg1 )
MsgMiniGuiError ( "Control: " + Arg2 + " Of " + Arg1 + " Not defined." )
ENDIF */

и пересобери MiniGui.lib

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6283
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.05.19 14:03. Заголовок: SergKis пишет: FUNC..


SergKis пишет:

 цитата:
FUNCTION GetProperty ( Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 )
... line 8584
/* IF .NOT. _IsControlDefined ( Arg2 , Arg1 )
MsgMiniGuiError ( "Control: " + Arg2 + " Of " + Arg1 + " Not defined." )
ENDIF */


В исходнике C:\MiniGUI\SOURCE\h_controlmisc.prg строк всего 7183 ...
Где искать ?
Нашёл в строке 3814 - то ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6284
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.05.19 14:33. Заголовок: Нашел в коде h_contr..


Нашел в коде h_controlmisc.prg, где у меня ошибка возникает:
#endif 
IF ( Upper( Arg2 ) == "VSCROLLBAR" .OR. Upper( Arg2 ) == "HSCROLLBAR" )
IF .NOT. _IsWindowDefined ( Arg1 )
MsgMiniGuiError ( "Window: " + Arg1 + " is not defined." )
ENDIF
ELSE
IF .NOT. _IsControlDefined ( Arg2 , Arg1 )
MsgMiniGuiError ( "Control: " + Arg2 + " Of " + Arg1 + " Not defined. 4585 !!!" )
ENDIF
ENDIF

За комментировал этот блок:
/* IF .NOT. _IsControlDefined ( Arg2 , Arg1 ) 
MsgMiniGuiError ( "Control: " + Arg2 + " Of " + Arg1 + " Not defined. 4585 !!!" )
ENDIF */

Теперь другая ошибка лезет:
Error MGERROR/0 Control Of Form_Table_Dog Not defined. Program terminated.
Called from MSGMINIGUIERROR(99) in module: h_error.prg
Called from GETPROPERTY(4410) in module: h_controlmisc.prg
Called from (b)BUTTON_UPMENUTABLE(2273) in module: Tbrw_table.prg
Called from (b)METRO3BUTTON(51) in module: Metro3button.prg
Called from _DOCONTROLEVENTPROCEDURE(1865) in module: h_windows.prg
Called from EVENTS(1828) in module: h_events.prg
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1499) in module: h_windows.prg
Called from DOMETHOD(5156) in module: h_controlmisc.prg
Called from FORM_MYTABLE(246) in module: Tbrw_table.prg
Called from TBRWDOGOVOR(15) in module: Tbrw_1Run.prg
Called from (b)MAIN(643) in module: 10main.prg
Called from _DOCONTROLEVENTPROCEDURE(1865) in module: h_windows.prg
Called from EVENTS(1828) in module: h_events.prg
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1499) in module: h_windows.prg
Called from MAIN(688) in module: 10main.prg

Т.е. теперь потерялась форма Form_Table_Dog ?
Но она же есть на экране !

Вот функция (b)BUTTON_UPMENUTABLE():
      aObj2But[12,12] := { || SetProperty(cForm, This.Name, "Enabled", .F.) ,; 
DogListAbon(cForm, "nTable","","","") ,;
MsgDebug( "Проверка выхода", cForm ) ,;
MsgDebug( ThisWindow.Name, This.Name ) ,;
SetProperty(cForm, This.Name, "Enabled", .T.) ,;
Brw4Focus(nTable) } // строка 2273

Т.е. это вызов на кнопке - ACTION aObj2But[12,12]
Другие формы печати работают без ошибок, а где есть с GETBOX - то вылетает.
Такое впечатление, что после GETBOX портится - MsgDebug( ThisWindow.Name, This.Name ) ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2549
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.05.19 16:22. Заголовок: Andrey Попробуй в O..


Andrey
Попробуй в ON RELEASE формы с GetBox поставить самым последним вызов _PopEventInfo()
для восстановления среды This, т.к. по сообщению об ошибке видно, что нет имени контрола

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2550
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.05.19 16:35. Заголовок: PS Дело в том, что п..


PS
Дело в том, что при создании новой формы\окна информация о предыдущей форме\окне среды This теряется, что и происходит, т.е. нет гарантии, что она будет соответствовать. При Release окна среда This, которая была не восстанавливается, т.к. окна могут закрываться не в том порядке, как открывались.
Выход
1. Сохранять\восстанавливать среду This самому
2. Работать без This с конкретным именем окна (основное правило hmg)
3. Раскладывать последовательность действий на события и выполнять события по сообщениям. Для каждого события будет создана среда This окна или контрола, в зависимости как укажешь в сообщении. Пример у тебя есть

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6285
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.05.19 18:24. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Попробуй в ON RELEASE формы с GetBox поставить самым последним вызов _PopEventInfo()
для восстановления среды This, т.к. по сообщению об ошибке видно, что нет имени контрола


Да, это помогло, только если работаешь только в программе !
Если окно Far или Мозилу переключаешь, то вылет с другой ошибкой:
Error BASE/1081 Неверный аргумент: +
Called from GETPROPERTY(4410) in module: h_controlmisc.prg
Called from (b)BUTTON_UPMENUTABLE(2273) in module: Tbrw_table.prg


Остановился на варианте 2 !
 
aObj2But[12,12] := { || SetProperty(cForm, This.Name, "Enabled", .F.) ,;
DogListAbon(cForm, "nTable","","","") ,;
SetProperty(cForm, "oBut_SpAbon", "Enabled", .T.) ,;
Brw4Focus(nTable) }

Вылет прекратился... Переделал везде где нашёл.
СПАСИБО ОГРОМНОЕ !
Не забыть бы это для других случаев...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2551
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.05.19 01:50. Заголовок: Andrey пишет Не забы..


Andrey пишет
 цитата:
Не забыть бы это для других случаев...


Первый вариант получше будет
 
aObj2But[12,12] := { |cw,cn| cw := ThisWindow.Name, cn := This.Name, ;
SetProperty(cw, cn, "Enabled", .F.) , ;
DogListAbon(cw, "nTable","","","") , ;
SetProperty(cw, cn, "Enabled", .T.) , ;
Brw4Focus(nTable) }


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2552
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.05.19 10:11. Заголовок: Andrey пишет Останов..


Andrey пишет
 цитата:
Остановился на варианте 2 !


Если использовать функцию
 
*-----------------------------------------------------------------------------*
FUNCTION _ThisInfo( aThis )
*-----------------------------------------------------------------------------*

IF HB_ISARRAY( aThis )

_HMG_ThisFormIndex := aThis [1]
_HMG_ThisEventType := aThis [2]
_HMG_ThisType := aThis [3]
_HMG_ThisIndex := aThis [4]
_HMG_ThisFormName := aThis [5]
_HMG_ThisControlName := aThis [6]

RETURN NIL

ENDIF

RETURN { _HMG_ThisFormIndex, _HMG_ThisEventType, _HMG_ThisType, _HMG_ThisIndex, _HMG_ThisFormName, _HMG_ThisControlName }

то твой блок будет выглядеть так

aObj2But[12,12] := { |at| at := _ThisInfo(), ;
This.Name.Enabled := .F., ;
DogListAbon(cw, "nTable","","",""), ;
_ThisInfo(at), ;
This.Name.Enabled := .T., ;
Brw4Focus(nTable) }



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2553
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.05.19 10:16. Заголовок: PS Упс. Магнитная бу..


PS
Упс. Магнитная буря.
 
aObj2But[12,12] := { |at| at := _ThisInfo(), ;
This.Enabled := .F., ;

DogListAbon(cw, "nTable","","",""), ;
_ThisInfo(at), ;
This.Enabled := .T., ;

Brw4Focus(nTable) }


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6286
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.05.19 11:10. Заголовок: SergKis пишет: Перв..


SergKis пишет:

 цитата:
Первый вариант получше будет
aObj2But[12,12] := { |cw,cn| cw := ThisWindow.Name, cn := This.Name, ;
SetProperty(cw, cn, "Enabled", .F.) , ;
DogListAbon(cw, "nTable","","","") , ;
SetProperty(cw, cn, "Enabled", .T.) , ;
Brw4Focus(nTable) }


Да, это написание более понятней !
Все названия сохранены через переменные и при обнулении This уже путаницы не будет.
Спасибо !

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2554
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.05.19 11:55. Заголовок: Andrey пишет Да, это..


Andrey пишет
 цитата:
Да, это написание более понятней !


Если исходить из правила hmg в блоке кода контрола ACTION, ON CHANGE и т.д., должна быть установлена и сохраняться среда переменных _THIS_..., то вариант с функцией более правильный, т.е.
 
aObj2But[12,12] := { |at| at := _ThisInfo(), This.Enabled := .F., ;
DogListAbon(ThisWindow.Name, "nTable","","",""), ;
_ThisInfo(at), This.Enabled := .T., ;
Brw4Focus(nTable) }


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2555
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.05.19 12:10. Заголовок: PS И лучше использов..


PS
И лучше использовать ф-ю внутри своей DogListAbon(...)
LOCAL aThis := _ThisInfo()
...
ACTIVATE WINDOW ...

_ThisInfo(aThis)

RETURN

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 32 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 65
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет