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




Пост 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 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


SergKis
постоянный участник




Пост N: 2207
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.02.19 22:26. Заголовок: PPS опять 504 Gatewa..


PPS
опять 504 Gateway Time-out, но передача прошла.

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




Пост N: 2208
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 06:26. Заголовок: gfilatov2002 Привел..


gfilatov2002
Привел в соответствие свойства классов.
В примере поправил StatusBar https://my-files.ru/n8l6pu

Спасибо: 0 
Профиль
krutoff





Пост N: 193
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 09.02.19 13:03. Заголовок: GetBox WindowType Panel


Давно борюсь с ситуацией, когда у GetBox не работает вызов VALID в окне PANEL.
Вышел на h_getbox.prg строка 528:
IF _IsChildOfActiveWindow( hWnd ) .AND. !readonly .AND. lAllowEdit
Если я закоментирую вызов функции _IsChildOfActiveWindow -> то VALID отрабатывает!
IF /*_IsChildOfActiveWindow( hWnd ) .AND.*/ !readonly .AND. lAllowEdit

Я не совсем понимаю, что эта функция делает, но функция присутствует в h_window.prg и
вызывается только один раз и только для GetBox.

Для показа этой ситуации можно в примере MiniGUI\SAMPLES\BASIC\CONTAINERS\Panel\demo1.prg
в строке 50 вместо TEXTBOX изменить DEFINE TEXTBOX TEXT_1 на:
120,10 GETBOX GET_1 VALUE 'GetBox' VALID {|| MsgYesNo('GetValid: '+Win_2.Get_1.Value)}

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




Пост N: 2210
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 17:27. Заголовок: krutoff пишет Если я..


krutoff пишет
 цитата:
Если я закоментирую вызов функции _IsChildOfActiveWindow


Есть такая блокировка работы GetBox, возможно оправданная.
К примеру имеем не менее 3-х окон MdiChild и ввод в GetBox на одном из окон, после Enter focus улетает на др. окна.
Используйте TEXTBOX с такой конструкцией
 
DEFINE TEXTBOX TEXT_1
ROW 120
COL 10
VALUE 'Test'
ON CHANGE {|| This.Cargo := .T. }
ON LOSTFOCUS {|| Valid1() }
ON ENTER {|| _PushKey(VK_TAB) }
END TEXTBOX
This.TEXT_1.Cargo := .F. // no change
...
STAT FUNC Valid1()

If This.Cargo // change textbox
If 'get' $ This.Value
MsgBox('Error value '+ This.Value, 'ERROR')
This.SetFocus
Else
This.Cargo := .F.
EndIf
EndIf

RETURN Nil


Спасибо: 1 
Профиль
SergKis
постоянный участник




Пост N: 2212
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 17:58. Заголовок: PS c GetBox-сами про..


PS
c GetBox-сами проверку valid надо проделывать на кнопке OK, пробежав по всем и переключая фокус на Getbox с ошибкой

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1430
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.02.19 20:20. Заголовок: SergKis пишет: В пр..


SergKis пишет:

 цитата:
В примере поправил StatusBar


При попытке скачать этот пример получаю

 цитата:
502 Bad Gateway


Можно повторно выложить этот архив

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




Пост N: 2213
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 20:40. Заголовок: gfilatov2002 Тут ht..


gfilatov2002
Тут https://transfiles.ru/bf6j5

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1431
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.02.19 21:12. Заголовок: SergKis пишет: Тут ..


SergKis пишет:

 цитата:
Тут


Спасибо!
С этими изменениями пример у меня отработал нормально, надписи в статусбаре не искажаются

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1432
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.02.19 21:17. Заголовок: SergKis пишет: Мысл..


SergKis пишет:

 цитата:
Мысли вслух. Если вынести oDlu2Pixel(...) и класс TDlu2Pix за скобки


SergKis пишет:

 цитата:
Используется среда контрола в ON INIT


Не уверен, что требуются такие изменения во всех контролах

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




Пост N: 2214
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 21:19. Заголовок: gfilatov2002 Обрати..


gfilatov2002
Обратите внимание на
 
DEFINE GETBOX Text_2c // Alternate Syntax
...
END GETBOX ON INIT {|| :Y += This.Height + :GapsHeight }
// ON INIT {|og,ow,oc| ow:Y += oc:Height + ow:GapsHeight }
// :Y += This.Text_2c.Height + :GapsHeight // !!! это использовать, убрав выше
...

Пробовал "Мысли в слух". Для сборки надо убрать ON INIT, открыв строку приращения координаты

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1433
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.02.19 21:29. Заголовок: SergKis пишет: Для ..


SergKis пишет:

 цитата:
Для сборки надо убрать ON INIT


Благодарю за напоминание
Да, конечно, я это сделал - иначе бы пример не запустился

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




Пост N: 2215
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 22:01. Заголовок: gfilatov2002 пишет Н..


gfilatov2002 пишет
 цитата:
Не уверен, что требуются такие изменения во всех контролах


В своей версии 2.07 сделал контролы, перечисленные выше + в TsBrowse сделал
 
#xcommand DEFINE TBROWSE <name> OBJ <obrw> ;
...
[ ON INIT> <bInit> ] ;
...
[ <.lAutoCol.> ], [ \{<aColSel>\} ], ;
<{bInit}>
);;
with object <obrw>
...
#command END TBRW [ ON INIT> <bInit> ] ;
=>;
_EndTBrowse( <{bInit}> );;
end with
...
Поменял объявление и вызов
Local oc, ow := oDlu2Pixel()
...
Do_ControlEventProcedure ( bInit, k, ow, oc )
...
Для GetBox добавил
[ <GotFocusSelect: GOTFOCUSSELECT> ] ;
...
..., <.GotFocusSelect.>, <{bInit}> )
...
FUNCTION _DefineGetBox ( ControlName, ParentFormName, x, y, w, h, Value, ;
...
If HB_ISCHAR( cPicture ) .and. ! Empty(cPicture) .and. '@K ' $ cPicture
GotFocusSelect := .T.
EndIf

If ! Empty( GotFocusSelect ) .and. Empty( uGotFocus )
If ValType( Value ) == "C"
_HMG_aControlGotFocusProcedure[k] := {|| SendMessage( _HMG_aControlHandles[k], EM_SETSEL, 0, If( Empty(Value), -1, Len(Trim(Value))) ) }
ElseIf ValType( Value ) $ "ND"
_HMG_aControlGotFocusProcedure[k] := {|| SendMessage( _HMG_aControlHandles[k], EM_SETSEL, 0, -1 ) }
EndIf
EndIf

IF _HMG_lOOPEnabled
Eval ( _HMG_bOnControlInit, k, mVar )
ow := _WindowObj ( ParentFormHandle )
oc := _ControlObj( ControlHandle )
ENDIF

Do_ControlEventProcedure ( bInit, k, oGet, ow, oc )

RETURN oGet

Получилось
1.
без SET OOP ON делаем (можем)
WITH OBJECT App.Object
с SET OOP ON делаем
WITH OBJECT ThisWindow.Object
работаем в одинаковых переменных
2.
С использованием ON INIT практически все команды между _Define...(...) уходят в них и работа с This... обезличенно.
Возможна упрощенная автоматизация, убрав лишнее в блоки кода (не надо делать как в demo.ch из примера)
При работе с сообщениями удобнее устанавливать eventы на контролы.
3.
Старый стиль написания остается
Попробовал пока немного на GetBox

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




Пост N: 2216
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 22:06. Заголовок: PS *----------------..


PS
 
*-----------------------------------------------------------------------------*
FUNCTION _EndTBrowse( bInit )
*-----------------------------------------------------------------------------*
LOCAL i, oBrw
LOCAL oc, ow := oDlu2Pixel()

IF _HMG_BeginTBrowseActive
i := AScan ( _HMG_aControlHandles, _HMG_ActiveTBrowseHandle )
IF i > 0
oBrw := _HMG_aControlIds[ i ]

IF _HMG_lOOPEnabled
ow := _WindowObj ( _HMG_aControlParenthandles[ i ] )
oc := _ControlObj( _HMG_aControlHandles [ i ] )
ENDIF

Do_ControlEventProcedure ( bInit, i, oBrw, ow, oc )

oBrw:lRePaint := .T.
oBrw:Display()
_HMG_ActiveTBrowseName := ""
_HMG_ActiveTBrowseHandle := 0
_HMG_BeginTBrowseActive := .F.
ENDIF
ENDIF

RETURN NIL


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




Пост N: 2217
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.19 22:34. Заголовок: В продолжении пример..


В продолжении примера, промежутков между контролами (GapsWidth, GapsHeight), оказалось удобным при Resize окон.
В задаче окно разделено на 2-е части:
- контролы Label, Getbox слева вертикально в плотном заполнении, 2 pixel в Normalize + кнопка Save
- справа Tbrowse 60% окна. При Resize с ним ясно все.
По контролам
- персчитываю новое значение по вертикали GapsHeight, GapsWidth не меняю, т.е. левый X tsb тот же
- меняю Y у контролов
Текст из задачи как есть (кому интересно) Скрытый текст


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




Пост N: 2218
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.02.19 11:26. Заголовок: gfilatov2002 Попроб..


gfilatov2002
Попробовал Tsb с on init ( пример Tsb_addRecord ) Скрытый текст

Был не прав с EndTbrowse сделал так Скрытый текст


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1434
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.02.19 20:55. Заголовок: SergKis пишет: Полу..


SergKis пишет:

 цитата:
Получилось
1.
без SET OOP ON делаем (можем)
WITH OBJECT App.Object
с SET OOP ON делаем
WITH OBJECT ThisWindow.Object
работаем в одинаковых переменных


Это очень интересно.

Можно получить пример 1 для GetBox App_OopGetBox без установки SET OOP ON
и для сравнения пример 3 App_OopGetBox3 с SET OOP ON

SergKis пишет:

 цитата:
2.
С использованием ON INIT практически все команды между _Define...(...) уходят в них и работа с This... обезличенно.
Возможна упрощенная автоматизация, убрав лишнее в блоки кода (не надо делать как в demo.ch из примера)


Очень хорошо

SergKis пишет:

 цитата:
3.
Старый стиль написания остается


Отлично

SergKis пишет:

 цитата:
Попробовал Tsb с on init


Спасибо!
У меня такой пример тоже сработал (см. ниже)
Скрытый текст


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




Пост N: 2221
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.02.19 05:06. Заголовок: gfilatov2002 Пример..


gfilatov2002
Пример для SET OOP ON\OFF https://TransFiles.ru/wyxjd
Если SET OOP ON -> убираем коменты у строк
 
WITH OBJECT App.Object
//------------------------------------------ for SET OOP ON
// WITH OBJECT This.Object
// :O:BColorGet := :AO:BColorGet // (App.Object):O:BColorGet
// :O:FColorGet := :AO:FColorGet // (App.Object):O:FColorGet
// :O:FColor1 := :AO:FColor1 // (App.Object):O:FColor1
// :O:FColor2 := :AO:FColor2 // (App.Object):O:FColor2
//------------------------------------------
ставим коментарий у
WITH OBJECT App.Object
собран пример в режиме SET OOP OFF

Небольшая правка
CLASS TDlu2Pix
... заменить
METHOD Event( Key, p1, p2, p3 ) INLINE iif( HB_ISBLOCK( p1 ), ;
::oEvent:Set( Key, p1 ), ;
( p2 := hb_defaultValue(p2, ::oParam:Get( Key)), ;
::oEvent:Do ( Key, p1, p2, p3 ) ) )
...
CLASS TWndData
...
METHOD GetGaps( aGaps, oWnd ) INLINE ::oApp:GetGaps( aGaps, oWnd )

METHOD W ( nKfc ) INLINE ::oApp:W ( nKfc )
...


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




Пост N: 2223
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.02.19 05:54. Заголовок: gfilatov2002 В App_..


gfilatov2002
В App_OopGetbox2 правка
 
:Event( 1, {|| HMG_Alert("MessageBox Info", , "Information", ICON_INFORMATION) } )

:Event( 2, {|oa,ky,np,cp| ShellExecute( , 'open', App.ExeName, cp, , np ), ;
ReleaseAllWindows() } )

:Event( 3, {|oa,ky,np,xp| _LogFile(.T., oa, ky, np, xp, oa:ClassName) } )


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1435
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 11.02.19 10:35. Заголовок: SergKis пишет: собр..


SergKis пишет:

 цитата:
собран пример в режиме SET OOP OFF


Благодарю за скорую помощь


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




Пост N: 2224
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.02.19 11:31. Заголовок: gfilatov2002 В прим..


gfilatov2002
В пример 3 правка
 
@ :Y, :X GETBOX Text_2b WIDTH :O:nDefLen HEIGHT :H1 ;
...
ON CHANGE (App.Object):Send(This.Cargo, 300) ; //{|| TONE(300)};
...
@ :Y, :X BUTTONEX OButton_4 WIDTH :O:nDefLen HEIGHT :H1 * 2 ;
...
ACTION ( (App.Object):Send(This.Cargo[1], 800), ; // TONE(800)
(App.Object):Post(This.Cargo[2]) ) ;


Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 555
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет